芯片:MSP430FR6972
问题描述:
情况是这样的,我的板子是用电池供电的,我测试低电压报警时发现一个奇怪的现象。现象触发大致过程如下:
1.单片机正常复位,正常初始化。
2.然后我将电池拔掉,会触发外部中断然后向外发送一条消息(有3300uf大电容),这里也没问题。
3.然后我将电容的电都放掉(就是为了下次上电复位成功)。
4.插上电池,发现程序并没有按照我写的程序初始化执行(SYSRSTIV=2,看手册表示触发BOR),跑的莫名其妙的。(比如说一个全局变量总是莫名的设置成了一个值,还有莫名其妙的的进入不满足条件的函数中去)
5.然后我再用镊子手动触发复位,程序又是正常的。
一开始我怀疑是全局结构体没有初始化造成的,但是我后来把相应的变量初始化了还是出现这情况,真是无语了。
然后我在初始化完成后把几个出问题的变量都用串口打印出来,打印的结果是对的(变量都初始化为0了,说明初始化是正常的)但是一进入while(1)里面就莫名奇妙的。这情况可能是什么原因导致的呢?
灰小子:
把MSP430FR6972里fram的内容读出来,和之前做个对比,看看有没有被意外擦除或改变的
JIUGEN LI:
回复 灰小子:
我刚才各种加串口打印发现问题的出现是因为插上电池会进入一个射频接收中断,然后进入射频接收函数,从这函数出来之后就把一些标志位都变成了0XFF,导致很多条件满足,我现在在搞不清的是为什么平时复位不会进这个中断,而这种情况下每次测试都会进入这个中断。我把这个中断失能之后就正常了
Susan Yang:
回复 JIUGEN LI:
建议您给出相关的代码
另外您现在用的是什么无线芯片呢?TI有结合MSP430和wireless的CC430
灰小子:
回复 JIUGEN LI:
可能插入电池的时候有波动引了起射频复位,你用示波器观察一下看看
TI中文支持网



