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

请问各位高人关于STM32F030C8的RTC问题

[复制链接]
wenstm32 提问时间:2016-3-5 13:19 /
因为要用RTC来做芯片的睡眠唤醒,所以要用这个RTC中断唤醒,时间不准也没关系,大概的时间可以唤醒就可以了。

查了网上很多的资料,但是因为都不是这个型号的,所以移植不了,后来查到似乎可以的,但是还是发现RTC没有工作起来,下面把RTC的初始化程序和中断程序带上,请各位高人指点下吧?


这是RTC初始化的
void RTC_chushihua(void)
{
uint8_t temp=0;
uint8_t wliao = 0;

   RTC_InitTypeDef    RTC_InitStructure = {0};
  uint32_t   LSIFreq = 0;

   RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);

   PWR_BackupAccessCmd(ENABLE);
   RCC_LSICmd(ENABLE);

                    while (RCC_GetFlagStatus(RCC_FLAG_LSIRDY) == RESET)
                              {   
                               }

       /* Reset Backup Domain */
        RCC_BackupResetCmd(ENABLE);
        RCC_BackupResetCmd(DISABLE);               
               
    RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);  
    RCC_RTCCLKCmd(ENABLE);

        /* Wait for RTC APB registers synchronisation */
        RTC_WaitForSynchro();        
        RTC_InitStructure.RTC_HourFormat = RTC_HourFormat_24;
        RTC_InitStructure.RTC_AsynchPrediv = 99;    //     <7f
        RTC_InitStructure.RTC_SynchPrediv =  0x1FF0;     // <0x1FFF
        RTC_Init(&RTC_InitStructure);
        //Set Default Time/Date      
            
    RTC_NVIC_Config();   
}     

下面是关于中断向量的设置
void RTC_NVIC_Config(void)
{   
  NVIC_InitTypeDef NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel = RTC_IRQn;  

NVIC_InitStructure.NVIC_IRQChannelPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;  
NVIC_Init(&NVIC_InitStructure);  
}


下面是RTC中断程序,如果进入中断了,就闪一下LED
void RTC_IRQHandler(void)
{   
  
RTC_ClearITPendingBit(0x0001 | 0x0004);  

     GPIOC->ODR = 0x2000;
    Delay(0xffff);   
    GPIOC->ODR = 0x0000;
    Delay(0xfffff);                  
}


我已经确认其他部分是OK了,但是这个RTC始终弄不起来,求教各位高人了。

收藏 评论7 发布时间:2016-3-5 13:19

举报

7个回答
wenstm32 回答时间:2016-3-8 16:18:09

谢谢你的提示了,今天终于都解决了,STOP模式下的串口唤醒,KEY唤醒,RTC唤醒都解决了。

其实其中的帮助还有我同事的功劳。在这里也回报下大家:

STOP模式的KEY唤醒是属于外部中断模式;

STOP模式的串口唤醒其实是把串口接收这个IO口在睡眠前先初始化为KEY唤醒一样的外部中断模式;
虽然会丢个数据,但是和外面的机器加个握手的简单招呼就行。注意醒后要重新初始化串口。

STOP模式的RTC唤醒用内部的LSI或者外部LSE都可以,用外部LSE的时候要确认32K晶体可以正常起振,可以拿示波器看下。但是每次唤醒后都必须重新设置ALARM。这一点STM32的确不太好。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

xmshao 回答时间:2016-3-5 15:38:23
ST 官方有提供RTC参考例程的。你可以去ST官网搜索 STSW-STM32048 。

除了参考启例程外,再就是注意你LSE一定要跑起来了。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

wenstm32 回答时间:2016-3-5 16:21:00
xmshao 发表于 2016-3-5 15:38
ST 官方有提供RTC参考例程的。你可以去ST官网搜索 STSW-STM32048 。

除了参考启例程外,再就是注意你LSE一 ...

能请问下马,怎么才能知道LSE跑起来了?
xmshao 回答时间:2016-3-5 17:24:59
示波器。
xmshao 回答时间:2016-3-8 16:23:07
好同志。谢谢分享!

福往者福来。
HenryChen 回答时间:2016-6-6 16:58:44
谢谢分享!
我是谁2015 回答时间:2018-1-18 16:34:15
wenstm32 发表于 2016-3-8 16:18
谢谢你的提示了,今天终于都解决了,STOP模式下的串口唤醒,KEY唤醒,RTC唤醒都解决了。

其实其中的帮助 ...

兄弟,你这个RTC唤醒STOP模式的例程能发给我一下吗?最近也在做STM32F030c8t6的测试,感觉进入不了STOP模式,我QQ 1964439971

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版