求助原子哥,全局变量值莫名其妙被清0的问题

2019-08-17 02:45发布

程序里有一个全局变量,可以理解为油门的作用,STM32根据它的大小来给出四路PWM。今天碰到一个莫名其妙的BUG,其他程序都正常跑着,就是这个全局变量的值不知为何总会被自动清0,明明初始化成非0值的。另外,我可以通过串口改变这个变量的值的,但每次刚通过串口给它赋值,瞬间就被清0了。我是用那个变量来控制电机喽,现象就是每次改变下油门,电机动一下立马就不转了。。。我程序里绝对没有对这个变量清0过。最奇葩的是,程序没有重新下载,只是复位几次,又忽然恢复正常了。但再复位又可能不正常了。。。这真是活久见~~~难道RAM到寿命了?可是程序正常跑着啊,其他变量也没事,就这一个全局变量会有这样的问题,你们说有可能是什么原因?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
17条回答
xunyiaiqiao
1楼-- · 2019-08-18 15:13
 精彩回答 2  元偷偷看……
xupt_ln
2楼-- · 2019-08-18 19:11
12楼正解。
ofourme
3楼-- · 2019-08-18 20:46
问题说的不清楚。究竟是哪个变量存储pwm的值?究竟是通过哪个函数传递pwm并控制电机的?
初步看,Throttle=(USART_2.USART_RX_BUF[1]<<8)+USART_2.USART_RX_BUF[2]; 如果数组是u8类型的话,这里<<8应该导致数据溢出了。
aozima
4楼-- · 2019-08-19 00:41
写断点分分钟找到问题。
markzz
5楼-- · 2019-08-19 02:10
u16的全局变量是16位的,假如取反会变为oxff

一周热门 更多>