本文以 STM32F1,F2,F3,F4为例(采用Cortex-M3,M4内核),内核支持中断嵌套(最多可设置256个中断优先级)。STM32只使用其中的16个优先级。 如图 1所示,RTOS一般不会将优先级分组,但是会设置为 3类,优先级最低的中断(级别15)由SysTick,PendSV所使用;中断级别 8~14的服务程序可以调用内核提供的进程间通信函数,但是此类中断服务程序会受到内核的影响,中断响应可能被推迟(在进入临界区后,CPU会设置为忽略为8~15的优先级中断请求,但中断控制器会锁存这些请求,在告别临界区后重新打开中断便可立即产生中断请求);级别0~7的中断服务程序不使用内核提供的任何函数,即内核不会影响这些中断,因此其中断延迟时间是非常短的。
二. 中断延迟的实例
1. 测试简介
初始化GPIO PA0为 EXTI中断,进入临界区后按 PA0(中断源),中断不会即时响应,离开临界区后此中断会被响应。
完整的pdf格式文档51黑下载地址:
STM32上RTOS的中断管理.pdf
(198.29 KB, 下载次数: 8)
|