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

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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版