//--------------------1Hz情况下--------------//
//唤醒周期(秒) = 自动重装载值 / (RTC时钟频率 / (PREDIV_A + 1) / (PREDIV_S + 1)):
//自动重装载值 =4;
//RTC时钟频率 = 32000Hz;
//PREDIV_A = hrtc.Init.AsynchPrediv = 127;
//PREDIV_S = hrtc.Init.SynchPrediv = 255;
//唤醒周期(秒)= 4/(32000/128/256) = 4.096秒
//所以采用32768Hz的晶振时,可以精确的设置到1秒
//--------------------16分频情况下--------------//
//唤醒周期(秒) = 自动重装载值 / (RTC时钟源频率 / 分频系数)
//自动重装载值 =4096;
//RTC时钟频率 = 32000Hz;
//分频系数16;
//唤醒周期(秒)= 4096/(32000/16) = 2.048秒
//所以采用32768Hz的晶振时,可以精确的设置到1秒
HAL_RTCEx_SetWakeUpTimer_IT(&hrtc, 4, RTC_WAKEUPCLOCK_CK_SPRE_16BITS);
//看门狗时间(秒) = (预分频器值 + 1) * (重装载值 + 1) / IWDG时钟源频率
//预分频器值 = IWDG_PRESCALER_256 = 256;
//重装载值 = hiwdg.Init.Reload = 4095;
//IWDG时钟源频率 = 32000Hz;
//看门狗时间(秒) = (255 + 1) * 625 + 1) / 32000 = 5.008
//定时器定时时间
//定时时间(ms) = (LPTIM时钟频率(Hz) / 自动重装载值) * 1000
//时钟源:LSI或LSE =32768Hz
//预分频系数DIV128 定时器的时钟频率:32768/128=256Hz
//自动重装载值256
//定时时间:timer = (256Hz/256)*1000 = 1000ms
HAL_LPTIM_Counter_Start_IT(&hlptim1,256);
STM32单片机RTC+IWDG+PWM定时时间计算
最新推荐文章于 2024-07-21 23:10:47 发布