初级会员

- 积分
- 109
- 金钱
- 109
- 注册时间
- 2019-5-15
- 在线时间
- 34 小时
|
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,是否还需要修改其他参数?忘知道的大哥帮忙看一下!感谢!
|
|