F4的RTC 有校准程序吗?

2019-07-20 11:14发布

本帖最后由 Eternal单人行 于 2017-10-18 14:47 编辑

网上都是F1的,F4要怎么改


#define PPM_PER_STEP  0.9536743 //10^6/2^20.
#define PPM_PER_SEC   0.3858025 //10^6/(30d*24h*3600s).
u16 FastSecPer30days = 117; //菜单输入。117只用于演示。

实现的校准函数为:

void RTC_Calibration(void)
{
  float Deviation = 0.0;
  u8 CalibStep = 0;
  
  Deviation = FastSecPer30days * PPM_PER_SEC; //得到ppm误差
  Deviation /= PPM_PER_STEP; //得到校准值的浮点数
  CalibStep = (u8)Deviation; // 得到校准值的整形数
  if(Deviation >= (CalibStep + 0.5))
    CalibStep += 1; //四舍五入
  if(CalibStep > 127)
    CalibStep = 127; // 校准值应在0—127之间
  
  BKP_SetRTCCalibrationValue(CalibStep); //调用库函数
   
}

有大神知道下面这些数字校准怎么用吗
[mw_shl_code=c,true]/* Digital Calibration configuration functions *********************************/
ErrorStatus RTC_CoarseCalibConfig(uint32_t RTC_CalibSign, uint32_t Value);
ErrorStatus RTC_CoarseCalibCmd(FunctionalState NewState);
void RTC_CalibOutputCmd(FunctionalState NewState);
void RTC_CalibOutputConfig(uint32_t RTC_CalibOutput);
ErrorStatus RTC_SmoothCalibConfig(uint32_t RTC_SmoothCalibPeriod,
uint32_t RTC_SmoothCalibPlusPulses,
uint32_t RTC_SmouthCalibMinusPulsesValue);[/mw_shl_code]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。