OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4436|回复: 1

STM32F446,RTC驱动不起来,进不了RTC_WKUP_IRQHandler和HAL_RTCEx_WakeUpTimerEventCallback

[复制链接]

11

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
109
金钱
109
注册时间
2019-5-15
在线时间
34 小时
发表于 2022-6-28 17:16:53 | 显示全部楼层 |阅读模式
5金钱
公司产品要用低功耗停止模式,想用RTC来定是唤醒喂狗。RTC参考原子哥的HAL RTC例程,由于板子没有外部LSE时钟,采用内部LSI,但是进不了RTC_WKUP_IRQHandler和HAL_RTCEx_WakeUpTimerEventCallback。初始化函数及参数,没做任何修改,如下:
u8 RTC_Init(void)
{      
          RTC_Handler.Instance=RTC;
    RTC_Handler.Init.HourFormat=RTC_HOURFORMAT_24;//RTC设置为24小时格式
    RTC_Handler.Init.AsynchPrediv=0X7F;           //RTC异步分频系数(1~0X7F)
    RTC_Handler.Init.SynchPrediv=0XFF;            //RTC同步分频系数(0~7FFF)   
    RTC_Handler.Init.OutPut=RTC_OUTPUT_DISABLE;     
    RTC_Handler.Init.OutPutPolarity=RTC_OUTPUT_POLARITY_HIGH;
    RTC_Handler.Init.OutPutType=RTC_OUTPUT_TYPE_OPENDRAIN;
    if(HAL_RTC_Init(&RTC_Handler)!=HAL_OK) return 2;

    if(HAL_RTCEx_BKUPRead(&RTC_Handler,RTC_BKP_DR0)!=0X5050)//是否第一次配置
    {
        RTC_Set_Time(23,59,56,RTC_HOURFORMAT12_PM);                //设置时间 ,根据实际时间修改
        RTC_Set_Date(22,06,27,7);                                    //设置日期
        HAL_RTCEx_BKUPWrite(&RTC_Handler,RTC_BKP_DR0,0X5050);//标记已经初始化过了
    }
    return 0;
}

main函数调用如下:
  RTC_Init();                     //初始化RTC
  RTC_Set_WakeUp(RTC_WAKEUPCLOCK_CK_SPRE_16BITS,25); //配置WAKE UP中断,25秒钟中断一次  



程序修改的部分如下:

时钟配置

时钟配置

只是把对应的LSE改成LSI,是否还需要修改其他参数?忘知道的大哥帮忙看一下!感谢!



正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

74

帖子

0

精华

初级会员

Rank: 2

积分
188
金钱
188
注册时间
2021-12-22
在线时间
34 小时
发表于 2022-6-29 11:32:26 | 显示全部楼层
这个肯定是还有一些初始化未完成的,比如BSK时钟都没开,自己检查一下跟正点原子例程对比一下
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-25 15:28

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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