1. 程式人生 > >第三節:FreeRTOS 中斷測試實驗

第三節:FreeRTOS 中斷測試實驗

目錄

(1)首先了解FreeRTOSConfig.h中的巨集。

configKERNEL_INTERRUPT_PRIORITY

configMAX_SYSCALL_INTERRUPT_PRIORITY

(2)FreeRTOS 開關中斷

             portDISABLE_INTERRUPTS();  關中斷              portENABLE_INTERRUPTS();  開中斷

(3)臨界段保護

  taskENTER_CRITICAL() 和 taskEXIT_CRITICAL()

  taskENTER_CRITICAL_FROM_ISR() 和 taskEXIT_CRITICAL_FROM_ISR()


(1)首先了解FreeRTOSConfig.h中的巨集。

configKERNEL_INTERRUPT_PRIORITY

此巨集是定義核心中斷優先順序的,決定了可以有多少個優先順序。

configMAX_SYSCALL_INTERRUPT_PRIORITY

此巨集是定義系統中斷許可權的。高於此中斷優先順序的中斷,核心無法禁止.

 

 

舉個例子:STM32  設定為16個優先順序 ,0為最高,16為最低。配置為configKERNEL_INTERRUPT_PRIORITY=15,

configMAX_SYSCALL_INTERRUPT_PRIORITY=5.

則高級別的中斷0-4,不會被核心遮蔽。

(2)FreeRTOS 開關中斷

             portDISABLE_INTERRUPTS();  關中斷 
             portENABLE_INTERRUPTS();  開中斷

     低於configMAX_SYSCALL_INTERRUPT_PRIORITY=5 的中斷會被遮蔽。高於configMAX_SYSCALL_INTERRUPT_PRIORITY的中斷會繼續進行。

 

(3)臨界段保護

  taskENTER_CRITICAL() 和 taskEXIT_CRITICAL()

  任務級臨界保護程式碼,一個進入臨界段,一個退出臨界段。

  taskENTER_CRITICAL_FROM_ISR() 和 taskEXIT_CRITICAL_FROM_ISR()

  中斷級臨界保護程式碼,一個進入臨界段,一個退出臨界段。