STMCU小助手
发布时间:2022-2-2 20:00
|
1.1优先级分组 首先,我们先通过标识来解释手册里NVIC向量表的含义: ![]()
Core-M4内核最多支持256级的可编程优先级。用8位来表示优先级级别,,优先级级别分为8组,分别是组0~组7,如表1.0所示 (8位范围:0~255) 表1.1 中断分组讲解
如果用图来形象表示,则看图1.1-8位中断分组 :
![]() 1.1 8位中断分组 stm32为了节省材料成本,并没有完全使用这8位,它忽略低4位。如下图1-2
![]() 1.2 高位分组 表1.2 裁剪分组讲解
1.2 NVIC中断中断控制器相关函数NVIC分组设置 void NVIC_SetPriorityGrouping(uint32_t PriorityGroup) 位置:core_cm4.h的1453行 作用:设置优先级分组。 参数:PriorityGroup优先级分组组号 举例:STM32的优先级分组设置为组5,则对应的代码如下:NVIC_SetPriorityGrouping(5); NVIC具体中断优先级编码uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) 作用:设置抢占优先级和响应优先级的级别 位置:core_cm4.h的1610行 参数:PriorityGroup优先级分组组号;PreemptPriority:抢占优先级;SubPriority:响应优先级 返回值:32位的编码值,编码值用于中断优先级设置 举例:优先级分组选择为组5,抢占优先级为2,响应优先级为2,代码如下: u32 prio; prio = NVIC_EncodePriority(5,2,2); NVIC中断优先级设置void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) 作用:将优先级分组情况以及抢占优先级和响应优先级设置到响应的中断。 参数: IRQn :中断通道编号。 priority:是NVIC_EncodePriority函数的返回值 举例:设置串口1全局中断的优先级分组选择为组5,抢占优先级为2,响应优先级为3 对应的代码: u32 prio; prio = NVIC_EncodePriority(5,2,3); NVIC_SetPriority(37,prio); 也可以写成NVIC_SetPriority(USART1_IRQn,prio); NVIC中断使能void NVIC_EnableIRQ(IRQn_Type IRQn) 作用:使能中断通道 参数:IRQn :中断通道编号。 举例:使能串口1全局中断,NVIC_EnableIRQ(37); 可以写成NVIC_EnableIRQ(USART1_IRQn); NVIC中断禁能void NVIC_DisableIRQ(IRQn_Type IRQn) 作用:禁止中断通道。 参数:IRQn :中断通道编号。 举例:禁止串口1全局中断,NVIC_DisableIRQ(37); 1.3 实例代码之串口中断:
|
【福利三:逢7发帖赢大礼】4、基于STM32G070板子SPI flash 移植SFUD库
【福利三:逢7发帖赢大礼】基于STM32G070板子的uart shell移植设计
【福利三:逢7发帖赢大礼】3、基于STM32G070板子的YModem串口协议通信
【福利三:逢7发帖赢大礼】2、基于STM32G070板子的OLED移植U8G2库
实战经验 | ClassB功能安全认证代码与应用代码分区的实现要点
STM32G0 系列 I2C 通信异常典型案例分析与解决方案总结
经验分享 | LAT1490 两个STM32G0 I2C 通信异常的案例分析
经验分享 | STM32G0 I2C bootloader Go 命令后调试连接失败:DBG_SWEN 位复位修复
经验分享 | STM32G0B1 待机模式意外唤醒深度解析:RTC 结构体未初始化的隐形坑
经验分享 | STM32G0B1 待机模式意外唤醒深度解析:RTC 结构体未初始化的隐形坑
微信公众号
手机版