很多朋友对中断的一些知识还是不了解,今天就写点关于Cortex-M3处理器中断相关,以及FreeRTOS中断优先级配置的内容。
1写在前面
写本文之前,先写点相关的扩展内容。
STM32属于ARM中Cortex-M系列处理器,比如:STM32F1数据Cortex-M3,STM32F7数据Cortex-M7。
可以参看我之前分享文章:从Cortex-M到Cortex-A认识ARM处理器,了解一下关于ARM处理器的种类。
本文主要结合Cortex-M3下面STM32F1系列处理器为例来讲述中断控制相关内容。而Cortex-M其它系列,或者说STM32其它系列关于中断的内容类似。
Cortex-M3只是STM32F1的一个内核。反过来说STM32F1是在Cortex-M3基础上增加了一些外设(如:USART、AD等)的芯片。
2STM32中断控制
NVIC:Nested Vectored Interrupt Controller,即嵌套向量中断控制器。
STM32中NVIC我们比较熟悉,编程的时候使用中断都会对NVIC进行配置。
而STM32F1中的NVIC是属于Cortex-M3中的一部分,而不是STM32增加的外设。
NVIC向量中断控制器是Cortex‐M3不可分离的一部分,它与 CM3 内核的逻辑紧密耦合,有一部分甚至水乳交融在一起。
所以,NVIC相关的寄存器位于Cortex-M手册中。讲述STM32的中断控制,还得从Cortex-M3的NVIC讲起,
1.中断输入向量表
Cortex-M3的NVIC支持1至240个中断输入,比如STM32中xxxIRQs,也就是中断向量表,具体的数值由芯片厂商在设计芯片时决定。
比如STM32F1的中断和异常向量表:
2.中断和异常区别
很多初学的朋友不知道什么是中断?什么是异常?甚至有人直接把中断和异常笼统称为“中断”。
中断和异常其实有差异,也有关联,我们常说的中断其实是包含了异常。异常可以理解为MCU,或者程序处于了某种异常状态。
这么区分吧,看上面向量表,上部分有灰色背景的为异常,下部分白色的为中断。
异常属于Cortex‐M3内核的一部分,而中断属于MCU(STM32)的一部分(由厂家决定)。
所以:
1.站在Cortex‐M3内核角度,像STM32中USART这类中断,属于外部中断。
2.站在STM32角度,EXTI外部引脚中断才属于中断。
3.优先级
对于Cortex-M3来说,每个外部中断都有一个对应的优先级寄存器。
每个寄存器占用8位,但是允许最少只使用最高3位,在STM32F1中使用了高4位。(也就是我们可以分16个优先级)
优先级可以被分为高低两个位段,分别是抢占优先级和亚(响应)优先级。
提示:
1.STM32中断优先级数值越小,优先级越大。
2.优先级分组:Cortex-M3,M4具有分组功能,即存在抢占优先级和响应优先级,如下图:
而有的内核就没有,如Cortex-M0就没有。
3.参考资料
可以参看《Cortex-M3权威指南》
STM32的内核编程手册:
http://www.st.com/stonline/products/literature/pm/15491.pdf
3FreeRTOS中断优先级配置
本节内容讲述一下FreeRTOS最大中断优先级配置问题,也就是FreeRTOSConfig.h配置文件中的:
configMAX_SYSCALL_INTERRUPT_PRIORITY
你们知道配置数值的含义吗?
这里就需要结合NVIC相关的内容来理解。
上面说了,在STM32中,使用了NVIC优先级的高4位,而我们配置时需要对高4位进行配置(低4位未使用)。
看上图,明白了吗,上面这个数值就是95,但代表的优先级为5。
这个配置数值的含义,大概意思是:你代码中使用的中断(比如USART1_IRQn)优先级需要大于5才可行。
如下面配置,优先级为2就不行(当然,有分组的还牵涉到分组问题)。
关于FreeRTOS最大优先级配置的内容可以参考:
https://www.freertos.org/RTOS-Cortex-M3-M4.html
提示:
FreeRTOS任务优先级是数值越大,优先级越高。需要和中断优先级区分开来。
上一篇:CRC校验、STM32中CRC计算单元、CRC应用
下一篇:ADC,DMA,多路,单次/连续转换
推荐阅读最新更新时间:2024-11-10 00:16
设计资源 培训 开发板 精华推荐
- LT1074CT、无设计开关稳压器 5V、5A 降压(降压)稳压器
- DER-427 - 适用于T8灯管的33W调光LED驱动器
- LT6654AHS6-3.3 具有升压输出电流和电流限制的电压基准的典型应用
- 用于半桥谐振转换器的 FSFR1700 功率开关 (FPS) 的典型应用
- LT8570IDD-1 12V 电池稳定器用于 40V 瞬变的典型应用
- typec-typec
- ADA4857-1YR-EBZ,用于单高速运算放大器的评估板(具有专用反馈引脚和裸露焊盘的 8 引脚 SOIC)
- 使用 Richtek Technology Corporation 的 RT9261 的参考设计
- MCP6S22DM-PICTL、PGA PICtail 演示板评估和演示 MCP6S28 可编程和 MCP6S91/2/3 增益放大器(PGA)
- EC20usb网卡4g
- 开学季!解锁奇楼去充电,玩转幸运大抽奖~抽不中再抽
- 让是德科技带我们一起 了解汽车电子车载系统解决方案 看视频答题赢好礼!
- TE Connectivity的智能建筑解决方案——传感和连接,智能楼宇设计的关键
- 月度原创精选评选2018年4月(总第3期)
- 2018,EEWORLD邀请你定下新年成长计划
- 下载Mentor白皮书,迎接电路板与晶片日益复杂的设计挑战,还有好礼相送哟!
- 奉献九月,助人为快乐之本 贡献出你闲置的开发板、器件...
- 共抗疫情 少出门多学习: 多部TI实用课程奉上, 身体不能在路上就让灵魂在路上
- 2024 DigiKey 应用说:树莓派 5 在视频直播中的应用
- Digi-Key KOL视频来袭~欢迎进入MicroPython的奇妙世界