MSP430G2553 定时器中断实例

发布者:csydtc最新更新时间:2018-07-11 来源: eefocus关键字:MSP430G2553  定时器  中断 手机看文章 扫描二维码
随时随地手机看文章

代码


#include "MSP430G2553.h"


void led_init();

void timer0_init();


void main( void )

{

  // Stop watchdog timer to prevent time out reset

  WDTCTL = WDTPW + WDTHOLD;


  //--配置时钟-----

  BCSCTL1=CALBC1_1MHZ;

  DCOCTL=CALDCO_1MHZ;


  //--LED初始化----

  led_init();     


  //--定时器0初始化----

  timer0_init();


  //---开中断------

  _EINT();      //开中断


  LPM3;



}


/*

 *    定时器0中断函数

 */

#pragma vector=TIMER0_A0_VECTOR

__interrupt void Timer0_A0(void)    //TACCR0中断

  P1OUT^=(1<<6);    //LED反转

}


#pragma vector=TIMER0_A1_VECTOR

__interrupt void Timer0_A1(void)    //TACCR1中断,TACCR2中断和TA0溢出中断共用一个中断向量

  switch(TAIV)

  {

  case 2:                           //TACCR1中断

    P1OUT^=(1<<6);    //LED反转

    break;

  case 4:                           //TACCR2中断

    P1OUT^=(1<<6);    //LED反转

    break;

  case 10:                          //TAIFG 溢出中断

    P1OUT^=(1<<6);    //LED反转

    break;

  default:

    break;

  }


}


// LED 初始化

void led_init()

{

  P1DIR|=(1<<6);  

}


// 定时器初始化

void timer0_init()   

{

  /*

   *设置TIMER_A的时钟

   *TASSEL_0: TACLK,使用外部引脚信号作为输入

   *TASSEL_1: ACLK,辅助时钟

   *TASSEL_2: SMCLK,子系统主时钟

   *TASSEL_3: INCLK,外部输入时钟 

  */

  TACTL |= TASSEL_1;    


  /*

   *时钟源分频

   *ID_0: 不分频

   *ID_1: 2分频

   *ID_2: 4分频

   *ID_3: 8分频

   */

  TACTL |= ID_0;    


  /*

   *模式选择

   *MC_0: 停止模式,用于定时器暂停

   *MC_1: 增计数模式,计数器计数到CCR0,再清零计数器

   *MC_2: 连续计数模式,计数器增计数到0XFFFF(65535),再清零计数器

   *MC_3: 增减计数模式,增计数到CCR0,再减计数到0

   */

  TACTL |= MC_1;  //增计数模式


  //----计数器清零-----

  TACTL |= TACLR; 


  //----设置TACCRx的值-----

  //TACCR0=32768-1;     //时钟是32.768K,那么值设为32678-1 

  TACCR0=30000;

  TACCR1=10000;         //TACCR1和TACCR2要小于TACCR0,否则不会产生中断 

  TACCR2=20000;


  //----中断允许----

  TACCTL0 |= CCIE;      //TACCR0中断

  TACCTL1 |= CCIE;      //TACCR1中断

  TACCTL2 |= CCIE;      //TACCR2中断

  TACTL |= TAIE;        //TA0溢出中断


}


注意事项


  需要注意的是在增计数模式时CCR1和CCR2的值应该小于CCR0,否则CCR1和CCR2不会产生中断。 并且每次CCR1和CCR2中断后要把它们重新赋值这样才能保证CCR1和CCR2的中断间隔时间不变。 

  类似语句如下: 

  CCR1 += 100; 

  if ( CCR1 >= 32768 ) 

    CCR1 -= 32768;


关键字:MSP430G2553  定时器  中断 引用地址:MSP430G2553 定时器中断实例

上一篇:单片机MSP430 - 定时器Timer_A
下一篇:MSP430G2553 WDT的定时器模式例子

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

中断调用方式的ARM二次开发接口设计
随着信息技术的飞速发展,基于ARM芯片的可编程智能嵌入式设备在我们的日常生活中扮演着越来越重要的角色。由于程序的设计者在设计软件程序和功能的时候,所针对的对象是社会上的通常情况,并没有根据最终不同的使用者来加以设计,因此各个软件的实际使用者在使用软件时会根据自己的使用要求和市场需求预测,对软件再加以开发,即俗称的二次开发 。如今,Android系统和苹果产品等都给用户提供开发平台,便于用户开发自己的程序。为了适应用户简易嵌入式应用程序的开发,缩短二次开发周期,开发一种低成本的专用嵌入式二次开发工具就显得十分必要。其中,二次开发工具最重要的部分就是二次开发接口的设计。   通过对现有嵌入式二次开发技术的研究发现3个问题。问题一
[单片机]
<font color='red'>中断</font>调用方式的ARM二次开发接口设计
第八节:在定时中断函数里执行独立按键的扫描程序
开场白: 上一节讲了在主函数中利用累计定时中断的次数来实现独立按键的检测,但是如果在某些项目中,需要在主函数里间歇性地执行一些一气呵成的耗时任务,当主函数正在处理一气呵成的耗时任务时(前提是没有关闭定时器中断),这个时候如果有按键按下来,就有可能没有及时被响应到而遗漏了。在定时中断函数里处理独立按键的扫描程序,可以避免这个问题。要教会大家一个知识点:如何在上一节的基础上,略作修改,就可以在定时中断函数里处理独立按键的扫描程序。 具体内容,请看源代码讲解。 (1)硬件平台:基于朱兆祺51单片机学习板。用矩阵键盘中的S1和S5号键作为独立按键,记得把输出线P0.4一直输出低电平,模拟独立按键的触发地GND。 (2)实现
[单片机]
STM32中断系统笔记
CM3中 STM32参考教程: STM32开发指南V1.0库函数版
[单片机]
STM32<font color='red'>中断</font>系统笔记
快速学Arm(19)--中断向量控制器VIC[1]
技术生涯,半生荣辱,每天都是生活在痛并快乐中,我讨厌的东西总是不得不天天面对,麻木和无所谓也就是这样产生的.但对于技术的好奇和追求是我下半生依然不会停止的事情,虽然驽钝,只要每日有所得,也有所追求足以. 这两天在忙于另外一个程序,由于上家的延误,使我又有了点空闲,继续来学习已经不是新事物的新事物.:-) 前几天决定了从简单的单任务Arm程序学起,放下手中的uC/OS-II书籍,发现手中又少了可以阅读的东西.好在网上有很多可以参考的资料,只是这些资料不是专为LPC2400写的.不过没关系,手里还有LPC2400的datasheet,对照的看就可以了.Arm的原理大同小异,只是型号之间有所区别罢了. 下面的这本书对初学者很有
[单片机]
PIC单片机-定时器的应用
一、利用定时器Timer0的定时功能,设计一个倒计时,显示在数码管上。 #include htc.h #define uint8 unsigned char #define uint16 unsigned int #define SCK_595 RA5 #define RCK_595 RE0 #define SER_595 RC0 __CONFIG(WDTDIS & LVPDIS & HS & PWRTDIS & BORDIS);//设置配置位 //WDTDIS:disable watchdog timer 看门狗禁止 //LVPDIS:low voltage programming disabled
[单片机]
课程作业记录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
[单片机]
课程作业记录6:MSP430G2553+LCD1602字符滚动
STM32-EXTI中断的分析及应用
EXTI中断/事件控制器,管理了控制器的20根中断/事件线。每个对应了一个边沿检测器,可以实现输入信号的上升沿或者下降沿检测,EXTI可以实现对每个中断或者事件的单独配置 这里中断通常是指GPIO的中断 事件可以是AD/DA转换 TIM定时器等··· 通过书上的EXTI 功能框图可以清楚的知道配置EXTI中断的具体过程 这里拿EXTI控制GPIO为例: 编程要领: 1)初始化用来产生中断的GPIO 2)初始化EXTI 3)配置NVIC 4)编写中断函数 这里只贴出配置EXTI和中断函数的编写: void EXTI_Key_config(void) { GPIO_InitTypeDef
[单片机]
STM32-EXTI<font color='red'>中断</font>的分析及应用
stm32定时器优先级
什么是优先级   优先级是具有高抢占式优先级的中断可以在具有低抢占式优先级的中断处理过程中被响应,即中断嵌套,或者说高抢占式优先级的中断可以嵌套低抢占式优先级的中断。   当两个中断源的抢占式优先级相同时,这两个中断将没有嵌套关系,当一个中断到来后,如果正在处理另一个中断,这个后到来的中断就要等到前一个中断处理完之后才能被处理。如果这两个中断同时到达,则中断控制器根据他们的响应优先级高低来决定先处理哪一个;如果他们的抢占式优先级和响应优先级都相等,则根据他们在中断表中的排位顺序决定先处理哪一个。 stm32定时器优先级   STM32 可以支持的 68 个外部中断通道,已经固定的分配给相应的外部设备。每个中断通道都具备自己
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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