主控STM32F100VDT6 外部晶振8M,官方库3.5.0 同一个批次MCU中就发现某些MCU 波特率出现异常 MCU 跑起来时候发现串口波特率与实际波特率不对应的问题,比如设置115200波特率 实际上却是57600 通过分析发现MCU主控的主频是24M = (HSE/2)*6,与软件实际设置是没有问题的, 通过仿真后 分析发现: void RCC_GetClocksFreq(RCC_ClocksTypeDef* RCC_Clocks) 这个函数内部 prediv1factor = (RCC->CFGR2 & CFGR2_PREDIV1) + 1; // δÐÞ¸ÄÇ°µÄÖµ /* HSE oscillator clock selected as PREDIV1 clock entry */ RCC_Clocks->SYSCLK_Frequency = (HSE_VALUE / prediv1factor) * pllmull; 由于 RCC->CFGR 的BIT 17 是1 ,但是 RCC->CFGR2的BIT0不是1 ,因此导致系统时钟 计算错误 根据芯片手册上得知 RCC->CFGR BIT17 如果设置1的话 ,那么 RCC->CFGR2 的 BIT0 也会置1, 所以想知道下 为啥会出现这种情况, 同样的芯片 同样的程序 , 大部分MCU是正常的 少数MCU 是不对的 |
2、除了UART功能异常外,其它功能正常吗?
3、如果可能用cubeMx重新配置下生产代码比较下;
如果说这个确定跟批次有关,建议你跟你的供应商咨询确认下。