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中做相应的重定义


特别值得注意的是,不少例程中修改程序的启动文件,为了方便可移植性,不建议这么做。

posted @ 2019-04-28 14:49  朽木生  阅读(5363)  评论(1编辑  收藏  举报