FreeRTOS-中斷相關坑
1. FreeRTOS中斷的配置
LIBRARY_LOWEST_INTERRUPT_PRIORITY:配置FreeRTOS最低優先級,SysTick和PendSV默認在此優先級
LIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY:高於該配置的優先級中斷中都不能調用freertos的任何API,但是同時他也不會受freertos的內核影響而可以得到最實時的響應。如這里配置為5,uart1配置為4優先級,則uart1不受系統接管並且不能調用FreeRTOS的API。
2. 注意
如果LIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY配置為5。並且NVIC中配置的優先級符合接管條件(優先級大小為FreeRTOS可以接管的大小),那么在freertos運行之前(osKernelStart之前)配合相關中斷的開關是不起作用的。
需要注意
- 中斷資源需不需要系統管理
- 被系統管理的中斷資源的控制應在系統運行起來之后
- 不受系統管理的中斷資源不能調用系統的API
下圖中Uses FreeRTOS functions為是否要使用freertos的API,如果使能則優先級必須配置在規定的范圍內。