[STM32F1] 请问 STM32F103 的晶振由8M改为了12M,串口该怎么配置?

[复制链接]
2197|3
 楼主| xwuzi 发表于 2014-10-8 13:24 | 显示全部楼层 |阅读模式
    RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL6);
这个我已经改了,

现在串口发数据,用串口助手收到的不对。。

是不是还有其它地方要修改?
zhaoyu2005 发表于 2014-10-8 17:36 | 显示全部楼层
用jlink连上看看时钟对不,如果换晶振后只是更改了倍频,和之前的系统时钟一致,应该能工作的。
airwill 发表于 2014-10-9 06:29 | 显示全部楼层
UART 通信的波特率是跟时钟频率有关的。所以随便换个晶振,必然影响 UART 的工作。
翻开库函数 USART_Init,通过 RCC_GetClocksFreq 函数获取系统频率的。而此函数又是由 HSE_VALUE 影响频率值的。这就是晶振频率。这个宏在 stm32f10x.h 里做了定义,你可以直接到这个头文件里改掉它。
由于使用了
#if !defined  HSE_VALUE
#define HSE_VALUE xxxx
的方式,由于Keil MDK 编译器的预定义符号里被不能给 HSE_VALUE 定义 12000000 这样的常数,你也可以自己建立一个头文件来定义 HSE_VALUE  12000000, #include 先于 stm32f10x.h (说起来有点复杂,但可以不去改 stm32f10x.h)。
mmuuss586 发表于 2014-10-9 12:22 | 显示全部楼层
这个地方改下看看:
捕获.JPG
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:人生无非是笑笑人家,再被人家笑笑~

43

主题

493

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部