FreeRTOS 啟動進程調度後,程序卡死的部分原因分析。
阿新 • • 發佈:2019-04-28
定義 eight c中 current 分享圖片 技術分享 ref 1-1 tin
現象:1,RTOS 使用時 系統卡啟動文件 B .處。
原因分析:該種情況是由於定義開啟了中斷,但是未開啟中斷處理服務。程序執行到中斷響應式無對應的程序響應
解決辦法:
分析啟動頭文件,未針對RTOS特別定義中斷
分析成分徐程序中開啟動了 串口1中斷但未能查找到對應的USART1_IRQHandler中斷服務程序。
但在RTOS的串口使用中,定義了 vUARTInterruptHandler,因此映射該中斷即可。
在RTOS配置中,添加 #define vUARTInterruptHandler USART1_IRQHandler
程序中還定義了外部中斷且綁定在中斷線0上,程序中未作處理,也應該加上 該部分的相應中斷處理。
2,程序卡死在 SysTick_Handler
與上述情景類似,查看有無PORT.C
或者port.c中有無定義該中斷,RTOS 的port.c中的中斷名
void xPortPendSVHandler( void );
void xPortSysTickHandler( void );
void vPortSVCHandler( void );
相同的,也應在RTOS中做相應的重定義
特別值得註意的是,不少例程中修改程序的啟動文件,為了方便可移植性,不建議這麽做。
FreeRTOS 啟動進程調度後,程序卡死的部分原因分析。