中断

当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的中断相关推荐

  1. 简单聊下STM32F103的串口

    串口是单片机嵌入式必不可少的外设,它上手简单,使用方便,很受小伙伴的欢迎. 用STM32CubeMX体验下STM32F103的串口,硬件平台采用百问网STM32F103mini开发板. 生成的一些代码 ...

  2. 简单聊下STM32F103的时钟

    对于芯片而言,电源和时钟是缺一不可的. 电源为芯片提供能量,时钟则提供时间基准,芯片好按照这个tick依次执行指令. STM32F103是一款性价比很好的芯片,它的时钟树长这样: 它有4个时钟源,不同 ...

  3. 简单聊下STM32F103的GPIO

    GPIO是芯片和外界沟通的桥梁,GPIO有很多模式,不同的模式有不同的配置,应用于不同的场合. STM32F103系列的I/O引脚共有8种工作模式, 输入模式有四种 浮空输入 上拉输入 下拉输入 模拟 ...

  4. 工作篇 之 简单聊下有关环信的 “坑” ...

    LZ-Says:相遇,相知,相恋,争执,平淡,压抑,愤懑,该画上句号了. 前言 环信,Enmmm,牛逼,懵 ing -! 最近这段时间一直围绕环信,在使用的过程中,遇到很多很多问题,自己都感觉蒙圈,烦 ...

  5. 简单聊下中台概念与发展

    什么是中台 中台可以视作是支持多个前台业务中具有公共业务属性的能力组织. 所以他有组织+系统两个层面的事情.需要有个自运营的组织,对外提供的是抽象的服务. 钟华老师说:中台是将企业核心能力以服务化形式 ...

  6. 简单聊下5G与V2X

    V2X是将车辆与一切事物相连接的新一代信息通信技术,其中V代表车辆,X代表任何与车交互信息的对象,包括车.人.交通路侧基础设施和网络.V2X是通过专用通信协议和频谱实现一定区域内.一定条件下的数据互通 ...

  7. Esp8266 进阶之路25【高级篇】深聊下esp8266的串口 Uart 通讯中断编程,为您准备好了 NONOS 版本 和 RTOS 系统的串口驱动文件。(附带Demo)

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,不做开发板.仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 序号 SDK版本 内容 链接 1 nonos2.0 搭建 ...

  8. hal库开启中断关中断_[STM32]HAL库下GPIO按键中断与去抖问题分析(分析源码解决问题)...

    自上篇文章STM32 非阻塞HAL_UART_ReceiveIT解析与实际应用,具体总结了HAL库下套娃函数中如何看清库函数的脉络,更细致的认识调用的过程,以解决潜在的问题.又又又遇到了新的问题(GP ...

  9. 面试 - 要不简单聊一下你对MySQL索引的理解?

    转载自  面试 - 要不简单聊一下你对MySQL索引的理解? MySQL索引?这玩意儿还能简单聊?明显是在挖坑,幸好老夫早有准备,切听我一一道来. 一.索引是什么? 索引是帮助MySQL高效获取数据的 ...

最新文章

  1. 震惊:菲律宾总统咧嘴冷笑视察惨剧!
  2. JavaWeb 入门篇(3)ServletContext 详解 具体应用
  3. jquery.min.js一引入到工程中显示红叉,或其他.js文件显示红叉
  4. 中间件:ElasticSearch组件RestHighLevelClient用法详解
  5. 物联网工程课程设计论文
  6. 超简单的Matlab附加功能安装包的安装方法
  7. 国密SM算法有哪些?
  8. 帝国 php 7.0 默认 后台用户名及认证码,帝国CMS忘记后台登陆用户名 密码 认证码 安全提问答案 数据库用户名及密码的解决方法 | 坐倚北风...
  9. (一)WaveDrom 数字时序图渲染引擎
  10. 查询数据库表修改记录的sql语句
  11. 1255B. Fridge Lockers Codeforce题解
  12. 用C语言实现八进制和十进制互转
  13. 从人肉跑数机到真数据分析,中间隔着沟通能力
  14. [魔乐科技]Android开发实战经典视频教程
  15. C#dataGridView批量修改选中的任意列数据
  16. Robotaxi卡位战背后:滴滴的资本焦虑与技术沟壑
  17. 源代码,图纸等企业数据加密的重要性
  18. php 图片扭曲,把一张图片变形扭曲成各种不同的长宽
  19. 一个程序从编译到运行的全过程
  20. GitHub断供危机来了!权威解读程序员应对指南

热门文章

  1. Python实战-使用微信遥控你的电脑
  2. php考研大学,2019考研:49所院校公布研究生招生简章及专业目录
  3. 排序算法总结--树排序
  4. 给如两个日期,计算工期
  5. 何为分度翩翩的程序员?
  6. java aviator使用类_Aviator学习笔记
  7. NS-3 学习之信号传播损失模型之RangePropagationLossModel范围传播损失模型
  8. 胆固醇-聚乙二醇-叠氮,Cholesterol-PEG-Azide,CLS-PEG-N3,科研试剂供应
  9. Android5.0 Alarm服务简单分析
  10. 结合openCV学习DIP之机器学习CNN