- μC/OS-III內核實現與應用開發實戰指南:基于STM32
- 劉火良 楊森編著
- 250字
- 2019-08-01 11:35:58
4.3 編寫SysTick中斷服務函數
SysTick中斷服務函數也是在os_cpu_c.c中定義,具體實現參見代碼清單4-2。
代碼清單4-2 SysTick中斷服務函數
1 /* SysTick 中斷服務函數 */ 2 void SysTick_Handler(void) 3 { 4 OSTimeTick(); 5 }
SysTick中斷服務函數很簡單,其中僅調用了函數OSTimeTick()。OSTimeTick()是與時間相關的函數,在os_time.c(第一次使用os_time.c時需要自行在文件夾μC/OS-III\Source中新建并添加到工程的μC/OS-III Source組)文件中定義,具體實現參見代碼清單4-3。
代碼清單4-3 OSTimeTick()函數
1 void OSTimeTick (void) 2 { 3 /* 任務調度 */ 4 OSSched(); 5 }
OSTimeTick()函數僅調用了函數OSSched()。OSSched()函數暫時沒有修改,具體參見代碼清單4-4。
代碼清單4-4 OSSched()函數
1 void OSSched (void) 2 { 3 if ( OSTCBCurPtr == OSRdyList[0].HeadPtr ) { 4 OSTCBHighRdyPtr = OSRdyList[1].HeadPtr; 5 } else { 6 OSTCBHighRdyPtr = OSRdyList[0].HeadPtr; 7 } 8 9 OS_TASK_SW(); 10 }
推薦閱讀