赞
踩
## **stm32加入UCOS系统后无法启动,死在OSStart()中**
问题:裸机状态,系统正常运行,添加UCOS系统后,系统大部分时间启动不起来,偶尔启动起来。
Debug状态下,发现程序死在OSStart()->OSStartHighRdy()->OSStartHang中。如下图:
最后的OSStartHang应该不会运行到此,但是程序每次都死在这。在网上找了很多解决方法,都是说UCOS系统调度有问题,让设置PendSV_Handler和startup_stm32f10x_hd.s中的DCD(详细方法可百度自行查找),系统还是无法启动。
OSStart()启动之前,需要有如下图所示操作:
这些函数我是在SysTick_Handler()中使用的。main()函数在硬件初始化之后,初始化UCOS系统,配置几个任务函数,最后OSStart(),问题就在此。在OSStart()函数运行前,程序可能还未进过SysTick_Handler(),导致系统调度异常,启动不起来。
解决方法:硬件初始化加延时,保证程序能进入一次SysTick_Handler()。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。