F1611大数组定义,不能正常运行的问题


相信有不少朋友已经用上了 F1611,这个 RAM 大大的 MSP,呵呵.那就有可能会遇到 RAM中定义的变量/数组在超过一个极限的时候,MSP 程序不能正常运行的现象吧.一般初步判断,可以用I/O输出电平来确定程序进程.这样可以非常方便的知道该问题是由于WDT造成的,哈哈 (RAM的初始化时间大于 WDT 默认的 32MS 时间,因此 MSP 复位)


下面来看下解决的办法:

A 对你的数组用 __no init_ 定义,上电编译器不产生特殊的附加函数去初始化 RAM.

B 修改 IAR 中Cstartup.S43文件中__program_start 子程序,增加一个关闭 WDT 的操作或者设置 WDT时间长度超过32MS.

C 在Project--Options--Linker--Config中选择 Override default programe,并将 
Entry lib 设置成 __program_start.

上述是已知解决 1611RAM 初始化时间超 WDT 默认而复位的解决方法,如果用汇编,则没有这个问题.

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

__no init_ : Use the _ _no_init keyword to place a data object in non-volatile memory. This means that the initialization of the variable, for example at system startup, is suppressed.



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值