完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
在嵌入式系统开发过程中,不可避免的会和“中断”打交道。很多初学者对中断的理解不深,往往是看到中断绕着走。其实不然,费点时间搞懂中断能解决不少问题。
中断英文“Interrupt”,字面很好理解,就是打断的意思。在程序中“Interrupt”打断的自然也是程序。举个例子,有一个遥控的自动避障小车,小车在向前跑的过程中程序一直监测周围环境,实现避障功能,这个时候你想遥控小车停个三分钟,就要用到中断了,也就是打断原有的“监测环境——避障”程序流程。打断的目的就是执行“别跑啦,停下来歇歇”这个程序,我们称中断之后执行的程序为“中断服务函数”。一般情况下,中断服务函数执行完后(小车休息三分钟,或者干其他的事情完事后),会清理一下中断标志位,即告诉主程序中断完事儿了,你该干嘛干嘛。清理了中断标志位后,此时小车又开始呼呼的跑了…… 简而言之,中断就是由某个事件触发,打断原有的执行程序,去执行中断服务函数,执行完后再返回被打断的地方继续执行。就像你正在写作业,突然老妈喊你吃饭,你去吃完饭回来继续写作业。“吃饭”就是一个中断,打断了你写作业嘛。 使用中断时必不可少的会牵扯到中断优先级。优先级有什么作用呢?主要是用在好多好多中断到来的时候,我该怎么处理这些中断,先处理哪些后处理哪些,有了中断优先级,程序就按照优先级顺序依次执行这些中断。 中断优先级包括两部分:抢占优先级和响应优先级,可以分别理解为牛逼优先级和不是很牛逼的优先级,两者都有很多级别,比如抢占优先级0,1,2,3……响应优先级0,1,2,3……。有什么作用呢?前面内容我们提到中断会打断主程序,抢占优先级高的中断还可以打断抢占优先级低的中断服务函数。例如: 设定事件1中断的抢占优先级2,响应优先级3; 设定事件2中断的抢占优先级3,响应优先级2; 设定事件3中断的抢占优先级2,响应优先级0. 假设三个事件的中断同时到来,那么程序的执行顺序为:主程序——中断3——中断1——中断2——主程序。 假设事件2中断先到,紧接着事件1中断到来,事件3中断未触发,程序执行顺序:主程序——中断2——中断1——中断2——主程序。也即高抢占优先级的中断会打破第抢占优先级的中断。 假设事件1中断先到,紧接着事件3中断到来,事件2中断未触发,程序执行顺序:主程序——中断1——中断3——主程序。虽然中断3的响应优先级高于事件1的响应优先级,但是它不能打破后者,原因就是因为响应优先级不是很牛逼。但是当中断1和中断3同时触发时,程序是先执行中断3的,这就是响应优先级的作用。 在STM32中,还有一个中断优先级组的概念。我们知道中断优先级有个16位的寄存器,寄存器的bit[7:4]这四位是分配给中断优先级的(包括抢占优先级和响应优先级),中断优先级组的作用是分配这四位前几位给抢占优先级用,后几位给响应优先级用。例如STM32F4分为0,1,2,3,4,5这五个组,见下表: 有时候我们可能需要多一点抢占优先级,或者多一点响应优先级,这个时候只需要指定中断优先级组就可以了。但是需要说明的是: 1,程序只能指定一次中断优先级组,也就是说,指定了中断优先级组别之后就不能更改了,指定组别之后,抢占优先级的个数和响应优先级的个数也就确定了。 2,对于STM32F4,中断优先级最多只有16(2的4次方)个不同的级别,不同的中断可以设定为相同的优先级别(抢占优先级和响应优先级都相同),相同优先级别的中断按照触发时间顺序依次执行,同时触发时具体执行顺序看程序心情。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1771 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1619 浏览 1 评论
1070 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
724 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1673 浏览 2 评论
1936浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
729浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
569浏览 3评论
594浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
552浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 17:52 , Processed in 0.594193 second(s), Total 46, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号