最近项目用的STM32+UCOSII的项目,遇到几个灵异的死机现象!
首先是我移植的液晶程序写好后,工作一上电,在进入处理液晶任务的初始化的函数后死机!具体死在哪里不清楚,但是我做了几个尝试。。。注意!这个尝试的结果很灵异!!!我感觉像是量子世界。。。
1,第一次死机时候,我尝试把程序一步一步移植,看看到底是哪一步不正常,灵异的第一个问题来了,我只要把LCD_RST函数的名字改成LCD_RESET后就会死机,不改就没问题,我就奇怪了,改函数名也会死机。。。我敢保证这里不会一些函数重名的出低级错误。
2,后来我猜想会不会是堆栈太小,然后把堆栈设置了大了很多,结果,额,真的好了,但是奇怪的事还在后面,接着我继续移植,但是增加了一个设置GPIO为高电平的代码后又死机了,后来我查看堆栈利用情况,发现,堆栈还有900多K没使用,所以这里可以肯定不是堆栈溢出!
3,接着我又想在所有的异常中断中都加入串口信息打印,结果还是会死机,但是没有打印任何信息,所有的任务也没工作,因为我加了看门狗,4秒后复位,后来我索性的把看门狗关了,我就想,MD这下看你怎么办,结果。。。。看门狗关了后不死机了。。。
4,我怀疑是不是STM32的芯片坏了,比如FLASH到使用极限了,还是UCOS2.91有BUG,总之就是司机莫名其妙,不固定,我添加一句没用的代码,就可能不死机了,但是再写几句代码,又死机了,高手救救我把,我快不行了。。。 |