freertos(第三课,interrupt for critical segment)

freertos中,并不提供挂接IRQHandler的API。
所以,如果需要注册ISR,仍然需要使用standaloneOS提供的API。例如GIC的API。
freertos提供的中断管理,只是用来屏蔽和打开中断,用来进行临界代码段保护。
freertos提供了几个宏拟函数,用来进行临界代码段保护。

#define taskENTER_CRITICAL()//mask all IRQ
#define taskEXIT_CRITICAL()// clear mask 

#define taskENTER_CRITICAL_FROM_ISR()//return a ISRIdentifier
#define taskEXIT_CRITICAL_FROM_ISR(x) // use the ISRIdentifier

实质上,底层都是通过屏蔽中断或者打开中断来实现的。

#define portDISABLE_INTERRUPTS() vPortRaiseBASEPRI()
#define portENABLE_INTERRUPTS() vPortSetBASEPRI(0)

注意一个关键的宏,
configMAX_SYSCALL_INTERRUPT_PRIORITY,
低于这个值的中断,将被屏蔽,而高于这个值的中断则不会被屏蔽。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章