当前位置:   article > 正文

stm32加入UCOS系统后无法启动,死在OSStart()中_stm32 卡在osstarthighrdy();

stm32 卡在osstarthighrdy();
					## **stm32加入UCOS系统后无法启动,死在OSStart()中**
  • 1

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/406308
推荐阅读
相关标签
  

闽ICP备14008679号