定时器内部具有一个24-bit的向上计数器,计数器开始工作的时候计数器的值可以通过 TDR读取到。同时如果计数器的值等于 TCMP寄存器的时候,会触发相应的中断动作。
示例程序摘取
//定时器时钟选择并使能
/* Select HXT as the clock source of TIMER0 */
CLK_SetModuleClock(TMR0_MODULE, CLK_CLKSEL1_TMR0_S_HXT, MODULE_NoMsk);
/* Enable TIMER0 module clock */ CLK_EnableModuleClock(TMR0_MODULE);
//定时器配置模式和定时频率
/* Open Timer0 frequency to 0.5 Hz in periodic mode, and enable interrupt */
TIMER_Open(TIMER0, TIMER_PERIODIC_MODE, 2);
//中断使能
TIMER_EnableInt(TIMER0);
// NVIC 中断使能
/* Enable Timer0 NVIC */
NVIC_EnableIRQ(TMR0_IRQn);
//启动定时器并产生0.5s的周期中断
TIMER_Start(TIMER0);
//中断服务程序,定时器中断发生时翻转LED IO电平
void TMR0_IRQHandler(void)
{
if(TIMER_GetIntFlag(TIMER0) == 1)
{
/* Clear Timer0 time-out interrupt flag */
TIMER_ClearIntFlag(TIMER0);
P36^=1;
}
}
|