MSP430 TIMER_A定时器设置示例

(先记下来,以后看,说不定就会了呢)
问题很多,咱啥都不懂,能看出欢迎讨论哈~

  1. 直接设置:
 TA0CCTL0 = CCIE;                          // CCR0 interrupt enabled
 TA0CCR0 = 1000;//意思是周期为1000ms=1Hz
 TA0CTL = TASSEL_2 + MC_1 + TACLR;         // 选择时钟源SMCLK,+递增模式upmode:计时器递增计数到		TAxCCR0+clear TAR
  1. 间接?(利用封装好的函数)
void SMCLK_XT2_4Mhz(void)
{

    P7SEL |= BIT2+BIT3;                       // Port select XT2
    UCSCTL6 &= ~XT2OFF;          // Enable XT2
    UCSCTL6 &= ~XT2OFF + XT2DRIVE_1;          // Enable XT2
    UCSCTL3 |= SELREF_2;                      // FLLref = REFO
                                              // Since LFXT1 is not used,
                                              // sourcing FLL with LFXT1 can cause
                                              // XT1OFFG flag to set
    UCSCTL4 |= SELA_2;                        // ACLK=REFO,SMCLK=DCO,MCLK=DCO

    // Loop until XT1,XT2 & DCO stabilizes - in this case loop until XT2 settles
    do
    {
      UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + XT1HFOFFG + DCOFFG);
                                              // Clear XT2,XT1,DCO fault flags
      SFRIFG1 &= ~OFIFG;                      // Clear fault flags
    }while (SFRIFG1&OFIFG);                   // Test oscillator fault flag

    UCSCTL6 &= ~XT2DRIVE0;                    // Decrease XT2 Drive according to
                                              // expected frequency
    UCSCTL4 |= SELS_5 + SELM_5;               // SMCLK=MCLK=XT2
}

再经过分频,配置寄存器等等,来获得所需要的时间的定时器???(寄存器的配置自己看手册配)

SMCLK_XT2_4Mhz();//设置SMCLK使用XT2, 频率为4MHz

UCSCTL5|=DIVS__32;//使用USC统一时钟系统进行预分频,将SMCLK进行32分频

 TA0CTL |=TASSEL_2 + MC_1 + TACLR;//配置A0计数器,时钟源SMCLK,上升模式,同时清除计数器//*配置计数器
 //TASSEL_2选择了SMCLK,MC_1计数模式,,最后清零TACLR
 //TA0EX0 |= TAIDEX_1;//A0计数器分频,2分频
 TA0CCTL0 = OUTMOD_2 + CCIE;//捕获比较寄存器0输出,输出模式为2,同时使能定时器中断(CCR0单源中断),CCIE捕获比较寄存器的使能配置
 TA0CCR0 = 5;//捕获比较寄存器0//配置捕获比较器

4MHz经过32分频后得到125000Hz,相当于得到的定时器中断为(TA0CCR0/125000)s,在这里就是1/25000s也就是25000Hz一个中断周期?
计数器每次计数到TA0CCR0时产生中断

附上中断服务函数,然后不要忘了使能全局中断
在这里插入图片描述
在这里插入图片描述
GIE实际上是CPU中的SR(Status Register)寄存器中的一位。SR(Status Register)寄存器主要用来记录指令的工作状态。
这句的意思是将SR的GIE位设置为1,bis即bit set。
对应的关全局中断操作是
即将SR的GIE位清除,置0。bic即bit clear。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值