PIT有一个可
编程的溢出计数器,它具有溢出后自动复位的特性。PIT基于两个计数器:一个20位的CPIV计数器及一个12位的PICNT计数器。两个计数器的时钟都是主时钟的1/16。通过PIT_MR模式寄存器的PITIEN位设置中断使能后,CPIV计数器从0开始计数,一直到模式寄存器PIT_MR的PIV域所定义的溢出数值为止。CPIV计数器溢出后立即复位为0,同时PICNT寄存器累加,状态寄存器PIT_SR的PITS被置位从而触发中断。
以下为使用周期性间隔定时器模块产生定时中断函数。
[
html] www.2cto.com
void ClockHandler(void) __irq
{
Display_Received++;
*AT91C_AIC_EOICR = *AT91C_PITC_PIVR; //Acknowledge Interrupt
void PIT_Init(void)
{
*AT91C_PITC_PIMR = AT91C_PITC_PITIEN | AT91C_PITC_PITEN | 784741; //PIT使能及定时周期配置
AT91F_AIC_ConfigureIt(AT91C_BASE_AIC,AT91C_ID_SYS,1,AT91C_AIC_SRCTYPE_INT_POSITIVE_EDGE,(void (*)())ClockHandler);//中断触发方式及函数入口地址
AT91F_AIC_EnableIt(AT91C_BASE_AIC, AT91C_ID_SYS); //Enable Interrupt
}