| 1 简介HSICLK是RC振荡器,精度没有晶振高,理想情况下数值是8MHz,在出厂时,会在3.3V、25℃下校准至±1%的精度,即7.92~8.08。
 
 但是随着温度、电压的变化,该精度是会变化的。这个时候,可以通过配置HSITRM进行微调。通过实验,记录了手中的MCU调整的范围。2 实验数据、结论2.1 以下是自己手中的APM32F103ZET6的测试数据及图表     HSICLK的数值随着HSITRIM的参数变化如下:3 实验代码如下: int main(void) {    GPIO_Config_T GPIO_ConfigStruct;      RCM_EnableAPB2PeriphClock(RCM_APB2_PERIPH_GPIOA);    GPIO_ConfigStruct.pin = GPIO_PIN_8;    GPIO_ConfigStruct.mode = GPIO_MODE_AF_PP;    GPIO_ConfigStruct.speed = GPIO_SPEED_50MHz;    GPIO_Config(GPIOA, &GPIO_ConfigStruct);    RCM_ConfigMCO(RCM_MCOCLK_HSI);        RCM_ConfigHSITrim(0x00);        //示波器读取平均值     //RCM_ConfigHSITrim(0x01);    //RCM_ConfigHSITrim(0x02);     //RCM_ConfigHSITrim(0x03);    //RCM_ConfigHSITrim(0x04);    //RCM_ConfigHSITrim(0x05);    //RCM_ConfigHSITrim(0x06);    //RCM_ConfigHSITrim(0x07);    //RCM_ConfigHSITrim(0x08);    //RCM_ConfigHSITrim(0x09);    //RCM_ConfigHSITrim(0x0A);    //RCM_ConfigHSITrim(0x0B);    //RCM_ConfigHSITrim(0x0C);    //RCM_ConfigHSITrim(0x0D);    //RCM_ConfigHSITrim(0x0E);    //RCM_ConfigHSITrim(0x0F);     while(1)     {     } }  4 其它 (1)修改HSITRIM寄存器的数值后,会立刻修改HSICLK的频率,不需要复位MCU (2)复位MCU后,需要重新配置HSITRIM (3)写笔记时才发现未调试HSITRIM配置为0时HSICLK的数值 (4)通过配置HSITRIM来调整HSICLK,应该也只是权宜之计,实际应用中,如果环境比较恶劣,比如温度、电压波动很大,并且不同的芯片应该也会存在差异,要想准确的精度,还是得HSECLK。   
 |