刚刚开始学习msp430g2553,板子是launchpad,今天尝试着写了一个定时器的程序,程序的功能是利
- 用timer_A定时一秒使LED灯闪烁,程序如下#include <msp430g2553.h>
- void main(void)
- {
- WDTCTL=WDTPW+WDTHOLD; //关闭看门狗
- BCSCTL1|=DIVA_0;
- BCSCTL3|=LFXT1S_0;
- P1DIR|=BIT0; //设置P1.0为输出管脚。
- P1OUT&=~BIT0;
- TACTL|=TASSEL_1+ID_0+MC_1; //选择ACLK为时钟源,0分频,计数器清零,增计数器模式。
- TACTL&=~TAIFG; //清中断标志位
- TACCTL0|=CCIE;
- TACCR0=32768-1; //定时器计数寄存器初值,定时时间为1秒,初值是32767而不是32768切记
- //TACTL|=TAIE; //运行TA溢出中断
- _EINT(); //允许总中断
- while(1);
- }
- #pragma vector=TIMER0_A0_VECTOR
- __interrupt void TA_ISR(void)
- {
- P1OUT^=BIT0;
- }
复制代码这个程序工作是正常的,但是在调试过程中发现了几个问题,问题一:如果不加 TACCTL0|=CCIE;只有TACTL|=TAIE; 则进不去中断,难道定时器的溢出不能产生中断吗?问题二:如果TACCTL0|=CCIE;TACTL|=TAIE; 同时存在则LED灯很暗,不知道什么原因。希望各位多多指教,解答小弟心中的疑惑。
一周热门 更多>