找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5869|回复: 1
收起左侧

为什么我的STM32 RTC实时时钟秒中断进去不了

[复制链接]
ID:283688 发表于 2018-3-28 11:14 | 显示全部楼层 |阅读模式
我在用keil一步步仿真的时候进入不了中断函数
  1. void RTC_NVIC_Config()         
  2. {
  3.         NVIC_InitTypeDef NVIC_InitStructure;         

  4.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
  5.         NVIC_InitStructure.NVIC_IRQChannel = RTC_IRQn;            
  6.         NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;  
  7.         NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;         
  8.         NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;         
  9.         NVIC_Init(&NVIC_InitStructure);
  10. }

  11. /*******************************************************************************

  12. *******************************************************************************/
  13. void rtc_init()
  14. {
  15.    
  16.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);
  17.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_BKP,ENABLE);
  18.   RTC_NVIC_Config();
  19.       
  20.         PWR_BackupAccessCmd(ENABLE);
  21.         BKP_DeInit();
  22.         RCC_LSEConfig(RCC_LSE_ON);
  23.         while(RCC_GetFlagStatus(RCC_FLAG_LSERDY)==RESET);
  24.         RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);
  25.         RCC_RTCCLKCmd(ENABLE);
  26.         RTC_WaitForSynchro();
  27.         RTC_WaitForLastTask();
  28.         RTC_ITConfig(RTC_IT_SEC,ENABLE);
  29.         RTC_WaitForLastTask();
  30.         RTC_SetPrescaler(32767);
  31.         RTC_WaitForLastTask();
  32.                
  33. }

  34. void clockinit_RTC()
  35. {
  36.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_BKP|RCC_APB1Periph_PWR,ENABLE);
  37.         PWR_BackupAccessCmd(ENABLE);
  38.         if(BKP_ReadBackupRegister(BKP_DR1)!=0XA0A0)
  39.         {
  40.                
  41.                
  42.                 rtc_init();
  43.                 RTC_WaitForLastTask();
  44.                 RTC_SetCounter(0x9f92);
  45.                 RTC_WaitForLastTask();
  46.                 BKP_WriteBackupRegister(BKP_DR1,0xA0A0);
  47.         }
  48.         else
  49.         {      
  50.                
  51.                 RTC_WaitForSynchro();
  52.                 RTC_WaitForLastTask();
  53.           RTC_ITConfig(RTC_IT_SEC,ENABLE);
  54.                 RTC_WaitForLastTask();
  55.         }
  56.       
  57.         RCC_ClearFlag();
  58. }
  59. void RTC_IRQHandler()        
  60. {
  61.         if(RTC_GetITStatus((RTC_IT_SEC))!=RESET)
  62.         {
  63.                 RTC_ClearITPendingBit(RTC_IT_SEC);
  64.                 timebz=1;      
  65.         }
  66. }
  67. int main()
  68. {      
  69.         u16 hour=0,min=0,sec=0;
  70.         u32 timedata=0;
  71.            
  72.          
  73.         printf_init();         
  74.         clockinit_RTC();
  75.         while(1)
  76.         {
  77.    
  78.                 if(timebz==1)           
  79.                 {
  80.                         timebz=0;         
  81.                         timedata=RTC_GetCounter();
  82.                         hour=timedata/3600;                  
  83.                         min=(timedata%3600)/60;
  84.                         sec=timedata%60;
  85.                         printf("RTC time is: %0.2d:%0.2d:%0.2d\r\n",hour,min,sec);
  86.                 }               
  87.         }                       
  88. }
复制代码


回复

使用道具 举报

ID:469589 发表于 2021-10-28 09:46 | 显示全部楼层
同问。硬件为STM32F303
我用到时STM32-CUBE,不支持函数:
RTC_ITConfig(RTC_IT_SEC,ENABLE);
找不到对应的函数或设置方法。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表