|
抢占优先级(pre-emption priority):执行一个中断时,来了抢占优先级更高的中断,会暂停当前中断,先执行高级中断. 排队优先级(sub-priority):一个中断执行完后,有多个抢占优先级相同的中断,先执行排队优先级最高的.如果排队优先级相同,或内核不支持排队优先级,先执行中断号最小的. STM32F1有16个优先级,可配置为16抢占,或4抢占4排队,等等.使用起来很方便. STM32F0只有4个抢占优先级,没有排队优先级.在响应多种输入有些不便. 我找到一个方法,可以在STM32F0上实现排队优先级. 比如我有两个中断,RTC_IRQn和USART2_IRQn.按照中断号的顺序,RTC_IRQn在前. 但是我认为串口输入需要更快得到响应,要让RTC_IRQn在USART2_IRQn之后. 找一个未使用的中断,中断号要大于USART2_IRQn.比如CEC_CAN_IRQn,给他取个新的名字 #define RTC_LP_IRQn CEC_CAN_IRQn 设置各中断的优先级 NVIC_SetPriority(RTC_IRQn, 1); NVIC_SetPriority(RTC_LP_IRQn, 2); NVIC_SetPriority(USART2_IRQn, 2); 在RTC_IRQn中清除中断标志并触发RTC_LP_IRQn ISR(RTC_IRQn) { RTC->ISR &=~ RTC_ISR_ALRAF; EXTI->PR = 1 << 17; NVIC_SetPendingIRQ(RTC_LP_IRQn); } 在RTC_LP_IRQn中, 干些低优先级的事情. 关于ISR宏, 请见https://www.stmcu.org.cn/module/f ... =616105&pid=2353177 老样子,来点福利 ![]() |
STM32
超强工具——STM32CubeMX 你会用吗?
集结出发! STM32全国研讨会系列之一:ST智能门铃中国首秀
关于STM32启动文件的几个小问题
【银杏科技ARM+FPGA双核心应用】STM32H7系列35——USB_VCP_FS
【银杏科技ARM+FPGA双核心应用】STM32H7系列28——USB_HID
粉丝分享 | 图说CRC原理应用及STM32硬件CRC外设
STM32L151进入低功耗,并由RTC唤醒的故事
[转]stm32控制NFC模块(PN532)源码(P2P,模拟卡,读写卡等
STM32G070RB+LVGL移植
微信公众号
手机版