当前位置: 首页 > news >正文

嵌入式-中断的概念,优先级,编程-Day17

一、中断的概念

1.概念

简单来说,就是正常程序运行的过程中,要去应发一个突发事件,应发完后就继续做自己原来的事。

2.编程举例(中断的由来)

目的:外部串口去发送给单片机0慢闪,发送1正常闪,发送2快闪

首先,正常的思维就是先开始实现闪灯,然后你发送指令,然后单片机如果读到值,就使用接收指令去读对应的值并采取相应的行为,这看着是没啥问题的。

但是注意一个比较容易忽略的问题,假设writebit往灯写数据使灯亮或者灭是100ms一次,那么一次闪烁就是200ms,而串口接收或者发送的周期:比如波特率是常见的115200,然后发送的时候,起始位1+8个数据位+1结束位,这样就是每秒发送115200/10个字节,那就是发送或者接收就是0.1ms左右,那根据下面的第二个图片看到,当始终不读取数据的时候,你的接受寄存器的值始终会被覆盖,最后等你一次闪烁完,我可能只拿到了第一次发送的数据和被覆盖的就剩的最后一层的数据,所以这时候我们可以使用中断。

那这里就可以使用中断,就拿USART来说,他的右上角所示的每个标志位都可以引起中断,我们这里使用RXNE去产生中断,比如一判断到当前接收数据寄存器有值,就中断,中断响应函数里面接收数据就行

二、中断的优先级

1.中断优先级的概念

优先级就分为两种,一种是子优先级,就是同类的中断排队现象。

另一种是只有 抢占优先级才会发生的中断嵌套现象。        

2.中断流程

如下所示,片上外设靠标志位启动全局中断,因为片上外设很多,既而传给单片机的中断也很多(注意:每个外设对应的全局中断都有对应的名称,然后给这个名称的中断配置优先级),那么就需要一个中断管理员:NVIC去管理中断(在这里管理里面定义了管理规则,即中断的优先级),之后执行中断,执行中断的时候,需要去中断向量表里面找每个中断名对应的中断响应函数(比如USART的中断名下这个也有其对应的中断响应函数)

一般来说,中断响应函数,在底层制作声明,你自己调用然后实现自己想要实现的具体中断功能就行。


3.中断优先级的表示方法

中断优先级,就是前面提到的管理规则,即具体就是NVIC这块,他给每个字段配置了4位的数据,有一根中断分组线,线左边的叫抢占优先级,右边的叫子优先级。

这根线可以左右移动,既而导致了5个不同的分组。

同一个类别的优先级,谁的值越小,谁就是优先,但是特比注意抢占优先级和子优先级二者是不能直接相比的,要比就是你的抢占和我的抢占比,你的子优先级和我的子优先级比。


3.抢占优先级与中断嵌套


4.子占优先级与中断排队

这里唯一一个特别注意的就是中断排队不会打断当前中断的执行,即一定不会发送抢占所造成的嵌套中断的情况


5.练习题

三、中断的编程实验

http://www.xdnf.cn/news/1340353.html

相关文章:

  • 亚马逊站外推广效能重构:自然排名提升的逻辑与实操边界
  • 底层逻辑颠覆者:Agentic BI如何通过“Data + AI Agent”架构重构数据价值链?
  • Trae AI 超级团队
  • matplotlib 6 - Gallery Images
  • 力扣905:按奇偶排序数组
  • 【GPT入门】第52课 openwebui安装与使用
  • postman接口自动化测试
  • redis在Spring中应用相关
  • Django ModelForm
  • C#基础编程核心知识点总结
  • 打破传统课程模式,IP变现的创新玩法 | 创客匠人
  • RabbitMQ面试精讲 Day 26:RabbitMQ监控体系建设
  • 从零开始的Agent学习(二)-增加文档输出功能
  • 36、供应链计划与执行优化 (军方后勤) - /供应链管理组件/military-logistics-scm
  • 34、扩展仓储管理系统 (跨境汽车零部件模拟) - /物流与仓储组件/extended-warehouse-management
  • 3D 环形旋转图片轮播(纯html,css,js)
  • 力扣hot100:无重复字符的最长子串,找到字符串中所有字母异位词(滑动窗口算法讲解)(3,438)
  • 从零开始理解 K 均值聚类:原理、实现与应用
  • 自学嵌入式第二十四天:数据结构(4)-栈
  • linux-ubuntu里docker的容器portainer容器建立后如何打开?
  • WSL的Ubuntu如何改名字
  • Ubuntu网络图标消失/以太网卡显示“未托管“
  • java项目:如何优化JVM参数?
  • nginx-自制证书实现
  • 读《精益数据分析》:精益画布——创业与产品创新的高效工具
  • 【工具】前端JS/VUE修改图片分辨率
  • 使用Docker部署Coze Studio开源版
  • Advanced Math Math Analysis |02 Limits
  • Oracle CLOB类型转换
  • k8s下的网络通信与认证