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


現象:1,RTOS  使用時 系統卡啟動文件               B       .處。

image

原因分析:該種情況是由於定義開啟了中斷,但是未開啟中斷處理服務。程序執行到中斷響應式無對應的程序響應

解決辦法:

分析啟動頭文件,未針對RTOS特別定義中斷

image

分析成分徐程序中開啟動了 串口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中做相應的重定義


特別值得注意的是,不少例程中修改程序的啟動文件,為了方便可移植性,不建議這么做。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM