你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm32f030 rtc闹钟中断我这样配置为什么是一分钟进一次中断?

[复制链接]
qianrushian 提问时间:2018-4-28 10:04 /
我想改成5s进一次中断怎么改?求助大神!!!!!!!!!!!!!!!!!!!!!
void RTC_AlarmConfig(void)
{
RTC_TimeTypeDef   RTC_TimeStructure;
  RTC_AlarmTypeDef  RTC_AlarmStructure;
  EXTI_InitTypeDef EXTI_InitStructure;
  NVIC_InitTypeDef NVIC_InitStructure;
RTC_DateTimeTypeDef RTC_DateTimeStructure;

  RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);
PWR_BackupAccessCmd(ENABLE);   

RCC_LSICmd(ENABLE);
RCC_RTCCLKConfig(RCC_RTCCLKSource_LSI);//ÄÚ²¿
RCC_RTCCLKCmd(ENABLE);
  RTC_AlarmCmd(RTC_Alarm_A,DISABLE);//¹Ø±ÕÄÖÖÓA

// RTC_GetDateTime(&RTC_DateTimeStructure);
//
// RTC_AlarmStructure.RTC_AlarmTime.RTC_H12=RTC_H12_AM;
// RTC_AlarmStructure.RTC_AlarmTime.RTC_Hours=RTC_DateTimeStructure.Hour;
// RTC_AlarmStructure.RTC_AlarmTime.RTC_Minutes=RTC_DateTimeStructure.Minute;
//  RTC_AlarmStructure.RTC_AlarmTime.RTC_Seconds=RTC_DateTimeStructure.Second+5;
// if(RTC_AlarmStructure.RTC_AlarmTime.RTC_Seconds >=60)RTC_AlarmStructure.RTC_AlarmTime.RTC_Seconds=0;

///////////////
  /* Get current time */
  RTC_GetTime(RTC_Format_BIN, &RTC_TimeStructure);
RTC_AlarmStructure.RTC_AlarmTime.RTC_H12=RTC_H12_AM;
RTC_AlarmStructure.RTC_AlarmTime.RTC_Hours=RTC_TimeStructure.RTC_Hours;
RTC_AlarmStructure.RTC_AlarmTime.RTC_Minutes=RTC_TimeStructure.RTC_Minutes;
RTC_AlarmStructure.RTC_AlarmTime.RTC_Seconds=RTC_TimeStructure.RTC_Seconds+5;
if(RTC_AlarmStructure.RTC_AlarmTime.RTC_Seconds >=60)RTC_AlarmStructure.RTC_AlarmTime.RTC_Seconds=0;
/////////////////////////

  RTC_AlarmStructure.RTC_AlarmDateWeekDay = 0x31;
  RTC_AlarmStructure.RTC_AlarmDateWeekDaySel = RTC_AlarmDateWeekDaySel_Date;
  RTC_AlarmStructure.RTC_AlarmMask = RTC_AlarmMask_DateWeekDay | RTC_AlarmMask_Minutes |
                                     RTC_AlarmMask_Hours;                 
//  RTC_AlarmStructure.RTC_AlarmMask =RTC_AlarmMask_Seconds;
//
// RTC_AlarmSubSecondConfig(RTC_Alarm_A,RTC_TimeStructure.RTC_Seconds+5,RTC_AlarmSubSecondMask_SS14_1);
//
  RTC_SetAlarm(RTC_Format_BIN, RTC_Alarm_A, &RTC_AlarmStructure);

   /* Clear the Alarm A Pending Bit */
  RTC_ClearITPendingBit(RTC_IT_ALRA);  
//Êä³öÉ趨µÄÄÖÖÓ»½ÐÑʱ¼ä

//  RTC_ITConfig(RTC_IT_ALRA, ENABLE);
RTC_ITConfig(RTC_IT_ALRA, ENABLE);  
  /* Enable the alarm */
  RTC_AlarmCmd(RTC_Alarm_A, ENABLE);
  

   /* EXTI configuration */
  EXTI_ClearITPendingBit(EXTI_Line17);
  EXTI_InitStructure.EXTI_Line = EXTI_Line17;
  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
  EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  EXTI_Init(&EXTI_InitStructure);
  
  /* Enable the RTC Alarm Interrupt */
  NVIC_InitStructure.NVIC_IRQChannel = RTC_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPriority=1;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
//PWR_BackupAccessCmd(DISABLE);
}
void  RTC_IRQHandler(void)
{
  RTC_TimeTypeDef   RTC_TimeStructure;
   RTC_AlarmTypeDef  RTC_AlarmStructure;
  RTC_DateTimeTypeDef RTC_DateTimeStructure;
  
  SystemInit();
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);
PWR_BackupAccessCmd(ENABLE);
   
//   RCC_LSICmd(ENABLE);
// RCC_RTCCLKConfig(RCC_RTCCLKSource_LSI);//ÄÚ²¿
// RCC_RTCCLKCmd(ENABLE);
  LED_Init();
   if (RTC_GetITStatus(RTC_IT_ALRA) != RESET)
   {
   RTC_ClearITPendingBit(RTC_IT_ALRA);

   
  RTC_GetTime(RTC_Format_BIN, &RTC_TimeStructure);
//   RTC_GetAlarm(RTC_Format_BIN,RTC_IT_ALRA);
//   
RTC_AlarmStructure.RTC_AlarmTime.RTC_H12=RTC_H12_AM;
RTC_AlarmStructure.RTC_AlarmTime.RTC_Hours=RTC_TimeStructure.RTC_Hours;
RTC_AlarmStructure.RTC_AlarmTime.RTC_Minutes=RTC_TimeStructure.RTC_Minutes;
RTC_AlarmStructure.RTC_AlarmTime.RTC_Seconds=RTC_TimeStructure.RTC_Seconds+5;
if(RTC_AlarmStructure.RTC_AlarmTime.RTC_Seconds >=60)RTC_AlarmStructure.RTC_AlarmTime.RTC_Seconds=0;
   
   
   
RTC_AlarmStructure.RTC_AlarmDateWeekDay = 0x31;
  RTC_AlarmStructure.RTC_AlarmDateWeekDaySel = RTC_AlarmDateWeekDaySel_Date;
  RTC_AlarmStructure.RTC_AlarmMask = RTC_AlarmMask_DateWeekDay | RTC_AlarmMask_Minutes |
                                     RTC_AlarmMask_Hours;
//     RTC_AlarmStructure.RTC_AlarmMask =RTC_AlarmMask_Seconds;
//RTC_AlarmSubSecondConfig(RTC_Alarm_A,RTC_TimeStructure.RTC_Seconds+5,RTC_AlarmSubSecondMask_SS14_1);
  RTC_SetAlarm(RTC_Format_BIN, RTC_Alarm_A, &RTC_AlarmStructure);  
   
    RTC_ITConfig(RTC_IT_ALRA, ENABLE);  
  /* Enable the alarm */
  RTC_AlarmCmd(RTC_Alarm_A, ENABLE);      
   }  
   EXTI_ClearITPendingBit(EXTI_Line17);   
//PWR_BackupAccessCmd(DISABLE);
}
收藏 评论7 发布时间:2018-4-28 10:04

举报

7个回答
废鱼 回答时间:2018-4-28 10:46:22
5秒一次中断用wakeup,下面的代码:
  1. EXTI_InitTypeDef EXTI_InitStructure;
  2.   
  3.   /* EXTI configuration */
  4.   EXTI_InitStructure.EXTI_Line = EXTI_Line20;
  5.   EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
  6.   EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
  7.   EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  8.   EXTI_Init(&EXTI_InitStructure);
  9.   
  10.   /* Enable the RTC Wake Interrupt */
  11.         Std_NVIC_SetPriority(RTC_WKUP_IRQn, 0, 0);

  12.   /* Set the RTC Wake */
  13.         RTC_ClearITPendingBit(RTC_IT_WUT);
  14.         RTC_WakeUpCmd(DISABLE);
  15.         RTC_SetWakeUpCounter(5);
  16.         RTC_WakeUpClockConfig(RTC_WakeUpClock_CK_SPRE_16bits);       
  17.        
  18.   /* Enable WakeUp interrupt */
  19.         RTC_WakeUpCmd(ENABLE);
  20.         RTC_ITConfig(RTC_IT_WUT,ENABLE);
复制代码


评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

qianrushian 回答时间:2018-4-29 13:35:19
安 发表于 2018-4-28 10:46
5秒一次中断用wakeup,下面的代码:

f030 没有你说的那些东西啊。
废鱼 回答时间:2018-5-2 09:15:26
不好意思,我看的是STM32F0xx_StdPeriph_Lib_V1.5.0的库文件,里面写了有,但是只有072才支持,如果用alarm的话,应该是当前秒+5即可。超过60的%60一下即可。
冷不丁-357544 回答时间:2020-8-18 10:55:13
楼主找到问题没有?我也碰到了同样的问题
冷不丁-357544 回答时间:2020-9-2 14:11:08
安 发表于 2018-4-28 10:46
5秒一次中断用wakeup,下面的代码:

你好,我使用的是STM32F072CBT6,在工程中查询怎么没有RTC_WKUP_IRQn中断,我需要产生一个7分钟的中断的,可以分享一下你的这块详详细的配置代码吗?
废鱼 回答时间:2020-9-2 16:51:23
冷不丁-357544 发表于 2020-9-2 14:11
你好,我使用的是STM32F072CBT6,在工程中查询怎么没有RTC_WKUP_IRQn中断,我需要产生一个7分钟的中断的 ...

您好,这个中断代码是需要自己写的。可以参考官方的例程。
万飞 回答时间:2020-11-21 11:01:35
冷不丁-357544 发表于 2020-8-18 10:55
楼主找到问题没有?我也碰到了同样的问题

你这个问题解决了吗

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版