代码
#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;
上一篇:单片机MSP430 - 定时器Timer_A
下一篇:MSP430G2553 WDT的定时器模式例子
推荐阅读最新更新时间:2024-03-16 16:08
设计资源 培训 开发板 精华推荐
- 希润医疗孟铭强:手功能软体机器人,让脑卒中患者重获新生
- 柔灵科技陈涵:将小型、柔性的脑机接口睡眠设备,做到千家万户
- 微灵医疗李骁健:脑机接口技术正在开启意识与AI融合的新纪元
- USB Type-C® 和 USB Power Delivery:专为扩展功率范围和电池供电型系统而设计
- 景昱医疗耿东:脑机接口DBS治疗技术已实现国产替代
- 首都医科大学王长明:针对癫痫的数字疗法已进入使用阶段
- 非常见问题解答第223期:如何在没有软启动方程的情况下测量和确定软启动时序?
- 兆易创新GD25/55全系列车规级SPI NOR Flash荣获ISO 26262 ASIL D功能安全认证证书
- 新型IsoVu™ 隔离电流探头:为电流测量带来全新维度
- 英飞凌推出简化电机控制开发的ModusToolbox™电机套件