RT-Thread學習筆記(6)- RT-Thread中斷服務程式的書寫注意
阿新 • • 發佈:2018-12-16
在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消耗時間的話,為了使整個系統規範,還是都加上的好。
當然,和裸機開發一樣,中斷儘量短小精悍。。