STM32F100VDT6 外部HSE 时钟不准问题
主控STM32F100VDT6 外部晶振8M,官方库3.5.0几个月前购买过几十片该型号MCU,程序运行起来 系统时钟 24M ,完全正常
前些时候又购买几十片该型号MCU,程序运行起来,发现串口通讯速率完全不对,115200的波特率 被降到57600去了,因此怀疑是主频不对。
demo程序是直接基于ST 3.5.0库中的demo 程序上去修改的 ,仅仅配置systemInit这个函数,然后看打印输出
分析处理过程:
1、在systemInit这个函数中配置成内部HSI 8M晶体跑,发现系统时钟是24 可以正常跑,设置115200的波特率打印正常
2、在systemInit函数中,SYSTEM CLOCK 改为HSE,且把PREDIV1 =1即 /*PLL configuration:= (HSE ) * 6 = 24 MHz */ 相当于是8M*6 = 48M,这样修改过后发现程序居然也是正常的。
3、实际测试外部晶体的频率也是8M。
因此对于这样的问题 ,我不确定是不是购买到了假冒的MCU。
此外对于这个问题的另外一些想法是,有没有办法可以做到 程序内部时钟自检,判断是否达到设计所要的时钟频率。
目前这一批次的所有都是这一的问题,只要以替换先前的MCU就完全是好的 原板子上替换的吗?这个芯片是一家提供的吗?芯片型号是否一致? 你用MCO把晶振输出来看看吧 我认为是时钟配置的问题。楼主要注意一下配置。比如默认HSE的配置HSE_VALUE是4M还是8M。这些在stm32f1xx.h里面有定义。具体可以根据寄存器的值进行推断。按楼主说的这种情况,我猜测是外部始终和实际的HSE_VALUE定义不一致导致的。 五哥1 发表于 2018-10-22 13:20
原板子上替换的吗?这个芯片是一家提供的吗?芯片型号是否一致?
就是原板子替换芯片,先前购买的芯片是完好的,这次购买的贴上去就有这个问题, 我是在网上找同一家购买的 丝印也是一样
页:
[1]