FREERTOS怎么使用定时器中断??开始任务就进入临界状态了
因为开始任务就进入临界状态了,所以,怎么才能实现定时器中断呢???直接用就好,中断里面不调用os的API的话没啥要特别注意的,要用os的API的话用对应的API有FromISR后缀 FreeRTOS中断优先级分成两组:一组受 FreeRTOS管理,在临界区里会被屏蔽,另一组不受RTOS影响,永远都是使能的。configMAX_SYSCALL_INTERRUPT_PRIORITY在FreeRTOSConfig.h中配置,定义两组中断优先级的边界。逻辑优先级高于此值的中断不受RTOS影响。
例如定义:
#define configPRIO_BITS 4
#define configLIBRARY_LOWEST_INTERRUPT_PRIORITY 15 //中断最低优先级
#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 5 //系统可管理的最高中断优先级
#define configKERNEL_INTERRUPT_PRIORITY ( configLIBRARY_LOWEST_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) )
#define configMAX_SYSCALL_INTERRUPT_PRIORITY ( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) )那么优先级0-4的中断不会被FreeRTOS打断,因为进入临界区也只屏蔽可管理的中断5-15。
所以只要把定时器的优先级设置成高于MAX_SYSCALL_INTERRUPT_PRIORITY就行了,即使开始任务进入临界也能触发。
页:
[1]