stm32中断优先级相关概念与使用笔记

stm32中断优先级相关概念与使用笔记

ID:22685052

大小:81.50 KB

页数:7页

时间:2018-10-30

stm32中断优先级相关概念与使用笔记_第1页
stm32中断优先级相关概念与使用笔记_第2页
stm32中断优先级相关概念与使用笔记_第3页
stm32中断优先级相关概念与使用笔记_第4页
stm32中断优先级相关概念与使用笔记_第5页
资源描述:

《stm32中断优先级相关概念与使用笔记》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、Stm32中断优先级相关概念与使用笔记一、基本概念1.ARMcortex_m3内核支持256个中断(16个内核+240外部)和可编程256级中断优先级的设置,与中断控制核中断优先级控制的寄存器(NVIC、SYSTICK等)属于cortex_m3内核的部分。STM32采用了cortex_m3内核,所以这些部分仍旧保留使用,但并不是完全使用的,只是使用了一部分。2.STM32目前支持的中断共为84个(16个内核+68个外部),和16级可编程中断优先级的设置(仅使用中断优先级设置8bit中的高4位,见后面解释)。《参考最新101xx-107xxSTM32Referen

2、cemanual,RM0008》。以下主要对外部中断进行说明。3.68个外部中断(通道)在STM32中已经固定的分配给相应的外部设备,每个中断通道都具备自己的中断优先级控制字节PRI_n(8位,但在STM32中只有高4位有效),每4个通道的8位中断优先级控制字(PRI_n)构成一个32位的优先级寄存器(PriorityRegister)。68个通道的优先级寄存器至少有是17个32位的寄存器,它们是NVIC寄存器的一部分。4.这4bit的中断优先级控制位还要分成2组看,从高位开始,前面的定义抢先式优先级,后面为子优先级。4bit的组合可以有以下几种形式:编号分配情

3、况70:4无抢先式优先级,16个子优先级61:32个抢先式优先级,8个子优先级52:24个抢先式优先级,4个子优先级43:18个抢先式优先级,2个子优先级3/2/1/04:016个抢先式优先级,无子优先级5.在一个系统中,通常只使用上面5种分配情况的一种,具体采用哪一种,需要在初始化时写入到一个32位寄存器AIRC(ApplicationInterruptandResetControlRegister)的第[10:8]这2个位中。这3个bit位有专门的称呼:PRIGROUP(具体写操作后面介绍)。比如你将0x05(上表的编号)写到AIRC的[10:8]中,那么也

4、就规定了你的系统中只有4个抢先式优先级,相同的抢先式优先级下还可以有4个不同级别的子优先级。6.AIRC中PRIGROUP的值规定了设置和确定每个外部中断通道优先级的格式。例如,在上面将0x05写入了AIRC中PRIGROUP,也就规定了当前系统中只能有4个抢先式优先级,相同的抢先式优先级下还可以有4个不同级别的子优先级,他们分别为:位[7:6]位[5:4]位[3:0]000号抢先优先级000号子优先级无效011号抢先优先级011号子优先级无效102号抢先优先级102号子优先级无效113号抢先优先级113号子优先级无效7.如果在你的系统中使用了TIME2(中断通

5、道28)和EXTI0(中断通道6)两个中断,而TIME2中断必须优先响应,而且当系统在执行EXIT0中断服务时也必须打断(抢先、嵌套),就必须设置TIME2的抢先优先级比EXTI0的抢先优先级要高(数目小)。假定EXTI0位2号抢先优先级,那么TIME2就必须设置成0或1号抢先优先级。这些工作需要在AIRC中PRIGROUP后进行设置。8.具体优先级的确定和嵌套规则。ARMcortex_m3(STM32)规定a/只能高抢先优先级的中断可以打断低抢先优先级的中断服务,构成中断嵌套。b/当2(n)个相同抢先优先级的中断出现,它们之间不能构成中断嵌套,但STM32首先

6、响应子优先级高的中断。c/当2(n)个相同抢先优先级和相同子优先级的中断出现,STM32首先响应在该中断通道向量地址低的中断(ROM0008,表52)。具体一点:0号抢先优先级的中断,可以打断任何中断抢先优先级为非0号的中断;1号抢先优先级的中断,可以打断任何中断抢先优先级为2、3、4号的中断;…..构成中断嵌套。如果两个中断的抢先优先级相同,谁先出现,就先响应谁,不构成嵌套。如果一起出现(或挂在那里等待),就看它们2个谁的子优先级高了,如果子优先级也相同,就看它们的中断向量位置了。9.上电RESET后,AIRC中PRIGROUP[10:8],因此此时系统使用1

7、6个抢先优先级,无子优先级。另外由于所有外部中断通道的优先级控制字PRI_n也都是0,所以根据上面的定义可以得出,此时68个外部中断通道的抢先优先级都是0号,没有子优先级的区分。故此时不会发生任何的中断嵌套行为,谁也不能打断当前正在执行的中断服务。当多个中断出现后,则看它们的中断向量地址:地址越低,中断级别越高,STM32优先响应。注意:此时内部中断的抢先优先级也都是0号,由于它们的中断向量地址比外部中断向量地址都低,所以它们的优先级比外部中断高,但如果此时正在执行一个外部中断服务,它们也必须排队等待,只是可以插队,当正在执行的中断完成后,它们可以优先得到执行。

8、了解以上基本概念还是不够

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。