打印

MSP430的内存分配到底有多重要?

[复制链接]
4011|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cooran|  楼主 | 2011-11-23 14:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
之前做的一个项目,本来插上仿真器运行程序没一点儿问题,结果拔了仿真器后,断电后再上电程序总是运行到报警的状态,首先,我怀疑是复位电路的问题,结果查了一下资料发现复位电路没有问题,再说了,如果是复位电路的问题,那每次上电后都运行到超时报警的状态好像也不太像是复位的问题吧!然后,用示波器观察程序运行过程中系统电源的波形图,结果发现有一瞬间电源电压被急剧拉低2.2V左右。由于电路里面有两个LDO电路,所以怀疑是LDO的使能信号开启的时候负载过大引起电压急剧下降导致单片机程序紊乱引起的,看起来好像所有的故障现象都指向这个问题了!那就多查查这方面资料吧!由于以前没用过430的单片机,所以很多东西不熟悉。在网上找到一个网友的一个帖子中说到SVS,然后仔细一看,觉得可以通过软件来修复电压剧变的问题,结果加上SVS的设置后程序依然出现报警情况。好在一个做软件的同事指出程序中一个不完善的地方,在此为了说明问题就粘贴一部分代码来说明吧!    unsigned char *frame = (unsigned char *)malloc(((dsize/2)?dsize:(dsize+1))+7);   
    int len = 0;
    len = Frame_form(frame,cmd,data,dsize);
    Send_frame(frame,len);
    free(frame);
本来定义的frame指针并没有分配任何内存,我还以为编译器可以自动进行内存分配的,并且在插入仿真器的情况下程序也确实没有什么问题,但是如果采用malloc分配内存后,在拔下仿真器的情况下程序也正常了。虽然到现在为止我都没想明白这是为什么,不过还是写下我的第一篇博客来记录一下!

相关帖子

沙发
永远的不知| | 2011-11-23 17:11 | 只看该作者
1# cooran

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

使用特权

评论回复
板凳
liliang9554| | 2011-11-23 17:35 | 只看该作者
对,加个大电容试试

使用特权

评论回复
地板
cooran|  楼主 | 2011-11-25 15:48 | 只看该作者
恩,好的 3Q!

使用特权

评论回复
5
hybzdh53| | 2012-5-14 16:54 | 只看该作者
1# cooran

代码修改为“unsigned char *frame = (unsigned char *)malloc(((dsize%2)?dsize:dsize+1))+7);”试试   

使用特权

评论回复
6
sqcumt123| | 2012-5-15 10:13 | 只看该作者
学习了,多谢楼主分享如此重要的经历

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

36

主题

1130

帖子

29

粉丝