现象:程序烧录板子后,单片机不启动,卡死。注释掉部分字节数组后,才能运行。
分析:
这是IAR编译的方法,导致看门狗溢出了。MSP430单片机一上电看门狗就已经启动,但是在进入main()函数之前,软件会先初始化用到的一些数据,比如数组。如果数定义的比较大,初始化时间比较长,那就有可能导致看门狗溢出了,单片机复位,然后重启,再初始化,再溢出,再复位..程序永远也进不去主函数。
解决方法:
使用低级初始化函数:int __low_level_init(void) 。该函数会自动把低级初始化函数放在程序的最开始处,在此可以关闭看门狗,等低级初始化函数执行完之后,才会进行数据初始化,最后再进入main()函数。
void main()
{
}
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;
}
也不用调用该函数,编译器自动将其放在最开始处。
当然也可以把所有硬件初始化函数写进来,这样在进入main函数之前,把硬件都准备好了,避免了其他bug产生。
__no_init unsigned char all_25665[] ={
//4K多字节
};
关键字:MSP430 大型数组 上电不启动
引用地址:
MSP430 大型数组 上电不启动
推荐阅读最新更新时间:2024-11-05 22:06
【MSP430】ADC12_init
/*****************************TI提供的代码*****************************/ void TIADC12Init_1( void ) { ADC12CTL0 = ADC12ON+MSC+SHT0_8; // Turn on ADC12, extend sampling time // to avoid overflow of results ADC12CTL1 = SHP+CONSEQ_3; // Use sampling timer, repeated sequence ADC12MCTL0
[单片机]
msp430时钟/定时器收集的例程汇总
MSP430的时钟模块由DCOCTL, BCSCTL1, BCSCTL2, IE1, IFG1这五个寄存器来确定,具体的功能如下所示: (1)DCOCTL: DCO控制寄存器,地址为56H,初始值为60H // 7 6 5 4 3 2 1 0 // DCO2 DCO1 DCO0 MOD4 MOD3 MOD2 MOD1 MOD0 // // DCO0~DCO2: DCO Select Bit,定义了8种频率之一,而频率由注入直流发生器的电流定义 // MOD0~MOD4: Modulation Bit,频
[单片机]
msp430红外解码成功
#include msp430x22x4.h #define CPU_F ((double)1000000) #define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0)) #define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0)) #define IR_DIR_IN P2DIR&=~BIT0 //红外接收头P2.0设置为输入, #define IRIN (P2IN&BIT0) //红外接收头输入值 char data ; //保存地址码,地址反码
[单片机]
MSP430单片机上使用RTOS对系统的意义解析方案
引 言 1 在MSP430上使用RTOS的意义 一般的观点认为,MSP430上使用RTOS是没有意义的这是可以理解的。因为MSP430的硬件资源有限(以MSP430F149为例,只有2KB RAM),任何商业操作系统都不可能移植到MSP430上。目前在MSP430上得到应用的RTOS,只有μC/OS-II,但使用μC/OS-II 必须有昂贵的C编译器,这严重地限制了其在MSP430上的使用。 正是基于以上情况,笔者在应用MSP430过程中,编写了一个基于MSP430F149的RTOS,暂定名为M430/OS。它占用RAM量少、代码短小,稍加改动就可适用于大多数其它MSP430单片机。 在MSP430单片机系统上使用M430
[单片机]
课程作业记录6:MSP430G2553+LCD1602字符滚动
首先,这次实验设计中我们实现的是在LCD1602上进行的字符滚动,用的单片机是MSP430G2553,跑的软件是CCS。是一个非常简单的程序设计,但是我C语言和单片机这部分都学得很差哈哈,放上来给大家参考参考,同时鼓舞一下大家的信心。 软件程序部分 该程序主要由主程序源程序main.c、子程序源程序LCD.c和子程序头文件LCD.h构成。采用这种程序结构,使程序更加清晰,一目了然,减少程序错误的机会,增强了程序的可移植性。在程序设计中MSP430G2553中P1口作为并行数据输出端,P2.0、P2.1、P2.2分别作为LCD1602液晶的RS、RW、E端。 1)主函数main.c #include msp430g2
[单片机]
【MSP430】UART库函数
#include msp430x14x.h /********************************************************************* * 文件功能描述: * MSP430F16x,MSP430F14X系列单片机串口通讯函数库(简化版) * 说明: 这个程序库完成串口的初始化、发送字符和字符串、接收 * 使字符功能用方法:把Uart.c加入到项目,同时在要调用 * 此程序库的程序文件中加入包含Uart.h的语句;这样即可 * 正常使用头文件中声明的程序了;详细可参考 本工程 和 * main.c
[单片机]
采用MSP430F2274和TDC-GP2实现油田测量系统的设计
1 、引言 随着我国经济的快速发展,对石油的需求量越来越大,因此我国许多油田纷纷采用多种办法来提高油气产量。例如:各大油田都成立了自己的研究机构,充分利用油田自身的人才和资金的优势,研制油田钻井、测井所急需的仪器。许多油田特别是东部和东北地区的开采时间较长的油田,对油井进行二次开采,以提高油气产量等等。而对于油井的二次开采,往井下注水是现在应用广泛,且效率较高的一种方法。现在油田对注水技术的要求越来越高,近几年又提出井下分层注水。对井下分层注水参数的监测,越来越引起油田相关部门的重视。因此现在急需井下分层注水参数监测的仪器,基于这种现状,本文设计了一套检测流量、温度的电路。 2 、设计思想的提出 目前油田上使用的流量计都是存储
[单片机]
低成本模拟前端的可编程计量器件【德州仪器】
2011 年 4 月 8 日,北京讯 日前,德州仪器 (TI) 宣布针对计量与智能电网应用推出 MSP430AFE2xx 系列计量模拟前端 (AFE) 超低功耗 16 位微控制器。低成本 MSP430AFE 系列是 TI 领先的嵌入式处理产品系列的一部分,可提供业界首批多种通信接口支持的可编程单相位计量器件。该系列微控制器支持电表、家庭自动化、辅助计量以及节能系统等计量应用的系统分区,可实现高度灵活的独立高质量测量。MSP430AFE 系列建立在 16 位 RISC 架构基础之上,支持 12MHz 系统频率,系统速度是同类竞争器件的 3 倍,从而可提高功能性。3 个支持防篡改功能的独立 24 位Σ-Δ 转换器可帮助该系列
[单片机]