0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

浅谈STM32时钟配置及相关问题

黄工的嵌入式技术圈 来源:黄工的嵌入式技术圈 2020-03-24 11:16 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

Ⅰ、写在前面

最近有很多朋友问:1.我的USART串口打印出来的数据是乱码?2.我的TIM定时器延时或定时不准确?

常见可能原因:

1.晶振问题:外部晶振不起振、或频率与配置不匹配。

2.软件问题:分频、倍频、时钟源选择等。

总结来说,主要还在于软件的问题。因为即使没有外部晶振,也可以使用内部晶振。

其实,软件的问题是容易得到解决的,只要你了解了STM32时钟配置里面具体内容就知道了。

关于本文的详细内容请看下面章节

Ⅱ、本文要点

要了解时钟的配置,就需要知道它在哪里配置,也就是还需要了解软件执行的流程。

1.软件流程

说软件流程是让大家知道系统时钟配置的位置。不管是使用寄存器开发,还是使用库(标准库、HAL库)开发STM32,工程中基本上都有“startup_stm32fxxxxx.s”这么一个启动文件。

在线调试的朋友应该知道,你点一下复位按钮,软件会跳转到下图的位置,其实可以看到复位之后第一个执行的函数就是【SystemInit】。说到这里,应该明白为什么我们在main函数开始没有看见时钟配置相关的函数了吧,程序是在复位后立马配置的时钟。

2.时钟配置位置

使用库库(标准库、HAL库)开发STM32的朋友,在工程中都可能会看到“system_stm32fxxx.c”这么一个文件,这个文件里面代码主要的功能就是配置STM32的系统时钟。

上面启动文件中说到的【SystemInit】函数就是在这个文件里面,【SystemInit】函数里面就是配置系统时钟的具体内容。配置系统时钟主要就是时钟源选择、分频、倍频等。

注意:STM32有多系列芯片,这里【SystemInit】函数里面代码的内容也因此不同。

3.外部晶振频率、系统时钟频率

对于初学者,容易受到影响的就是两个参数:HSE_VALUE(外部晶振频率)、SystemCoreClock(系统时钟)。这个两个参数在ST提供的库中都有一个参考值,一般的开发板都是按照参考值设计的晶振,所以不用修改。但如果不同,那么就要修改。位置分别在“stm32fxxx.h”和“system_stm32fxxx.c”文件下面,如下图(F4系列为例):

4.时钟树

时钟树是很好反应时钟时钟源选择、分频、倍频的一个框图,要深入理解,请下载相关参考手册查看RCC章节的时钟树,下面截取部分系列芯片时钟树图:

5.MCO时钟输出

验证时钟配置是否正确的方法可以通过MCO输出时钟,用示波器检测一下就知道了。我前面提供的软件工程中有一段代码(如下图),主要就是MCO时钟输出的代码。

Ⅲ、说明

需要深入掌握STM32系统时钟配置的内容,还需要你自己认真阅读以下源代码(建议看一下注释说明)。官方提供的代码从命名上都是很容易理解的。

相关文章:

STM32F4_RCC系统时钟配置及描述

以上总结仅供参考,若有不对之处,敬请谅解。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • STM32
    +关注

    关注

    2313

    文章

    11211

    浏览量

    375349
  • USART
    +关注

    关注

    1

    文章

    202

    浏览量

    33410
  • 时钟配置
    +关注

    关注

    1

    文章

    14

    浏览量

    8982
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    一文浅谈FRTC8563时钟芯片

    ,使得时间信息的传输更加高效。同时,FRTC8563芯片还支持多种中断功能,可以根据需要进行配置,以便在特定时间或事件发生时触发相应的中断操作。综上所述,FRTC8563是一款功能丰富、性能稳定的实时时钟
    发表于 05-08 12:36

    基于STM32F103+ESP01S的复古桌面辉光管时钟开源项目介绍

    作为电子 DIY 爱好者,一直觉得市面上辉光管时钟的方案有些单一:要么是无 WiFi 功能的纯 STM32 设计,时间容易偏差;要么依赖 ESP32 主控,少了些单片机开发的专属体验。于是决定自己
    的头像 发表于 04-14 15:15 508次阅读
    基于<b class='flag-5'>STM32</b>F103+ESP01S的复古桌面辉光管<b class='flag-5'>时钟</b>开源项目介绍

    使用DDR4时钟架构

    使用DDR4这个IP核时,时钟如何架构十分关键,DDR4 IP对时钟有特殊的要求,可以是差分时钟也可以是No buffer的单端时钟,在IP核的配置
    的头像 发表于 04-10 13:59 325次阅读
    使用DDR4<b class='flag-5'>时钟</b>架构

    S32K358 - GMAC时钟配置的几个疑问求解

    我对 GMAC 时钟配置有几个问题。 在我的设置中,PTB3配置为输出引脚 for rgmii_txclk和PTC16配置为输入引脚 for rgmii_rxclk.此
    发表于 04-02 06:13

    AT32F011时钟配置说明

    Source Configuration) 与系统时钟相关的高速时钟源主要包括 HEXT 和 HICK,PLL 也是使用以上时钟源来进行倍频。需要 在配置使能 PLL 前将所使用的
    发表于 03-29 10:34

    浅谈FPGA的时钟输入要求

    Virtex-7 FPGA的时钟输入主要通过其全局时钟缓冲器(BUFG、BUFH等)和时钟管理模块(MMCM、PLL)来处理。对输入时钟的要求主要围绕电气特性、抖动和引脚分配。
    的头像 发表于 03-25 15:26 1087次阅读

    探索CDC1104:1至4可配置时钟缓冲器的卓越性能

    探索CDC1104:1至4可配置时钟缓冲器的卓越性能 在电子设备的设计中,时钟缓冲器起着至关重要的作用,它能确保时钟信号的稳定传输和分配。今天,我们就来深入了解德州仪器(TI)的CDC
    的头像 发表于 02-09 11:05 323次阅读

    求助STM32H563关于LWESP配置UART问题

    /tx1991427/article/details/135887319 针对“移植”章节里的uart相关配置,请帮忙用STM32H563配置信息来修改,感谢感谢!
    发表于 01-27 14:02

    LAT1180+STM32L4R9 的 QuadSPI Flash 通讯速率不理想应用笔记

    客户反应 STM32L4R9 同 QSPI Flash 通讯,测出来的读取速率为 10MB/s, 和理论值相差较大。按照客户的时钟配置STM32L4R9 的数据手册中的数据,OSP
    发表于 01-11 17:30 0次下载

    LAT1215+如何让 STM32WB 在没有 LSE 时运行 BLE 应用程序

    首先 LSE 可作为 STM32WB RF Wakeup 和 RTC 的时钟源。STM32WB RF Wakeup 和 RTC 的时钟源可配置
    发表于 01-09 10:55 0次下载

    时钟树解析

    总线之前,该时钟会被分频(也就是降低频率),在不进行任何配置的情况下,这个48M的信号会被6分频。 这个图包含很多信息,但是图中的彩色字信息并非全部来自此图,更多的信息需要结合代码和寄存器
    发表于 11-28 08:24

    极海APM32E030 MCU中高速时钟配置相关注意事项

    每一家MCU厂家的SDK写法和寄存器功能都有所不同,如果不熟悉的话就会配置错误,导致MCU运行不稳定。接下来就以APM32E030的手册和SDK,解读下高速时钟配置相关注意事项。
    的头像 发表于 11-04 09:19 5083次阅读
    极海APM32E030 MCU中高速<b class='flag-5'>时钟</b>的<b class='flag-5'>配置</b>和<b class='flag-5'>相关</b>注意事项

    Proteus中配置STM32外部时钟HSE如何配置

    有大佬会配置Proteus中的STM32F103C8的外部时钟吗 这个proteus中打印不出来数据,但是在实物的连接中可以正常打印 代码如下: 并且配置proteus中的虚拟串口
    发表于 11-02 13:54

    ‌CDC1104 1至4可配置时钟缓冲器技术文档摘要

    CDC1104是一个 1 到 4 可配置时钟缓冲器。该器件接受输入参考时钟,并创建 4 个缓冲输出时钟,输出频率等于输入时钟的一半 频率。
    的头像 发表于 09-16 09:37 977次阅读
    ‌CDC1104 1至4可<b class='flag-5'>配置</b><b class='flag-5'>时钟</b>缓冲器技术文档摘要

    STM32MP135D的TIM2使用ETR作为外部时钟时,无法使用PE15作为输入怎么解决?

    主芯片为STM32MP135D,使用最新的STM32CubeMX配置TIM2为外部时钟模式2,管脚选择PE15 实测计数器不会增加,当改用PA15时是正常的;参考最新手册看明显有问题,
    发表于 05-28 06:17