初级会员 
  
	- 积分
 - 110
 
        - 金钱
 - 110 
 
       - 注册时间
 - 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,是否还需要修改其他参数?忘知道的大哥帮忙看一下!感谢! 
 
 
 
 |   
 
 
 
 
 
 |