STM32F407系统时钟配置不准确导致串口发送数据乱码、定时器定时不准问题

前言

在用原子的F407探索者开发板时,由于是用的野火的工程模板,导致了一些串口发送乱码、定时器定时不准的问题。如果你也有类似的问题,这个或许可以帮到你。

原因

SYSCLK 系统时钟来源有三个方面:HSI,HSE 和 PLL。在我们实际应用中,因为对时钟速度要求都比较高我们才会选用 STM32F4 这种级别的处理器,所以一般情况下,都是采用 PLL 作为 SYSCLK时钟源,而系统时钟配置不正确就是PPL这里出了问题。

先看一下主PPL在整个时钟树中间的位置。
在这里插入图片描述
在这里插入图片描述

高速系统时钟一般由PPL_P提供,一般配置为最高168M。

根据公式:
PLL = HSE * N / (M * P) = 8MHz * 336 / (8 * 2) = 168MHz

参数说明
HSE晶振大小(MHz)
N倍频器倍频系数
P分频器分频系数
M分频器分频系数

系数可以随意选择,只要是让公式最后的结果为168应该都可以,但是在标准库中一般N、PD固定了的。HSE会随着板子上不同的晶振而修改,还有M也可以用来修改系统时钟频率。不过不建议随意修改,因为我菜,菜,菜,留下了没有技术含量的眼泪。

接下来只要在库文件中修改HSE和PPL_M就可以了。

修改

之所以会出现这个问题,是由于系统时钟配置不正确

1. 要将高亮的地方改为8000000
(在stm32f4xx.h里面)
在这里插入图片描述

2. 将高亮的地方改为8
(在system_stm32f4xx.c里面)

在这里插入图片描述
经过这两个修改就可以正常使用了。

  • 37
    点赞
  • 80
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值