- UID
- 1029342
- 性别
- 男
|
define PPM_PER_STEP 0.9536743 //10^6/2^20.
#define PPM_PER_SEC 0.3858025 //10^6/(30d*24h*3600s).
然后定义全局变量FastSecPer30days。通过用户菜单设定并传递到RTC校准程序里。
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); //调用库函数
}
//函数结束RTC_Calibration |
|