STM32_5(中断)
中断系统
- 中断:在主程序运行过程中,出现了特定的中断触发条件(中断源),使得CPU暂停当前正在运行的程序,转而去处理中断程序,处理完成后又返回原来被暂停的位置继续运行
- 中断优先级:当有多个中断源同时申请中断时,CPU会根据中断源的轻重缓急进行裁决,优先响应更加紧急的中断源
- 中断嵌套:当一个中断程序正在运行时,又有新的更高优先级的中断源申请中断,CPU再次暂停当前中断程序,转而去处理新的中断程序,处理完成后依次进行返回
中断执行流程



NVIC基本结构

CPU相当于一个医生,NVIC相当于叫号系统,EXTI、TIM、ADC、USART相当于病人,看这里面谁的更紧急谁就优先级越小。
NVIC优先级分组

响应优先级:上个病人在看病,这个病人看病完了之后,紧急的病人即使后来的,也会最先进去看病,插队的优先级。
抢占优先级:如果这个病人更加紧急,并且此时已经有人在看病,那么就会把看病的人放在一边,先让更紧急的病人看病,看完之后再看放在一边的病人。
EXTI简介
- EXTI(Extern Interrupt)外部中断
- EXTI可以监测指定GPIO口的电平信号,当其指定的GPIO口产生电平变化时,EXTI将立即向NVIC发出中断申请,经过NVIC裁决后即可中断CPU主程序,使CPU执行EXTI对应的中断程序
- 支持的触发方式:上升沿/下降沿/双边沿/软件触发
- 支持的GPIO口:所有GPIO口,但相同的Pin不能同时触发中断
- 通道数:16个GPIO_Pin,外加PVD输出、RTC闹钟、USB唤醒、以太网唤醒
- 触发响应方式:中断响应/事件响应
EXTI基本结构

AFIO复用IO口
- AFIO主要用于引脚复用功能的选择和重定义
- 在STM32中,AFIO主要完成两个任务:复用功能引脚重映射、中断引脚选择

EXTI框图

旋转编码器介绍
- 旋转编码器:用来测量位置、速度或旋转方向的装置,当其旋转轴旋转时,其输出端可以输出与旋转速度和方向对应的方波信号,读取方波信号的频率和相位信息即可得知旋转轴的速度和方向
- 类型:机械触点式/霍尔传感器式/光栅式
建议
尽量别在中断函数里调用复杂函数,可以执行一个标志位,在主函数或其他函数里执行其他代码。
代码部分
配置流程
1、开启时钟;
2、开启AFIO时钟;
3、GPIO配置;
4、选择用作EXTI线路的GPIO引脚;
5、EXTI配置;
6、配置NVIC优先级分组;
7、NVIC配置;
8、找到EXTI函数并在里面写用户代码(在startup_stm32f10x_md.s中)。
中断配置
1 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); // 1.开启GPIOB时钟2 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); // 2.开启AFIO时钟3 4 GPIO_InitTypeDef GPIO_InitStructure; // 3.GPIO配置5 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;6 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14;7 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;8 GPIO_Init(GPIOB, &GPIO_InitStructure);9 10 GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource14); // 4.选择用作EXTI线路的GPIO引脚 11 12 EXTI_InitTypeDef EXTI_InitStructure; // 5.EXTI配置 13 EXTI_InitStructure.EXTI_Line = EXTI_Line14; 14 EXTI_InitStructure.EXTI_LineCmd = ENABLE; 15 EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; 16 EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; 17 EXTI_Init(&EXTI_InitStructure); 18 19 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); // 6.配置NVIC优先级分组 20 21 NVIC_InitTypeDef NVIC_InitSturcture; // 7.NVIC配置 22 NVIC_InitSturcture.NVIC_IRQChannel = EXTI15_10_IRQn; 23 NVIC_InitSturcture.NVIC_IRQChannelCmd = ENABLE; 24 NVIC_InitSturcture.NVIC_IRQChannelPreemptionPriority = 1; 25 NVIC_InitSturcture.NVIC_IRQChannelSubPriority = 1; 26 NVIC_Init(&NVIC_InitSturcture);
1 void EXTI15_10_IRQHandler(void) // 8.找到EXTI函数并在里面写用户代码(函数在Startup_stm32f10x_md.s)2 {3 if (EXTI_GetITStatus(EXTI_Line14) == SET)4 { 5 if (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_14) == 0)6 {7 CountSensor_Count++;8 } 9 EXTI_ClearITPendingBit(EXTI_Line14);
10 }
11 }
相关文章:
STM32_5(中断)
中断系统 中断:在主程序运行过程中,出现了特定的中断触发条件(中断源),使得CPU暂停当前正在运行的程序,转而去处理中断程序,处理完成后又返回原来被暂停的位置继续运行中断优先级:当…...
docker 部署hbase 并且java Api连接
首先先运行容器 docker run -d --name hbase -p 2181:2181 -p 16010:16010 -p16000:16000 -p 16020:16020 -p 16030:16030 harisekhon/hbase2.在本机的hosts中注册docker的id 因为docker内部集成了其他环境而其他环境 中的ip是docker id 所以需要在hosts中转换 192.168.80.120…...
EasyExcel listener无法通过Autowired注入xxMapper
easyexcel listener无法通过Autowired注入xxMapper 文章目录 easyexcel listener无法通过Autowired注入xxMapperbug记录:解决方案:easyexcel 使用例子controllerServiceImpllistener bug记录: productMapper注入一直为null,而procureDetailM…...
Android Spannable 使用注意事项
1、当前示例中间的 "评论",使用SpannableStringBuilder实现,点击评论会有高亮效果加粗,但再点击其它Bar时无法恢复默认样式。 2、因为SpannableString或SpannableStringBuilder中的效果是叠加的,恢复默认样式需要先移除…...
Apache访问控制
服务器相关的访问控制 Options指令 Options指令是Apache服务器配置文件中的一个重要指令,它可以用于控制特定目录启用哪些服务器特性。Options指令可以在Apache服务器的核心配置、虚拟主机配置、特定目录配置以及.htaccess文件中使用。 以下是一些常用的服务器特性选项: N…...
二、类与对象(二)
8 this指针 8.1 this指针的引入 我们先来定义一个日期的类Date: #include <iostream> using namespace std; class Date { public:void Init(int year, int month, int day){_year year;_month month;_day day;}void Print(){cout << _year <&l…...
Pytorch从零开始实战10
Pytorch从零开始实战——ResNet-50算法实战 本系列来源于365天深度学习训练营 原作者K同学 文章目录 Pytorch从零开始实战——ResNet-50算法实战环境准备数据集模型选择开始训练可视化模型预测总结 环境准备 本文基于Jupyter notebook,使用Python3.8,…...
设计模式-单例模式实战
目录 一、引言二、适用场景三、代码实战饿汉式单例模式懒汉式单例模式双重检查锁定单例模式静态内部类单例模式 四、实际应用举例Runtime解析 五、结论 一、引言 单例模式是一种创建型设计模式,用于确保一个类只有一个实例,且提供全局访问点以访问该实例…...
requests库出现AttributeError问题的修复与替代方法
在使用App Engine时,开发者们通常会面临需要发送爬虫ip请求的情况,而Python中的requests库是一个常用的工具,用于处理爬虫ip请求。然而,在某些情况下,开发者可能会遇到一个名为AttributeError的问题,特别是…...
opencv-2D直方图
cv2.calcHist() 是 OpenCV 中用于计算直方图的函数。它可以计算一维或多维直方图,用于分析图像中像素值的分布。 基本的语法如下: hist cv2.calcHist(images, channels, mask, histSize, ranges[, hist[, accumulate]])参数说明: images:…...
读像火箭科学家一样思考笔记06_初学者之心
1. 专业化是目前流行的趋势 1.1. 通才(generalist)是指博而不精之人 1.2. 懂得的手艺越多,反而会家徒四壁 1.2.1. 希腊谚语 1.3. 这种态度代价很大,它阻断了不同学科思想的交融 2. 组合游戏 2.1. 某个行业的变革可能始于另一…...
中职组网络安全 Server-Hun-1.img Server-Hun-2.img
一串密码 smbuser用户和密码登录ssh还是失败提示需要密钥,尝试ftp登录成功 发现密钥存放在.ssh/下,在kali上生成一个密钥,通过上传到.ssh/下,将其替换掉 使用kali生成密钥 登录成功,但是无法拿到root目录下的flag 获取root用户权限…...
基于区域划分的GaN HEMT 准物理大信号模型
GaN HEMT器件的大信号等效电路模型分为经验基模型和物理基模型。经验基模型具有较高精度但参数提取困难,特别在GaN HEMT器件工艺不稳定的情况下不易应用。相比之下,物理基模型从器件工作机理出发,参数提取相对方便,且更容易更新和…...
laravel引入element-ui后,blade模板中使用elementui时,事件未生效问题(下载element-ui到本地直接引入项目)
背景 重构公司后台项目,使用了dcat-admin,但是dcat-admin有些前端功能不能满足需求。因此引入element-ui进行相关界面的优化 具体流程 1.下载element-ui到本地 2.进入如下目录 打开 node_modules\element-ui\lib 复制index.js 打开 node_modules/ele…...
【计算机网络笔记】路由算法之层次路由
系列文章目录 什么是计算机网络? 什么是网络协议? 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能(1)——速率、带宽、延迟 计算机网络性能(2)…...
【华为OD机试python】分糖果【2023 B卷|100分】
【华为OD机试】-真题 !!点这里!! 【华为OD机试】真题考点分类 !!点这里 !! 题目描述 小明从糖果盒中随意抓一把糖果,每次小明会取出一半的糖果分给同学们。 当糖果不能平均分配时,小明可以选择从糖果盒中(假设盒中糖果足够) 取出一个糖果或放回一个糖果。 小明最少需要多…...
ARM 汇编基础
我们在学习 STM32 的时候几乎没有用到过汇编,可能在学习 UCOS 、 FreeRTOS 等 RTOS 类操作系统移植的时候可能会接触到一点汇编。但是我们在进行嵌入式 Linux 开发的时候是绝 对要掌握基本的 ARM 汇编,因为 Cortex-A 芯片一上电 SP 指针还…...
虹科Pico汽车示波器 | 汽车免拆检修 | 2017款东风本田XR-V车转向助力左右不一致
一、故障现象 一辆2017款东风本田XR-V车,搭载R18ZA发动机,累计行驶里程约为4万km。车主反映,车辆行驶或静止时,向右侧转向比向左侧转向沉重。 二、故障诊断 接车后试车,起动发动机,组合仪表上无故障灯点亮&…...
阿里云服务器ECS经济型e实例优惠99元性能怎么样?
阿里云服务器ECS经济型e实例优惠99元性能怎么样?阿里云服务器优惠99元一年,配置为云服务器ECS经济型e实例,2核2G配置、3M固定带宽和40G ESSD Entry系统盘,CPU采用Intel Xeon Platinum架构处理器,2.5 GHz主频࿰…...
vue3引入vuex基础
一:前言 使用 vuex 可以方便我们对数据的统一化管理,便于各组件间数据的传递,定义一个全局对象,在多组件之间进行维护更新。因此,vuex 是在项目开发中很重要的一个部分。接下来让我们一起来看看如何使用 vuex 吧&#…...
【Dify 2026缓存架构权威白皮书】:首次公开3层异构缓存协同机制与QPS提升217%实测数据
更多请点击: https://intelliparadigm.com 第一章:Dify 2026缓存架构演进与核心设计哲学 Dify 2026 的缓存体系已从早期的单层 LRU 内存缓存,演进为支持多级协同、语义感知与生命周期自治的混合缓存网格(Hybrid Cache Grid, HCG…...
2026 AI员工推荐榜TOP5 全链路经营自动化工具深度测评
2026 年,大模型技术全面成熟,AI 员工系统成为中小企业数字化标配,全国中小企业 AI 系统使用率突破 51%,年增速达 140%。全链路自动化系统可实现人力成本减半、效率翻倍,成为企业破局核心。《2026 企业智能工具测评报告…...
Qt Quick实战:用QML和C++给娃做个跨平台算术游戏(附完整源码)
Qt Quick亲子编程:用QMLC打造跨平台数学启蒙游戏 当技术遇上亲子时光,编程不再只是冰冷的代码。作为开发者家长,我们完全可以用Qt Quick为孩子定制一款专属的数学启蒙游戏,让学习变成亲子互动的快乐时光。这款游戏将运行在Windows…...
别再手动写用例了!用Excel+Python快速生成1100条资产管理系统测试用例(附模板)
用ExcelPython实现资产管理系统测试用例自动化生成实战 测试工程师们常常面临一个共同痛点:面对功能模块繁杂的企业级系统(如资产管理系统),手工编写测试用例不仅耗时耗力,还难以保证覆盖率和规范性。本文将分享一套基…...
保姆级教程:手把手带你复现LSS(Lift-Splat-Shoot)的BEV感知核心模块
从零实现LSS核心模块:BEV感知的工程实践指南 1. 环境配置与数据准备 在开始复现LSS(Lift-Splat-Shoot)模型之前,我们需要搭建一个稳定的开发环境。推荐使用conda创建隔离的Python环境: conda create -n bev_lss python…...
全流程自动化,全自动双 FA 耦合设备重新定义光模块封装标准
在高速光模块竞争日趋激烈的今天,封装环节的自动化程度、精度与效率,已成为衡量企业核心竞争力的重要指标。来勒光电全自动双 FA 耦合设备以全流程自动化设计、微米级精度控制与高效率作业能力,重新定义高速光模块耦合封装标准。全自动双 FA …...
云成本优化:每年为公司省下百万的架构设计技巧
在软件测试工作中,我们常常将目光聚焦于功能验证、性能瓶颈排查与安全漏洞挖掘,却容易忽视云资源成本这一隐性但影响深远的环节。随着企业上云规模不断扩大,云账单的悄然增长逐渐成为运营负担。作为软件测试从业者,我们凭借对系统…...
【仅开放30天】2026临床R认证训练营:涵盖R包CRAN审核规范、REDCap API实时对接、区块链存证日志模块
更多请点击: https://intelliparadigm.com 第一章:2026临床R认证训练营全景导览 2026临床R认证训练营是面向医学研究者、生物统计师与临床数据科学家的高阶实践型培训项目,聚焦R语言在真实世界证据(RWE)、CDISC标准&a…...
TSX07311628扩展模块
TSX07311628 是施耐德电气 Modicon Nano 系列中的一款紧凑型可编程逻辑控制器模块,主要用于小型自动化项目的逻辑控制与设备驱动。以下是该模块的15条主要产品特点:中间15条特点:属于施耐德 Modicon Nano 系列紧凑型可编程控制器集成 16 个输…...
2026 年 Fedora Linux 44 发布:桌面与底层双升级,多版本选择满足多样需求
Fedora Linux 44:桌面环境与底层设施全面升级2026 年 4 月 28 日,Fedora 项目正式发布 Fedora Linux 44,为开发者钟爱的 Linux 发行版带来显著提升。在桌面环境上,Fedora Workstation 44 搭载最新 GNOME 50,在辅助功能…...
