打印

关于RTC匹配中断问题

[复制链接]
829|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
王恩茂|  楼主 | 2014-11-5 11:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我使能定时器的RTC模式后,会给它加载一个初始值,然后有一个中断处理函数进行匹配,但是过了一段时间后,我需要精确地时间,然后给RTC重新加载一个初始值,但是中断为什么还是按原先的加载的初始值在匹配,进行一秒一个中断,我确定初始值和后面加载值都加载进去了。程序附下:
初始化函数
void timerInitRTC(unsigned long ulVal)
{


SysCtlPeriEnable(SYSCTL_PERIPH_GPIOD);

GPIOPinTypeTimer( GPIO_PORTD_BASE, GPIO_PIN_4);


SysCtlPeriEnable(SYSCTL_PERIPH_TIMER3);  

TimerConfigure(TIMER3_BASE, TIMER_CFG_RTC);  //设置为RTC模式

GPIOPinConfigure(GPIO_PD4_T3CCP0);//把PD4作为频率输入


TimerLoadSet(TIMER3_BASE,  TIMER_A, ulVal);


TimerMatchSet(TIMER3_BASE, TIMER_A, 1 + ulVal);



//使能定时器中断
TimerIntEnable(TIMER3_BASE, TIMER_A);  

IntEnable(INT_TIMER3A);


IntMasterEnable( );

  //使能RTC计数

TimerRTCEnable(TIMER3_BASE);  


TimerEnable(TIMER3_BASE,  TIMER_A);  

}

中断处理函数
void Timer3A_ISR(void)
{
uint32_t ulStatus;
  uint32_t ulVal;
  uint32_t ucVal;
ulStatus = TimerIntStatus(TIMER3_BASE, true);
TimerIntClear(TIMER3_BASE, ulStatus);
if (ulStatus & TIMER_RTC_MATCH)
{
  ulVal = TimerValueGet(TIMER3_BASE,TIMER_A);  //读取当前RTC计时器值
   TimerMatchSet(TIMER3_BASE, TIMER_A, 1 + ulVal);  // 重新设置RTC匹配值
  

    ucVal = GPIOPinRead(GPIO_PORTK_BASE, GPIO_PIN_2 ); // 反转LED灯
    GPIOPinWrite(GPIO_PORTK_BASE, GPIO_PIN_2, ~ucVal);
  
}

}

相关帖子

沙发
dirtwillfly| | 2014-11-5 20:26 | 只看该作者
楼主用的什么mcu?

使用特权

评论回复
板凳
王恩茂|  楼主 | 2014-11-5 21:37 | 只看该作者
用的是TI的TM4C129ENCPDT芯片,希望你能给点建议,指导一下。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

6

帖子

0

粉丝