STM32调试数码管显示 ucos系统 复位

来源:互联网 发布:mac上如何隐藏文件夹 编辑:程序博客网 时间:2024/05/18 07:59

昨天调试stm32F103VE进行数码管显示一波三折出现了一连串的问题,导致浪费了好多的时间,总结下。


stm32F103VE、ucos系统、tm1629数码管显示。

数码管显示、通信模块、扫描案件分别在不同的3个进程,各个进程之间的通讯需要置标志,或者使用信号量等手段。程序中我直接采用的置标志的方法。

程序写好后,进行调试基本没有问题,但是有时会经常自动复位。
开始不知道怎么去找错误,因为随机的,突然会自动重启。不知道从哪个地方自动重启的。
在大师的指导下,理解到:一般程序重启,主要原因就是越界等一些条件满足后,是你自己的调用程序复位的。在中断文件HardFault_Handler函数中的NVIC_SystemReset函数,由这个函数复位。我在这边打断点的时候 ,发现确实程序运行一会儿,就会运行到这里,然后重启。
后续,确定是新添加的回调函数有错误:在此进程下,调用另一个进行的,导致错误。
修改成:在此进程的回调函数中置标志,在另一个进程下检查标志,执行需要的操作。

在后面发现程序从flash启动后 ,过一会儿在断点,重新启动,数码管屏不显示。
一开始没找出问题的点出来:
1,怀疑是不是 打开看门狗了,没喂狗。
2.是否是从falsh启动,启动之后是不是内存堆栈不够导致死机。

后续重新配置IAR参数,检查看门狗喂狗,情况还是一样。
上电调试的时候返现 屏不显示,但是程序还在正常的运行,因为按键有效。证明程序3个进程一直再正常的运行。
在查端口是否被重复定义。

最终在下班后发现开机没有调用设置数码管屏的灰度调节设置函数,导致断电之后,当电流完全释放之后,从新启动灰度值是0,屏上面看不到显示内容,其实屏是好的。当电流没有完全释放的时候在从新通电,屏还是亮的。
所以现象才是:断开电源1秒2秒  再插上是 继续亮的,但是过10秒肯定不亮。



 


0 0
原创粉丝点击