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

请问各位高人关于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管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版