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

2011-11-14 12:06 3321 12 23 分类: 消费电子

     前两天做的一个项目,本来插上仿真器运行程序没一点儿问题,结果拔了仿真器后,断电后再上电程序总是运行到报警的状态,首先,我怀疑是复位电路的问题,结果查了一下资料发现复位电路没有问题,再说了,如果是复位电路的问题,那每次上电后都运行到超时报警的状态好像也不太像是复位的问题吧!然后,用示波器观察程序运行过程中系统电源的波形图,结果发现有一瞬间电源电压被急剧拉低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分配内存后,在拔下仿真器的情况下程序也正常了。虽然到现在为止我都没想明白这是为什么,不过还是写下我的第一篇博客来记录一下!

PARTNER CONTENT

文章评论11条评论)

登录后参与讨论

用户1586985 2011-12-23 12:33

我以前做的一个项目也遇到电压跌落的问题,我用的是PIC的单片机,正常VCC为3V,当单片机驱动无线模块时,电压会跌落到2V左右。用稳压电源给系统供电,工作正常,换用电池以后就出问题,老是复位。后来发现原来是给单片机配置了低电压复位引起的,去掉这个配置项以后,就一切正常了。 不了解MSP430,不知道会不会有同样问题。

用户1637762 2011-12-7 15:52

应该是程序驱动的外部电路引起了电源系统的大幅度波动。

用户1014648 2011-11-30 14:22

如果是系统电压会在启动和运行其发生聚变,那么一定是供电电路的设计有问题。也许楼主可以通过软件进行修正,但是这绝对不是正确的解决方法。修改外围电路的设计才是正路,这样的情况,业务加一个恰当的滤波电容作为储能器件就可以保证系统工作正常。

用户1277994 2011-11-29 21:20

今天看到一宝马车的广告,就是主打能够在车上免提使用苹果IPHONE4,我的神哪,这可以我见到的最贵的苹果手机周边产品了

用户1576210 2011-11-26 18:47

额,我之前搞51的也用过动态内存分配的说。。。

用户1326533 2011-11-18 12:56

这个习惯mallo很好啊只是只能分配一次吧

462629051_256703759 2011-11-18 08:39

动态内存的分配方案是一个做上层应用的同事的主意,不过,我想知道各位做单片机开发的网友,在定义指针时如何分配内存?

用户1634829 2011-11-18 08:37

在430这样的小系统中使用动态内存分配,亏楼主想得出来。楼主是不是做PC程序的?以前没接触过嵌入式系统?

用户1602177 2011-11-16 19:07

希望有经验的工程师朋友们来分析一下~~

462629051_256703759 2011-11-16 08:37

应该说这个问题涉及到单片机程序开发中指针的应用方法,由于以前很少用到这样的指针,所以,出现了使用指针而没分配内存的情况,不知道各位博友都是怎么使用指针的?还有有一点儿我不明白,为什么插上仿真器的时候不用给指针分配内存就可以而拔下仿真器就不行了呢?
相关推荐阅读
462629051_256703759 2014-06-08 21:56
产品研发的一点想法
        产品研发的核心是产品,研发是为了实现产品,所以能够快速设计出稳定的产品才是研发的目的。通过对比自己身边的一些项目产生了一些想法,总体来说就是尽可能采用半导体厂商的最成熟方案尽可能和...
462629051_256703759 2014-03-01 12:34
LED子系统
        Linux驱动中已经将led驱动作为一个子系统来实现了,针对Tiny210采用通用IO口来控制led的情况,linux采用platform驱动来实现led子系统,因此我们可以通过l...
462629051_256703759 2014-02-27 22:47
git入门
15.1、安装git $sudo apt-get install git $sudo apt-get install git-core 更新git $git clone git:/...
462629051_256703759 2014-02-27 15:05
Vim + Ctags + Taglist组合
12.1、Ctags和Taglist插件的安装: 12.1.1、Ctags插件的安装:sudo apt-get install ctags 12.1.2、Taglist插件的安装:首先下载...
462629051_256703759 2013-09-23 15:57
改善电源负载瞬态响应性能的设计方法
        以前对电源芯片的理解停留在输出电压是否满足需求、输出电流是否满足负载等一些静态的参数上,但是后来发现即使这些参数满足要求所选用的电源芯片有可能还是不能满足负载瞬变时的波动,所以就查...
462629051_256703759 2013-09-05 14:33
MSP430两种串口升级方式对比
        早上收到网友咨询MSP430单片机串口升级问题的邮件,因为不是第一次收到这样的帮助请求,于是便把自己做过的两种串口升级方式做一对比希望对此问题感兴趣的工程师朋友可以从中受益,也希望...
EE直播间
更多
我要评论
11
12
关闭 站长推荐上一条 /3 下一条