请教msp430f5438a(IAR)中如何设置栈8字节(双字)对齐
之前使用stm32f103(mdk),需要使用如下语句(有些芯片默认已经开启栈双字对齐特性):SCB->CCR |= SCB_CCR_STKALIGN_Msk;
请教在msp430f5438a(iar)中如何开启这个特性?非常感激! msp430好像是16位机,栈是几个字节的不清楚哎,没用过,然而你真的需要去考虑栈对齐的问题吗? 本帖最后由 擦鞋匠 于 2018-8-30 13:07 编辑
wye11083 发表于 2018-8-30 10:49
msp430好像是16位机,栈是几个字节的不清楚哎,没用过,然而你真的需要去考虑栈对齐的问题吗? ...
首先,感谢阁下回复。
目前我不能确定一定就是这个原因。
额,实际上我是将之前的mdk工程转到iar工程下(因为使用msp430单片机,mdk不支持)。
我现在遇到的问题是:在no errer no waning 前提下,debug (在main()开始位置)不能出现程序光标指针,我也是一直在排查,目前还未找到真正的原因。
擦鞋匠 发表于 2018-8-30 13:06
首先,感谢阁下回复。
目前我不能确定一定就是这个原因。
这样啊,你是要在线调试么,你先查编译选项,看看debug有没有打开,然后再看看IAR怎样挂JTAG调430。肯定有办法的。 wye11083 发表于 2018-8-30 13:54
这样啊,你是要在线调试么,你先查编译选项,看看debug有没有打开,然后再看看IAR怎样挂JTAG调430。肯定 ...
非常感谢阁下指教。
额,初次接触msp430(因此也是初次接触iar),有个很棘手的问题,还想麻烦阁下指教!
我尽可能把问题描述的详细一点。
图1:
<1>图1中如果第315行代码如果注释掉(316~319行代码也注释掉),现象如图2和图3所示:可以进入main()。
<2>图1中如果第315行代码如果未注释(316~319行代码也注释掉),现象如图4和图5所示:不可以进入main(),并且汇编窗口显示<unavailable when executing>。
个人感觉不像是内存溢出或者堆栈溢出,我使用的是msp430f5438a,有16K RAM 和 256K FLASH。想请教下为什么会出现图4中的现象(似乎程序指针已经跑飞)?
图2:
图3:
图4:
图5:
static menu_item_t item_arr_m[] ->> static const menu_item_t item_arr_m[]
增加const, 把数组放到flash区,应该可以运行正确
定义看下,感觉ram 分配有问题, 看一下map文件,分析一下ram的分配 xiaomu 发表于 2018-8-30 16:33
static menu_item_t item_arr_m[] ->> static const menu_item_t item_arr_m[]
{:biggrin:}
页:
[1]