msp430程序跑飞原因和解决方式积累

发布者:jingyun最新更新时间:2015-11-09 来源: eefocus关键字:msp430  程序跑飞 手机看文章 扫描二维码
随时随地手机看文章
1.中断或主函数中有死循环,现象是程序停在某处。

2.堆栈溢出。现象是程序跑飞。
**************************************************************************************************

3、是否开了中断但是没有用。如:

开了中断:

  TA0CCTL0 = CCIE;                          // CCR0 interrupt enabled
  TA0CCTL1 = CCIE;                          // CCR1 interrupt enabled//时间周期1使能
  TA0CCTL2 = CCIE;                          // CCR2 interrupt enabled//时间周期2使能
  TA0CCTL3= CCIE;                          // CCR3 interrupt enabled//时间周期3使能

但是:

定时器中:

 case 4: (  TA0CCTL2 = CCIE;  )和 case 6: (  TA0CCTL3= CCIE;  )内没有处理的程序。
    

……
  case 2:
    TA0CCR1 +=1024;                // Add Offset to CCR2
    SecondReach=1;
    CountToMunite++;
    Rquestinterval++;
    SecondTimecount++;
    break;                         // CCR4 not used
  case 4: 
     break;
  case 6:
    break;
  case 8:
    break;                         // CCR3 not used
……

4、数组越界。定义的数组只有50个单元,但是程序运行的过程中,却给他赋给50+个单元。

 

解决办法:
A.看中断有没有用 _EINT(),引起中断嵌套. 
B.Project--Options--General Options---Stack/Heap 将Stack size设置大一些。     (堆栈溢出)
3.中断耗时太长,刚出中断又进去了.这时的现象是程序一直在中断中执行,回不到主函数。 (中断嵌套)
4.检查CPU的电源是不是稳定,msp430在要保证程序正常运行,需保证Vcc大于1.8V。当电压低至0.8V时,程序仍有可能执行。这时的现象是PC指针乱飞,有复位,死机,停在中断,时钟频率发生变化等现象。
5.程序编译没问题,下载程序后上电不断复位,该问题是由于WDT造成的(RAM的初始化时间大于WDT默认的32MS时间,因此MSP复位)根本原因是初始化的时间过长,超过了看门狗的时间,初始化完成以后才能进入main函数,这时关狗已经来不及了。
解决的办法:
A 对你的数组用 __no init_定义,上电编译器不产生特殊的附加函数去初始化RAM.
B 在Project--Options--Linker--Config中选择 Override default programe,并将Entry lib 设置成 __program_start这时要修改Cstartup.S43(记得把它加入复制到工程而不是修改系统的),在第一条指令前加入关狗的指令,在main函数里再开(如果需要的话)。 
如果用汇编,则没有这个问题

http://topic.csdn.net/u/20100730/09/45f212a1-0354-4b73-ad62-335b5955c0f2.html

**************************************************************************************************

 6、把无用的中断允许关掉。

关键字:msp430  程序跑飞 引用地址:msp430程序跑飞原因和解决方式积累

上一篇:MSP430 SPI接口(模式)通信
下一篇:MSP430的复位信号

推荐阅读最新更新时间:2024-03-16 14:38

MSP430F149驱动BH1750FVI程序
#include io430.h typedef unsigned int uint; typedef unsigned char uchar; /****BH1750 IO定义******/ #define SCL_H P3OUT |= BIT6//此IO在硬件上需要更改 #define SCL_L P3OUT &= ~BIT6 #define SDA_H P3OUT |= BIT7 #define SDA_L P3OUT &= ~BIT7 #define SDA_IN P3DIR &= ~BIT7 //SDA改成输入模式 #define SDA_OUT P3DIR |= BIT7 //SDA变回输出模式 #define
[单片机]
Msp430时钟设计与寄存器说明
4.1基础时钟模块+介绍 基础时钟模块+支持低系统消耗和超低功耗。采用三种片内时钟信号,用户可以选择合适 的性能和低功耗。基础时钟模块只需接一个外部电阻、一个或两个外部晶体、或者用振荡器, 通过软件控制。 基础时钟模块+有4 个时钟源: LFXT1CLK:由低频时钟晶体或外接32768Hz 时钟源产生的低频/高频振荡器或由标准晶 体、振荡器,或外部400KHz~16MHz的外部时钟源提供。 XT2CLK:可供选择的高频振荡器,由标准晶体、振荡器,或外部400KHz~16MHz 的外 部时钟源提供。 DCOCLK:片内可数字控制的振荡器。 VLOCLK:片内超低功耗、12KHz 的低频振荡器。 基础时钟模块可提
[单片机]
<font color='red'>Msp430</font>时钟设计与寄存器说明
MSP430 5xx/6xx Watchdog看门狗编程实例
看门狗定时器是一个32位定时器,可以用作看门狗或间隔定时器。 看门狗定时器模块的主要功能是在出现软件问题后执行受控的系统重启。如果超过选定的时间间隔,将生成系统复位。如果应用程序不需要看门狗功能,则模块可配置为间隔定时器,并可在选定的时间间隔内生成中断。 看门狗定时器模块的特点包括: 八个软件可选时间间隔 看门狗模式 间隔定时器模式 密码保护访问看门狗定时器控制(WDTCTL)寄存器 可选时钟源 可停止以节省电力 时钟故障保护功能 注:看门狗定时器上电时自动激活 在PUC之后,WDT_A模块自动配置为看门狗模式,初始复位间隔为32ms,使用SMCLK。用户必须在这个初始重置间隔到期之前设置或停止WDT_A。 看
[单片机]
msp430 while语句的超自然现象
#include msp430x14x.h #include cry1602.h #define uchar unsigned char #define uint unsigned int unsigned char disbuff = The Distance is: ; uchar shuzi = { 0123456789.M }; /********************************************* 超声波模块必须的变量 **********************************************/ #define csb_pjzcs 4 unsigned long cs
[单片机]
MSP430 按键程序范例(附原理图)
#i nclude msp430x14x.h void Init_Port(void) { //将P1口所有的管脚在初始化的时候设置为输入方式 P1DIR = 0; //将P1口所有的管脚设置为一般I/O口 P1SEL = 0; // 将P1.4 P1.5 P1.6 P1.7设置为输出方向 P1DIR |= BIT4; P1DIR |= BIT5; P1DIR |= BIT6; P1DIR |= BIT7; //先输出低电平 P1OUT = 0x00; // 将中断寄存器清零 P1IE = 0; P1IES = 0; P1IFG = 0; //打开管脚的中断功能
[单片机]
<font color='red'>MSP430</font> 按键<font color='red'>程序</font>范例(附原理图)
基于MSP430单片机的多路数据采集系统的设计
1 引 言 数据采集是从一个或多个信号获取对象信息的过程。随着微型计算机技术的飞速发展和普及,数据采集监测已成为日益重要的检测技术,广泛应用于工农业等需要同时监控温度、湿度和压力等场合。数据采集是工业控制等系统中的重要环节,通常采用一些功能相对独立的单片机系统来实现,作为测控系统不可缺少的部分,数据采集的性能特点直接影响到整个系统。本文设计的多路数据采集系统采用MSP430系列单片机作为MCU板的核心控制元件。MSP430系列单片机是由TI公司开发的16位单片机,其突出特点是强调超低功耗,非常适合于各种功率要求低的场合。该系统采样电路采用MSP430单片机内部12位的A/D,使系统具有硬件电路得以简单化,功耗低的特点。由于该系
[单片机]
基于<font color='red'>MSP430</font>单片机的多路数据采集系统的设计
MSP430学习笔记7-4*4键盘的对应数码管显示
这个例程也是开发板上面的一个经典例程,我对程序的框架进行了修改,更适合以后的调用。具体的4*4键盘扫描原理较为基础这里不再赘述,这里我认为比较重要的是要养成一个良好的写程序的习惯,想4*4键盘扫描这样的函数可以写成一个固定的C或者H文件,便于以后调用。先看看主程序: /*********************************************** 程序功能:扫描4X4键盘并将键值在数码管上显示 ------------------------------------------------ 测试说明:按动K1~K16按键,观察数码管显示 **************************
[单片机]
MSP430多处理器之间的通信方式及协议
在单片机系统中,多处理器是指多个相同类型或者不同类型的单片机协作处理同一个系统的不同工作。它们之间必须具备一定的数据交换和协作处理能力,共同完成一个系统化的工作。不同处理器之间可以采用数据交换方式、并行总线方式、串行总线方式进行通信。其中,数据交换方式又可以称为共享内存交换方式;串行总线方式又可以分为单总线方式、集成电路之间的通信方式和UART方式。 1 MSP430多处理器   MSP430是一款超低功耗的混合信号控制器,具有1 6位RISC结构,有着丰富的片内外设,主要包括有看门狗、定时器、比较器、硬件乘法器、液晶驱动器、ADC、I/0端口、串口(USART)等等,还集成有64 KB的Flas’E-ROM和2 KB的RAM。其
[工业控制]
热门资源推荐
热门放大器推荐
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved