STM32跑RTOS多数情况可以正常运行,偶尔启动不了

2019-12-20 21:36发布

本帖最后由 dswkl11 于 2018-2-2 08:48 编辑

   大家有没有遇到过就是stm32单片机跑操作系统大部分时候很正常,但是偶尔会出现就是启动不了的情况,或者要启动很多次,因为里面有看门狗复位,启动很多次后才能正常启动。有时甚至好几个小时都正在启动,然后看门狗复位又再启动,又再看门狗复位。反正就是没有进入正常的任务调度。有时,手摸一下板子,突然又正常启动了。我用的是F072c8t6芯片,用CubeMX 的 FreeRTOS,刚用了半年多。最近这批发现这个问题比较多,同一个板子有时正常,上电断电测试的时候发现这个问题。多数情况下是可以正常启动的,有时就要卡住了,看门狗复位几次也可以正常启动运行,有时看门狗复位n次n次都启动不了,不过只要已启动完成进入多任务调度后程序就非常正常稳定的了。也就是说启动过程中出了点状况,不知道是cpu芯片内部硬件还是软件的问题,外围的线路都是可靠的,各外围芯片驱动都是稳定的。
   这种情况好像是电脑开机不了,拍一下踢一下就可以开机了。因为板子启动不了的时候我用手摸一下居然就启动得了了,真神奇。。。如果是软件问题的话,为什么大部分上电可以正常启动呢,启动后又很正常哦。。。

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
44条回答
laoshuhunya
1楼-- · 2019-12-26 02:34
dswkl11 发表于 2018-2-2 16:28
有时设置手指靠近cpu 1cm左右程序就启动成功了,都没有碰到CPU和板子哦。。。 ...

貌似典型的EMC问题。
MCU这种级别的软件不可能直接感受手指的动作,唯一的原因是板上硬件受分布参数影响太大,手指的靠近影响到硬件,从而间接干扰了软件正常工作。
可能的原因有:电源,接地,时钟(包括它的配置),复位,Boot和调试接口,还有Flash接口的访问等待时间配置。
可以用蓄电池或干净的直流电源直接给相关电路供电来排除电源方面的原因。接地就是PCB布局布线的问题。复位,Boot和调试接口可以加R/C并单独接地来排除。
如果经过以上过程问题依旧,我可以提供一个绝对可靠的测试软件(这个软件不含任何库,如C运行时库),应该可以确认你的系统是软件还是硬件问题。
   
dswkl11
2楼-- · 2019-12-26 06:27
laoshuhunya 发表于 2018-3-25 07:44
貌似典型的EMC问题。
MCU这种级别的软件不可能直接感受手指的动作,唯一的原因是板上硬件受分布参数影响 ...

我觉得是FreeRTOS的问题,我觉得是OS启动慢了,OS的tick 比较少。我用前后台启动一般就350ms左右,OS正常启动也是这个时间。今天我把所有设备初始化放在os启动之前,参照前后台系统,OS启动后就200ms 左右的任务调度,今天发现设备初始化都在350ms,然后要等一会后os的任务才运行... 问题是什么导致os多任务比较困难启动...

一周热门 更多>