用IAR仿真msp430f5438a出现问题,急待解决

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用IAR仿真msp430f5438a出现问题,急待解决相关的知识,希望对你有一定的参考价值。

程序在刚开始调试的时候还没问题,但随着程序不断变大,现在将程序烧写进芯片后,程序不象一前一样停在main函数的起始位置,而是一直在运行,暂停运行后发现程序在一个_DATA16_MEMZERO的函数里一直循环。不知道我在什么地方出问题了啊?是我哪里设置错了么?请高手指点

我没遇见这个问题我感觉以下两个办法可以帮你解决:
一:可能原因同Q6
Q6:当在RAM 中对其中一变量开辟的尺寸是512 字节时,程序总占用3.5KRAM 空间,可以正常烧到芯片中,
也可以正常运行;
当对同一变量开辟的尺寸是1024 字节,而其它均未改变时,程序总占用4.0K左右RAM 空间,可以正常烧到芯
片中,却无法运行!!!!
A6:方法一将一些变量定义成no init 类型
方法二修改IAR 的cstartup.s43 程序,具体方法如下:(iar310a为例)
1 将cstartup.s43 程序加载到用户自己的项目中,cstartup.s43在iar310a的路径如下$TOOLKIT_DIR$\src\LIB\
2 修改cstartup.s43 中的__program_start子程序,加入关闭看门狗的命令MOV#0x5A80,&0x0120
3 在Project->Options->Linker->Config 页中选择Override default programe ,并将Entry lib 设置成
__program_start
二:堆栈设计太小,修改堆栈
改堆栈是在你工程的Options里面。首先在Workspace窗口右键单击你的工程,然后选择第一项"Options",或者选在上面菜单中选择Project->Options也可以进入这个选项。在Options里面第一个General Options中,有一堆选项卡,第五个选项卡(就是Library Options再向右一个)就是Stack/Heap,用来调整堆和栈的大小的。调的时候先在Override Default前面打钩。如果你用的是地址线没有扩展的MCU版本,则只有Stack Size 和Heap Size 两个选项可以选择。如果你是用的是较新的F5系列扩展地址线版本MCU,则还可以设置Data20 Heap Size.具体怎么设要根据你的应用需求。如果你需要自己申请用来存放Data20类型的数据,就需要把Data20 Heap Size设大一点。如果存放普通的数据那么只需要更改Stack Size和Heap Size。

Stack和Heap的区别有问题吗?如果不清楚的话上百度输入“堆和栈的区别”自己看吧。根据你的应用到底是堆空间要求多一些,还是栈空间要求多一些,给Stack Size和Heap Size分配不同大小的Size。

最后你可以参加一下文档:MSP430常见问题汇总(利尔达).pdf
参考技术A 你用的是在线仿真功能是吗,你试试单步调试程序,然后观察下,程序是不是只在你说的函数中循环,如果是,确定引起循环的变量是否改变。确定后,再去寻找改变这个变量的参数,应该就可以找到跳出循环的方法了。

IAR调试查看程序时间

在无仿真器情况下设置:

技术图片

 

调试仿真,点击view菜单下registers

 技术图片

 

 技术图片

 

 软件仿真时计算两断点CYCLECOUNTER(在CPU registers中)的差值,乘以指令周期(MCLK)便是执行时间

以上是关于用IAR仿真msp430f5438a出现问题,急待解决的主要内容,如果未能解决你的问题,请参考以下文章

模糊PID控温算法的具体实现:MSP430F5438A怎么实现查表法

MSP430单片机能用啥软件仿真?

哪一个仿真软件支持msp430f149啊?推荐一个啊

MSP430单片机能用啥软件仿真?

加分!MSP430单片机可以不用仿真器,直接用USB线和电脑连接,用IAR软件生成文件后,用MSPFET软件烧程序嘛?

如何用proteus仿真msp430f149,元件库里没有该咋办啊???求指导。。。