直接设置:
TA0CCTL0 = CCIE; // CCR0 interrupt enabled
TA0CCR0 = 1000;//意思是周期为1000ms=1Hz
TA0CTL = TASSEL_2 + MC_1 + TACLR; // 选择时钟源SMCLK,+递增模式upmode:计时器递增计数到 TAxCCR0+clear TAR
间接?(利用封装好的函数)
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。
上一篇:MSP430F5529定时器中断
下一篇:基于MSP430G2553的闹钟
推荐阅读最新更新时间:2024-11-12 20:28
设计资源 培训 开发板 精华推荐
- SG1548L 电压监控器的典型应用电路
- LF33CPT-TR 3.3V 低压降稳压器的典型应用
- 使用符合 EN55022 B 类(110Vin 单输出)EMC 滤波的 RP40-11015DFR DC/DC 转换器的典型应用
- 使用 IXYS 的 CPC9909 的参考设计
- LT3091IDE 浮动 3 端子稳压器的典型应用,适用于任意高电压应用
- LT1072CT 负至正降压-升压转换器的典型应用
- DC2215A,基于 LTC3126UFD 42V、2.5A 同步降压稳压器和无损电源路径的演示板
- 4通道可配置方向单端信号差分信号转换模块
- LT6402-12 的典型应用 - 300MHz 低失真、低噪声差分放大器 / ADC 驱动器 (AV = 12dB)
- QC3.0充电头变身可调电源第二版