1604|0

2015

帖子

0

TA的资源

纯净的硅(中级)

楼主
 

MSP430定义超大数组的问题 [复制链接]

按照IAR的这个方法,如果你觉得添加文件麻烦,实际上最简单的是,自己编写一个 __low_level_init 函数, 就行了, 这个函数不需要你在主函数里面调用, 这个函数会被编译器编译在程序的最开始部分。

下面是我写的一个简单的程序,测试通过,供参考:

#include "msp430f5438.h"  
unsigned char buffer0[10240];  
void main(void)  
{  

  unsigned int i;

  P5SEL |= 0x0C;                            // Port select XT2  
  UCSCTL6 &= ~XT2OFF;                       // Enable XT2  
  UCSCTL3 |= SELREF_2;                      // FLLref = REFO  
                                            // Since LFXT1 is not used,  
                                            // sourcing FLL with LFXT1 can cause  
                                            // XT1OFFG flag to set  
  UCSCTL4 |= SELA_2;                        // ACLK=REFO,SMCLK=DCO,MCLK=DCO

  // Loop until XT1,XT2 & DCO stabilizes  
  do  
  {  
    UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + XT1HFOFFG + DCOFFG);  
                                            // Clear XT2,XT1,DCO fault flags  
    SFRIFG1 &= ~OFIFG;                      // Clear fault flags  
  }while (SFRIFG1&OFIFG);                   // Test oscillator fault flag

  UCSCTL6 &= ~XT2DRIVE0;                    // Decrease XT2 Drive according to  
                                            // expected frequency  
  UCSCTL4 |= SELS_5 + SELM_5;               // SMCLK=MCLK=XT2

  P1DIR |= BIT0;                            // P1.0 output


  for(i=0;i<10240;i++)  
  {  
    buffer0[i] = i % 256;     
  }

  while(1)  
  {  

    for(i=0;i<10240;i++)  
      P1OUT = buffer0[i];  

  }   
}


int __low_level_init(void)  
{  
  WDTCTL = WDTPW+WDTHOLD;                   // Stop WDT  
  /* Insert your low-level initializations here */

  /*  
   * Return value:  
   *  
   *  1 - Perform data segment initialization.  
   *  0 - Skip data segment initialization.  
   */

  return 1;  
}


如上,如果没有 __low_level_init 这个函数,直接把关闭看门狗的语句写道主函数里面,单片机将永远进入不了main。

当然你也可以把所有的硬件初始化的语句写在这个函数里面,这样硬件将会在单片机复位后第一时间进行初始化。

 
点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表