当前位置:首页 > 单片机 > 单片机
[导读]之前做的一个项目,本来插上仿真器运行程序没一点儿问题,结果拔了仿真器后,断电后再上电程序总是运行到报警的状态,首先,我怀疑是复位电路的问题,结果查了一下资料发现复位电路没有问题,再说了,如果是复位电路

之前做的一个项目,本来插上仿真器运行程序没一点儿问题,结果拔了仿真器后,断电后再上电程序总是运行到报警的状态,首先,我怀疑是复位电路的问题,结果查了一下资料发现复位电路没有问题,再说了,如果是复位电路的问题,那每次上电后都运行到超时报警的状态好像也不太像是复位的问题吧!然后,用示波器观察程序运行过程中系统电源的波形图,结果发现有一瞬间电源电压被急剧拉低 2.2V 左右。由于电路里面有两个LDO电路,所以怀疑是LDO的使能信号开启的时候负载过大引起电压急剧下降导致单片机程序紊乱引起的,看起来好像所有的故障现象都指向这个问题了!那就多查查这方面资料吧!由于以前没用过430的单片机,所以很多东西不熟悉。在网上找到一个网友的一个帖子中说到SVS,然后仔细一看,觉得可以通过软件来修复电压剧变的问题,结果加上SVS的设置后程序依然出现报警情况。好在一个做软件的同事指出程序中一个不完善的地方,在此为了说明问题就粘贴一部分代码来说明吧! unsigned char *frame = (unsigned char *)malloc(((dsize/2)?dsizedsize+1))+7);

int len = 0;
len = Frame_form(frame,cmd,data,dsize);
Send_frame(frame,len);
free(frame);

本来定义的frame指针并没有分配任何内存,我还以为编译器可以自动进行内存分配的,并且在插入仿真器的情况下程序也确实没有什么问题,但是如果采用malloc分配内存后,在拔下仿真器的情况下程序也正常了。虽然到现在为止我都没想明白这是为什么,不过还是写下我的第一篇博客来记录一下!

====================================================================================

电源瞬间拉到2.2V是只在上电时发生,还是只在某一外设工作时发生,还是周期性的发生,在用电器件前加个大电容试试。


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭