[cpp] view plain copy
- </pre><pre name="code" class="cpp">
1,MSP430g2553具有两个16位的定时器:Timer0_A Timer1_A。分别具有三个捕捉/比较寄存器,具有输入捕捉,输出比较功能。可以产生定时中断,也可以产生PWM。 2,定时器A大致可分为四个功能模块:计数器、比较/捕获寄存器0、比较/捕获寄存器1、比较/捕获寄存器2.计数器是主体,它是一个开启和关闭的定时器,如果开启它就是一直在循环计数,只会有一个溢出中断,也就是当计数由0xffff到0时会产生一个中断。那怎么实现定时功能呢?这就要靠三个比较/捕获寄存器了以后用CCRx表示。CCR0比较特殊,通过他可以改变计数器的最大计数值,也就是当计数器计数到CCR0的值时自动会将计数器清零。 3,使用增计数模式实现定时器,计数器计数到CCR0,产生中断,再清零计数。 4,注意有两个中断,一个是CCIE(捕获比较中断),还有一个是TAIE(定时器溢出中断),开启CCIE [cpp] view plain copy
- <span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px;">void Timer_A0_1_init() //TA0.1定时器</span>
[cpp] view plain copy
- {
- TACTL = TASSEL_2+MC_1+ID_3+TACLR;//SMCLK,增计数 ,8分频 ,清零
- TACCTL0 |= CCIE;//输出模式为复位/置位
- CCR0=12500;//时钟频率为1/8MHZ,0.5hz
- }
|