简单聊下STM32F103的中断
中断
当cpu在执行指令时,遇到一些突发状况,不得不先处理这些突发状况,处理完毕后再返回原来执行指令处继续执行,这里的突然状况被称为中断或异常。
中断示意图如下:
STM32F103的中断系统很强大,有专门的中断控制器NVIC,多个中断优先级,且可以配置。中断优先级又分为抢占优先级和响应优先级。
Cortex-M3 中断异常表:
Cortex-M3 中断优先级分组
STM32把中断优先级的寄存器修改为4个bit,4个bit对应的中断优先级分组如下:
- 高抢占优先级可以打断正在执行的低抢占优先级。
- 抢占优先级相等,高响应优先级不能打断低响应优先级。
- 抢占优先级相等,两个中断同时发生,高响应优先级先执行。
- 抢占优先级和响应优先级都相等,先来先执行。
- 抢占优先级和响应优先级都相等,同时来则根据向量表中的位置决定,靠前的先执行。
注意:中断优先级分组一般只进行一次。随意改变会产生意想不到的执行结果。
可见STM32F103系列最多有16级可编程优先级,STM32F103不使用PRIGROUP来命名分组,而采用NVIC_PRIORITYGROUP_x的方式命名 , 即 NVIC_PRIORITYGROUP_0 对应第0组。
在“stm32f1xx_hal_cortex.h”有相关定义。
GPIO中断
GPIO产生中断经过的模块如下:
中断模式是指外部信号产生电平变化时,EXTI将该信号给NVIC处理,从而触发中断,执行中断服务函数,完成对应操作。
事件模式是指外部信号产生电平变化时,EXTI根据配置,联动ADC或TIM执行相关操作。
中断和事件的产生源是一样的,中断需要软件实现相应功能,而事件是由硬件触发后执行相应操作。
前者需要CPU参与功能实现,可以实现的功能更多,后者无需CPU参与,具有更高的响应速度。
结合对GPIO中断的理解,用STM32CubeMX配置下中断尝试下。
这里采用的硬件是百问网STM32F103开发板,板子上有一个按键和LED。
LED的配置,输出,无上下拉,别名LED。
按键的配置,外部输入中断,无上下拉,别名DDD。
电脑装的是win7系统,文字输入特别卡,应该是STM32CubeMX的bug。
中断和中断优先级的配置:
看下生成的代码:
HAL_GPIO_EXTI_Callback是个虚函数,把它实现,如下:
在百问网STM32F103开发板上测试,功能正常。
简单聊下STM32F103的中断相关推荐
- 简单聊下STM32F103的串口
串口是单片机嵌入式必不可少的外设,它上手简单,使用方便,很受小伙伴的欢迎. 用STM32CubeMX体验下STM32F103的串口,硬件平台采用百问网STM32F103mini开发板. 生成的一些代码 ...
- 简单聊下STM32F103的时钟
对于芯片而言,电源和时钟是缺一不可的. 电源为芯片提供能量,时钟则提供时间基准,芯片好按照这个tick依次执行指令. STM32F103是一款性价比很好的芯片,它的时钟树长这样: 它有4个时钟源,不同 ...
- 简单聊下STM32F103的GPIO
GPIO是芯片和外界沟通的桥梁,GPIO有很多模式,不同的模式有不同的配置,应用于不同的场合. STM32F103系列的I/O引脚共有8种工作模式, 输入模式有四种 浮空输入 上拉输入 下拉输入 模拟 ...
- 工作篇 之 简单聊下有关环信的 “坑” ...
LZ-Says:相遇,相知,相恋,争执,平淡,压抑,愤懑,该画上句号了. 前言 环信,Enmmm,牛逼,懵 ing -! 最近这段时间一直围绕环信,在使用的过程中,遇到很多很多问题,自己都感觉蒙圈,烦 ...
- 简单聊下中台概念与发展
什么是中台 中台可以视作是支持多个前台业务中具有公共业务属性的能力组织. 所以他有组织+系统两个层面的事情.需要有个自运营的组织,对外提供的是抽象的服务. 钟华老师说:中台是将企业核心能力以服务化形式 ...
- 简单聊下5G与V2X
V2X是将车辆与一切事物相连接的新一代信息通信技术,其中V代表车辆,X代表任何与车交互信息的对象,包括车.人.交通路侧基础设施和网络.V2X是通过专用通信协议和频谱实现一定区域内.一定条件下的数据互通 ...
- Esp8266 进阶之路25【高级篇】深聊下esp8266的串口 Uart 通讯中断编程,为您准备好了 NONOS 版本 和 RTOS 系统的串口驱动文件。(附带Demo)
本系列博客学习由非官方人员 半颗心脏 潜心所力所写,不做开发板.仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 序号 SDK版本 内容 链接 1 nonos2.0 搭建 ...
- hal库开启中断关中断_[STM32]HAL库下GPIO按键中断与去抖问题分析(分析源码解决问题)...
自上篇文章STM32 非阻塞HAL_UART_ReceiveIT解析与实际应用,具体总结了HAL库下套娃函数中如何看清库函数的脉络,更细致的认识调用的过程,以解决潜在的问题.又又又遇到了新的问题(GP ...
- 面试 - 要不简单聊一下你对MySQL索引的理解?
转载自 面试 - 要不简单聊一下你对MySQL索引的理解? MySQL索引?这玩意儿还能简单聊?明显是在挖坑,幸好老夫早有准备,切听我一一道来. 一.索引是什么? 索引是帮助MySQL高效获取数据的 ...
最新文章
- 震惊:菲律宾总统咧嘴冷笑视察惨剧!
- JavaWeb 入门篇(3)ServletContext 详解 具体应用
- jquery.min.js一引入到工程中显示红叉,或其他.js文件显示红叉
- 中间件:ElasticSearch组件RestHighLevelClient用法详解
- 物联网工程课程设计论文
- 超简单的Matlab附加功能安装包的安装方法
- 国密SM算法有哪些?
- 帝国 php 7.0 默认 后台用户名及认证码,帝国CMS忘记后台登陆用户名 密码 认证码 安全提问答案 数据库用户名及密码的解决方法 | 坐倚北风...
- (一)WaveDrom 数字时序图渲染引擎
- 查询数据库表修改记录的sql语句
- 1255B. Fridge Lockers Codeforce题解
- 用C语言实现八进制和十进制互转
- 从人肉跑数机到真数据分析,中间隔着沟通能力
- [魔乐科技]Android开发实战经典视频教程
- C#dataGridView批量修改选中的任意列数据
- Robotaxi卡位战背后:滴滴的资本焦虑与技术沟壑
- 源代码,图纸等企业数据加密的重要性
- php 图片扭曲,把一张图片变形扭曲成各种不同的长宽
- 一个程序从编译到运行的全过程
- GitHub断供危机来了!权威解读程序员应对指南