请选择 进入手机版 | 继续访问电脑版

你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32 MCU RCC_CFGR 和 RCC_CFGR2寄存器的相互作用

[复制链接]
yufeige 提问时间:2019-1-7 18:17 /
主控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 是不对的


ST1.png
st2.png
收藏 评论3 发布时间:2019-1-7 18:17

举报

3个回答
xmshao 回答时间:2019-1-22 16:07:33
1、你可以将时钟通过MCO引出来实际看看,正常与非正常时钟是否一样;
2、除了UART功能异常外,其它功能正常吗?
3、如果可能用cubeMx重新配置下生产代码比较下;
yufeige 回答时间:2019-1-25 11:46:13
MCO 输出是频率是正常的,暂时也就只发现串口这儿的问题, 就是这2个寄存器的关系 让我很是迷惑,cubemx 我还没有区试,  不过我后来又购买了新的MCU,用着也没有问题,有问题的那一批MCU 就几个有这歌现象
xmshao 回答时间:2019-1-31 11:22:08
yufeige 发表于 2019-1-25 11:46
MCO 输出是频率是正常的,暂时也就只发现串口这儿的问题, 就是这2个寄存器的关系 让我很是迷惑,cubemx 我 ...

如果说这个确定跟批次有关,建议你跟你的供应商咨询确认下。

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版