
STM32编程入门之 编译器KEIL MDK的数据类型及两个重要关键词 NVIC优先级+软件中断(SWIER)+软件仿真+硬件仿真(JTAG)+中断延迟 这篇文章本人写一2011年,当时为了理解STM32的中断就做了个学习笔记,现在为了支持沐紫@沐紫 哥豁出去了。把挖箱底都掏出来了啊 ![]() 首先来说说两个概念, 2、副优先级(subpriority): 在占先式优先级相同的情况下,高副优先级的中断优先被响应; 在占先式优先级相同的情况下,如果有低副优先级中断正在执行, 高副优先级的中断要等待已被响应的低副优先级中断执行结束后才 能得到响应——非抢断式响应(不能嵌套)。 总结:I: 关于抢占优先级,它总是与中断被嵌套相关连.比如说在A中断中嵌套了B中断.B能打断A中断,B中断就一定属于抢占优先级了. II: 关于副优先级,个人认为它与中断嵌套无关,它不能被嵌套. 2、判断中断是否会被响应的依据 首先是占先式优先级,其次是副优先级; 占先式优先级决定是否会有中断嵌套; Reset、NMI、Hard Fault 优先级为负(高于普通中断优先级)且不可调整。 接着简单了解一下中断优先级(NVIC.) STM32嵌套向量中断控制器(NVIC)中断优先级理解 CM3内核寄存器 AIRCR——应用程序中断及复位控制寄存器地址(0XE000-ED0C) AIRCR是个32位寄存器,其中第8,9,10位为PRIGROUP 优先级分组设置位。见表1 表1 AIRCR寄存器图
表2为PRIGROUP[2:0] 即AIRCR 8,9,10位
表2 T 优先级分组 表2注释⑴说明: 关于中断优先寄存器组PRI_N[7:4]位, PRI_N在CM3内核中为PRI_1~PRI_249.在STM32103XX中可屏蔽中断为60个.所以PRI_N为PRI_1~PR1_59. 而实际上在MDK里的STM32库文件把PRI_N定义为32位的寄存器组IPR[ 15]. 即IPR[ 0]~ IPR[ 14],每一维元素因为有32位.(每个中断8位配置优先级)所以每一 元素可以配置4个中断.比如说IPR[ 0]的位(31:23)配置中断A,(23:15)配 中断B,(15:7)配置中断C,(7:0)配置中断D。就是说每8位配置一个中断,那么其实这8位中,STM32只用了高4位来配置中断优先级别,低4位无效。 注意STM3210XX系列只用了4位来表示优先级别.所以STM3210XX系列最多优先中断级别为16级。 2^4=16级。 如果上面的一段话对初学者理解还有点迷糊的话,我们看一下下面的图就应该很清楚了。 结合STM32库文件表达:就是SCB->AIRCR配置--------》IP[0]。 这里有一个歧义AIRCR配置--------》IPR[0]是对整个32位IPR[0]四个中断同时配置呢?还是可以对IPR[0]中的四个中断分别设置,个人觉得可以分别独立配置 表2真值表就是具体配置STM32中断级优先级别了。 参考1:表2来自ST官方资料,STM32F10xxx Cortex-M3编程手册-英文版.pdf第135页。 参考2:Cortex-M3 权威指南.PDF |
STM32ä¹ä¸æå ¥é¨çè§£.pdf
下载159.2 KB, 下载次数: 461
RE:原创--哥带你学STM32之中断入门理解——中断优先级NVIC理解
回复:原创--哥带你学STM32之中断入门理解——中断优先级NVIC理解
过来支持一把楼主
谢谢沐版主
回复:原创--哥带你学STM32之中断入门理解——中断优先级NVIC理解
回复:原创--哥带你学STM32之中断入门理解——中断优先级NVIC理解
回复:原创--哥带你学STM32之中断入门理解——中断优先级NVIC理解