1. 程式人生 > >RT-Thread學習筆記(6)- RT-Thread中斷服務程式的書寫注意

RT-Thread學習筆記(6)- RT-Thread中斷服務程式的書寫注意

在RT-Thread中,中斷服務程式的書寫和在裸機開發的寫法差不多,區別是加入一組API函式,如下:

    rt_interrupt_enter(); //通知作業系統此時進入中斷狀態
    rt_interrupt_leave();//通知作業系統此時離開中斷狀態

對於使用方法,我們以系統滴答定時器中斷為例,在中斷服務程式的開始後和最後分別加上這兩個API函式,如下:

/**
 * This is the timer interrupt service routine.
 *
 */
void SysTick_Handler(void)
{
    /* enter interrupt */
    rt_interrupt_enter(); //通知作業系統此時進入中斷狀態
    HAL_IncTick();
    rt_tick_increase();
    /* leave interrupt */
    rt_interrupt_leave();//通知作業系統此時離開中斷狀態
}

值得注意的是,這兩組API不是必須要加的,只有在中斷服務程式中使用到作業系統(此處指的是RT-Thread)的函式時,這兩組API才是必須新增的,否則可加可不加,如果不吝嗇那一點點記憶體和CPU消耗時間的話,為了使整個系統規範,還是都加上的好。

當然,和裸機開發一樣,中斷儘量短小精悍。。