为什么4A,在stm官方函数库中写成 4U * A

2019-07-19 21:49发布

看到官方函数中有这样的表达式,颇为不解,请学长解惑。


           void AWU_LSICalibrationConfig(uint32_t LSIFreqHz)
00136 {
00137
00138     uint16_t lsifreqkhz = 0x0;
00139     uint16_t A = 0x0;
00140
00141     /* Check parameter */
00142     assert_param(IS_LSI_FREQUENCY_OK(LSIFreqHz));
00143
00144     lsifreqkhz = (uint16_t)(LSIFreqHz / 1000); /* Converts value in kHz */
00145
00146     /* Calculation of AWU calibration value */
00147
00148     A = (uint16_t)(lsifreqkhz >> 2U); /* Division by 4, keep integer part only */
00149
00150     if ((4U * A) >= ((lsifreqkhz - (4U * A)) * (1U + (2U * A))))
00151     {
00152         AWU->APR = (uint8_t)(A - 2U);
00153     }
00154     else
00155     {
00156         AWU->APR = (uint8_t)(A - 1U);
00157     }
00158 }


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。