B站铁头山羊stm32课程学习笔记——中断

 (目前看过的stm32的最佳教程,推荐大家学习)

1、中断的概念

      中断是stm32单片机很多外设都自带的一种功能(机制)。外设中断被“激活”(使能)后,若stm32单片机接收到突发事件信号,CPU会立即暂停当前运行的程序,转而去执行中断响应函数,在执行完中断响应函数后,继续执行常规程序。

(中断编程基本模型 )

 下面通过一个例子来理解中断编程的优点:

        实现单片机闪灯的同时接收数据,如下图

     单片机在读取Rx引脚收到的数据时,需要先经过两级缓冲,每级缓冲只能存取1个字节。若读取不及时,缓冲中的字节会被后面接收的字节覆盖,导致数据的丢失。如下图,向单片机发送“1 2 3 4 5”五个字节,若不及时读取缓冲中的字节,就会导致缓冲中的‘2 3 4’字节被后来接收到的‘5’覆盖。

     经过计算,串口接收5个字节只需要0.5ms(即5个字节全部进入缓冲的时间) ,但闪灯程序的执行至少需要400ms。若在闪灯程序执行过程中接收到5个字节,单片机此时需要执行完闪灯程序后才能执行读取字节的命令。缓冲中的字节不能及时读取,就会被后来接收到的字节覆盖,导致数据丢失。

                                             

   中断编程可以很好解决上述问题,“激活”(使能)串口的中断功能,单片机就可以在接收到数据时,打断闪灯程序的执行,转而去读取数据。如下图:

 

2、中断优先级 

        在中断优先级这部分涉及三个概念中断优先级分组中断嵌套中断排队

2.1、中断优先级分组 

         中断优先级由4个bit组成,取值范围为0000~1111,即中断优先级取值范围为0~15。中断优先级分组则是将4个bit划分为两组,分为 抢占优先级  子优先级。

        中断优先级值越小,优先成度越高。所以0000为最高优先级,1111为最低优先级。   

             

2.2、抢占优先级与子优先级

          下图展现了如何计算抢占优先级与子优先级。 

           ​​​​​​

2.3、中断排队

         中断排队抢占优先级子优先级都有关。即中断优先级越高,中断排队越靠前。

           

2.4、中断嵌套 

          中断嵌套顾名思义,就是在中断响应函数执行过程中触发新的中断。中断嵌套触法的条件是:新中断的抢占优先级更高。 

        

3、NVIC模块 

        NVIC全称 (Nested Vectored Interrupt Controller)用于管理和控制各个模块的中断。由下图可以看出NVIC模块负责中断优先级分组、使能中断等。

                                                              

    在CubeMax中就是通过NVIC模块使能中断、设置中断优先级分组和设置中断优先级。 

                                                                        

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值