首页 资讯 应用 高压 设计 行业 低压 电路图 关于

单片机

旗下栏目: PLC 嵌入式 单片机 DCS

在IAR中定义大数组变量,导致程序不能运行的解决办法

单片机 | 发布时间:2018-11-02 | 人气: | #评论# | 本文关键字:IAR,变量
摘要:在 IAR 中定义大数组变量,导致程序不能运行的解决办法总结,MSP430 大数组定义,不能正常运行的问题 定义太大的 RAM,那就有可能会遇到 RAM 中定义的变量/数组在超过一定范围的时候,MSP程序不能

在 IAR 中定义大数组变量,导致程序不能运行的解决办法总结,MSP430 大数组定义,不能正常运行的问题

定义太大的 RAM,那就有可能会遇到 RAM 中定义的变量/数组在超过一定范围的时候,MSP程序不能正常运行的现象吧.一般初步判断,可以用 I/O 输出电平来确定程序进程.这样可以非常方
便的知道该问题是由于 WDT 造成的,(RAM 的初始化时间大于 WDT 默认的 32MS 时间,因此 MSP复位),下面来看下解决的办法:

A、 对数组用 __no_init 定义,上电编译器不产生特殊的附加函数去初始化RAM
例:__no_init u8 GprsTXBuf[1000]; 注意关键字以两个下划线开头,尾部没有下划线,中间一个下划线。

B 、修改 IAR 中 Cstartup.S43 文件中__program_start 子程序,增加一个关闭 WDT 的操作或者设置 WDT 时间长度超过 32MS。(建议不到万不得已,不要改这个文件!)
文件地址:IAR Systems\Embedded Workbench 6.0 Evaluation\430\src\lib\430

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

上述是已知解决 RAM 初始化时间超 WDT 默认而复位的解决方法

一般编译器中 C 项自动开启,只要加上 A 项就可以解决问题,B 项在不清楚的情况下,不建议做修改。


责任编辑:IAR定义大数组变量
首页 | 电气资讯 | 应用技术 | 高压电器 | 电气设计 | 行业应用 | 低压电器 | 电路图 | 关于我们 | 版权声明

Copyright 2017-2018 电气自动化网 版权所有 辽ICP备17010593号-1

电脑版 | 移动版 原创声明:本站大部分内容为原创,转载请注明电气自动化网转载;部分内容来源网络,如侵犯您的权益请发送邮件到[email protected]联系我们删除。