msp430学习笔记之中断处理函数

发布者:大树下的大白菜y最新更新时间:2018-07-11 来源: eefocus关键字:msp430  中断处理函数 手机看文章 扫描二维码
随时随地手机看文章


//本平台 msp430f149 

#include

 

void select_xt2(void){

unsigned char i;

/*------选择系统主时钟为8MHz-------*/

    BCSCTL1 &= ~XT2OFF;                 //打开XT2高频晶体振荡噿    

do{

        IFG1 &= ~OFIFG;                 //清除晶振失败标志

        for (i = 0xFF; i > 0; i--);     //等待8MHz晶体起振

    }while ((IFG1 & OFIFG));             //晶振失效标志仍然存在_

    BCSCTL2 |= SELM_2 + SELS;           //MCLK和SMCLK选择高频晶振

 

}

 

void main(){

WDTCTL = WDTPW + WDTHOLD;

select_xt2();

P2DIR = 0x80;

P2OUT = 0xff

CCTL1 = CCIE;                         // CCR1 中断使能

    CCR1 = 10000;

    TACTL = TASSEL_2 + MC_2 + ID_3;   // SMCLK = 1MHz, 连续计数模式

    _EINT(); //打开全局中断

while(1){

if(count == 50){

count = 0;

P2OUT ^= BIT7;                   //led灯每0.5s变化一次

}

}

 

}

 

 

#pragma vector=TIMERA1_VECTOR

__interrupt void Timer_A1(void)

{

CCR1 += 10000;                    // 

count ++;

 

}


昨天写了一段这样的代码,本想用定时器a 每0.5s控制led灯状态,发现程序运行不符合预期效果,仔细检验发现根本就没有进中断,count 值不变。先贴上可用的代码,再仔细分析

修改后的中断处理函数:


#pragma vector=TIMERA1_VECTOR

__interrupt void Timer_A1(void)

{

switch(TAIV){

case 2:

CCR1 += 10000;                    // 

count ++;

}

}

这两个中断处理函数区别在修改后的多用了switch语句,里面还有TAIV,也就是中断向量值



仔细阅读数据手册,发现TAIFG的中断入口地址是TIMERA1_VECTOR,同时也是TACCR1和//TACCTR2的CCIFG的入口地址。TACCRO单独使用TIMERA0_VECTOR。从官方给出的代码,使用TACCR1事中断函数里面也有switch语句,结合上面这个图,分析中断处理代码,执行


switch(TAIV)

不难发现,TAIV是与CCIFG所在的向量值匹配,也就是查询中断向量,提供一个入口地址,


执行后case语句的代码,现在可以理解未修改之前中断处理函数count值为改变的原因。


以上都是本人结合官方的源码和数据手册做出的分析,如有出入的地方,欢迎指正!


关键字:msp430  中断处理函数 引用地址:msp430学习笔记之中断处理函数

上一篇:msp430学习笔记之定时器A
下一篇:MSP430G2553时钟系统配置

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

MSP430F149的TIMERA定时中断理解
代码如下: //本平台 msp430f149 #include io430.h #include in430.h volatile unsigned char count = 0,flag = 0; void select_xt2(void){ unsigned char i; /*------选择系统主时钟为8MHz-------*/ BCSCTL1 &= ~XT2OFF; do{ IFG1 &= ~OFIFG; //清除晶振失败标志 for (i = 0xFF; i 0; i--); //等待8MHz晶体起振 }while ((IFG1
[单片机]
MSP430F5438 看门狗实验
简介: 1,学会在定时器和看门狗模式下操作 WDT,了解 WDT 寄存器的配置 2,编程实现WDT 定时功能,WDT 时钟源来自 ACLK,且 ACLK 无失效来自 XT1 晶体 3,实现功能:250ms 定时,每 250ms LED1 亮灭交替闪烁 1,看门狗介绍 看门狗定时器是一个32位的定时器它可以作为看门狗或定时器使用所有F5XX系列的器件中都有增强型看门狗定时器—WDT_A。 什么是看门狗? 从字面的意思理解,看门狗帮我的系统看门,防止我的系统到处乱跑。在实际嵌入式系统中看门狗也是充当这个角色的。看门狗,简称WDT,很明显它实际上是一个定时器,就如同我们所讲的Timer_A3亦或是Timer_B7系统一样,
[单片机]
<font color='red'>MSP430</font>F5438 看门狗实验
MSP430驱动OV7670摄像头的程序和注意事项
再用MSP430 调试摄像头时,其实按照网上给的步骤完全可以实现,只是我们很少注意一些细节上的问题,导致最终效果出不来,看着液晶屏上要么一直一种颜色,要么就是乱码,要么就是只有物体轮廓,我感觉后两种情况还算好吧,至少离成功不远了。 1、一般带FIFO的摄像头模块引脚一般在18-22个之间,但有的引脚是一般不用接,比如行扫描同步信号,还有闪光灯,还有低功耗之类的,这些不用在意, 接线极其重要,不要看着人家给的例子上面的标号来接你的摄像头,因为淘宝上的摄像头很多,每家店之间的都有可能不同,比如我同学的的是18脚的,我的是22脚,我的,我们 的两个摄像头上的引脚名称有好几个都不一样,有的尽管一样但是可能会误导你,还是看看买摄
[单片机]
基于MSP430单片机的嵌入式手持数据采集系统
简介:uC/OS在手持数据采集系统的成功应用为手持设备软件系统的设计探索了一条新的道路。使用uC/OS设计嵌入式软件克服了传统的前后台式的软件设计方法的弊端,提高了系统的实时性和稳定性,使得软件系统代码模块化,更进一步增强了系统升级扩展的能力。未来,在嵌入式系统软件设计中uC/OS的应用领域必将变得更加的广泛。 本数据采集系统主要是使用TI公司的MSP430单片机与嵌入式系统uC/OS相结合而设计的,uC/OS在手持数据采集系统的成功应用为手持设备软件系统的设计探索了一条新的道路。使用uC/OS设计嵌入式软件克服了传统的前后台式的软件设计方法的弊端,提高了系统的实时性和稳定性,使得软件系统代码模块化,更进一步增强了系统升级扩展
[单片机]
基于<font color='red'>MSP430</font>单片机的嵌入式手持数据采集系统
MSP430F5529 DriverLib 库函数学习笔记(八)模数转换模块(ADC12)
平台:Code Composer Studio 10.3.1 MSP430F5529 LaunchPad™ Development Kit (MSP‑EXP430F5529LP) 硬知识 模数转换概述 在MSP430单片机的实时控制和智能仪表等实际应用系统中,常常会遇到连续变化的物理量,如温度、流量、压力和速度等。利用传感器把这些物理量检测出来,转换为模拟电信号,再经过模数转换模块(ADC)转换成数字量,模拟量才能够被MSP430单片机处理和控制。 1.模数转换基本过程 首先连续时间输入信号x(t)输入ADC的采样保持器中,ADC每隔Ts(采样周期)读出一次x(t)的采样值,对此采样值进行量化。量化的过程是将此
[单片机]
<font color='red'>MSP430</font>F5529 DriverLib 库<font color='red'>函数</font>学习笔记(八)模数转换模块(ADC12)
msp430f5529 uart pwm adc
//msp430f5529的串口使用程序使用示例 //--------------------------------------------- uart 头文件 -------------------------------------------------------------// #ifndef UART_H_ #define UART_H_ #include msp430f5529.h #include config.h //默认为115200 void USCIA0_Init(void); void USCIA0_SendChar(u8 c); u8 USCIA0_ReceiveChar(
[单片机]
基于msp430f169的蓝牙风扇可调速程序
设计做的,比较简单,手机通过UART连接单片机,PWM可任意调速,注意风扇的驱动电压。 #include msp430f169.h #include lcd12864.h #include PWM.h #include UART.h #include adc.h unsigned char key = 0; unsigned char Statu = 0; unsigned int a = 0; #pragma vector=USART0RX_VECTOR __interrupt void USART0_RX_ISR(void) { unsigned char data=0; data=U0RXBUF;
[单片机]
FLASH在MSP430F149嵌入式系统中的应用
NAND Flash是采用NAND结构技术的非易失存储器,具有ROM存储器的特点,存储在该芯片中的数据可在断电情况下维持10年不丢失,而芯片的引脚与访问又具有类似于RAM的特点。NAND FLASH 存储器将数据线与地址线复用为8条线,另外还分别提供了命令控制信号线,因此,NAND FLASH 存储器不会因为存储容量的增加而增加引脚数目。从而极大方便了系统设计和产品升级。 1 元件介绍 1.1 MSP430芯片 MSP430系列单片机是TI公司推出的16位RISC系列单片机,该系列是一组超低功耗微控制器,供电电压范围为1.8V—3.6V。考虑到本系统有微体积、低功耗的要求,在此选用MSP430F149,它具有60KB
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

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