螞蟻水上飆 发表于 2012-8-17 18:08:16

关于RTC Alarm的问题【悬赏问答】

main()

   RTC_config();
   Alarm_config();
for(;;)
  {
    halt();
  }
}
void RTC_config(void)
{
  CLK_LSEConfig(CLK_LSE_ON);
  while(CLK_GetFlagStatus(CLK_FLAG_LSERDY)==RESET)
  {
  }
  CLK_RTCClockConfig(CLK_RTCCLKSource_LSE,CLK_RTCCLKDiv_1);
  CLK_PeripheralClockConfig(CLK_Peripheral_RTC,ENABLE);
  RTC_WakeUpClockConfig(RTC_WakeUpClock_RTCCLK_Div16);
}
void Alarm_config(void)
{
  RTC_AlarmStructInit(&RTC_AlarmStr);
  RTC_AlarmStr.RTC_AlarmTime.RTC_Seconds = 5;
  RTC_AlarmStr.RTC_AlarmMask = RTC_AlarmMask_DateWeekDay | RTC_AlarmMask_Hours| RTC_AlarmMask_Minutes;
  RTC_SetAlarm(RTC_Format_BIN, &RTC_AlarmStr);
  RTC_ITConfig(RTC_IT_ALRA, ENABLE);
  RTC_AlarmCmd(ENABLE);
  enableInterrupts();
}
以下为中断程式
INTERRUPT_HANDLER(RTC_CSSLSE_IRQHandler, 4)
{
  GPIO_ToggleBits(GPIOB,GPIO_Pin_0);
  RTC_ClearITPendingBit(RTC_IT_ALRA);
  RTC_SetAlarm(RTC_Format_BIN, &RTC_AlarmStr);
}
PB0起始输出值为hi ,PB0输出为五秒HI然后拉low1分钟之后hi一分钟循环,怀疑是当RTC的秒数到5时才会发生Alarm,Alarm不是我设定5秒就是五秒会进入一次中断吗我是哪里设定错了

zykzyk-93033 发表于 2012-8-17 22:17:51

RE:关于RTC Alarm的问题

你在哪个halt();后面加个空语句看看。:D

螞蟻水上飆 发表于 2012-8-20 10:09:48

RE:关于RTC Alarm的问题

在HALT()后面加了一个空字节还是相同的情形5秒然后-分钟循环

螞蟻水上飆 发表于 2012-8-21 16:38:47

RE:关于RTC Alarm的问题

问题以解决因为小弟个人误解所以造成此问题RTC Alarm 为单一次中断并不会重复重断如果需要使用RTC Alarm重复中断须将RTC 重新初始化就可以时现每几秒或几分或几小时中断。而RTC 重复中断有另一个方式就是RTC wake up,只要设定好时间他就会不断重复中断。感谢大大提供的意见。

螞蟻水上飆 发表于 2012-8-21 16:43:03

回复:关于RTC Alarm的问题

以下是使用RTC Alarm 5秒重复Alarm 和500ms 重复wake up 的程式。编译程式为IAR

zykzyk-93033 发表于 2012-9-1 22:22:18

RE:关于RTC Alarm的问题【悬赏问答】

哦原来你是这个意思啊!:D

tsljy2011 发表于 2013-2-5 07:05:20

回复:关于RTC Alarm的问题【悬赏问答】

正是我要找的,学习学习

废鱼 发表于 2013-2-5 14:32:29

RE:关于RTC Alarm的问题【悬赏问答】

Alarm功能,是指和RTC对比来实现的。如果你想要固定5s的话,可以用TIM。

llqzx 发表于 2019-7-5 15:41:19

谢谢 下载看一下
页: [1]
查看完整版本: 关于RTC Alarm的问题【悬赏问答】