1. 程式人生 > >FreeRTOS 啟動進程調度後,程序卡死的部分原因分析。

FreeRTOS 啟動進程調度後,程序卡死的部分原因分析。

定義 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 啟動進程調度後,程序卡死的部分原因分析。