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
    +关注

    关注

    2239

    文章

    10671

    浏览量

    348720
  • USART
    +关注

    关注

    1

    文章

    186

    浏览量

    30407
  • 时钟配置
    +关注

    关注

    1

    文章

    14

    浏览量

    8576
收藏 人收藏

    评论

    相关推荐

    STM32CubeMX 6.5.0时钟配置页面的ADC时钟源无法配置怎么解决?

    最新版STM32CubeMX 6.5.0,启动ADC功能后,时钟配置页面的ADC时钟源仍无法配置STM
    发表于 03-25 07:04

    雅特力AT32F423时钟配置

    简介时钟是芯片正确高效运行的基础,正确的时钟配置是芯片能正确运行的必要条件,其重要性不言而喻。AT32各系列产品的时钟配置部分可能存在细微的
    的头像 发表于 02-19 13:26 213次阅读
    雅特力AT32F423<b class='flag-5'>时钟</b><b class='flag-5'>配置</b>

    雅特力AT32WB415时钟配置

    简介时钟是芯片正确高效运行的基础,正确的时钟配置是芯片能正确运行的必要条件,其重要性不言而喻。AT32各系列产品的时钟配置部分可能存在细微的
    的头像 发表于 12-20 08:14 213次阅读
    雅特力AT32WB415<b class='flag-5'>时钟</b><b class='flag-5'>配置</b>

    浅谈5G小基站中时钟及无源射频器件的应用

    浅谈5G小基站中时钟及无源射频器件的应用
    的头像 发表于 11-24 18:11 616次阅读
    <b class='flag-5'>浅谈</b>5G小基站中<b class='flag-5'>时钟</b>及无源射频器件的应用

    串口在STM32中的配置

    首先要明确几点:使用STM32串口外设中的哪一个?串口发送或者接收数据?串口相关的参数配置?发送或接收是否使用到中断? 下方为串口发送的配置。 1. RCC开启USART、串口TX/R
    的头像 发表于 11-10 16:09 1597次阅读
    串口在<b class='flag-5'>STM32</b>中的<b class='flag-5'>配置</b>

    使用STM32CCube IDE 配置 STM32H7VGT6 ADC时钟的问题

    小弟第一次使用STM32Cube IDE编写给STM32H743VGT6配置ADC功能 发现参数配置中没有时钟分频因子选项!更奇怪的是
    发表于 11-06 15:57

    STM32的SysTick时钟源来自哪里?

    STM32的SysTick时钟源来自哪里?
    的头像 发表于 10-26 15:58 954次阅读
    <b class='flag-5'>STM32</b>的SysTick<b class='flag-5'>时钟</b>源来自哪里?

    STM32失能时钟和复位外设的区别

    STM32失能时钟和复位外设的区别
    的头像 发表于 10-17 11:48 554次阅读
    <b class='flag-5'>STM32</b>失能<b class='flag-5'>时钟</b>和复位外设的区别

    适用于STM32F0xx微控制器的时钟配置工具

    电子发烧友网站提供《适用于STM32F0xx微控制器的时钟配置工具.pdf》资料免费下载
    发表于 09-21 10:45 3次下载
    适用于<b class='flag-5'>STM32</b>F0xx微控制器的<b class='flag-5'>时钟</b><b class='flag-5'>配置</b>工具

    如何配置SWM系列系统时钟

    如何配置SWM系列系统时钟
    的头像 发表于 09-18 16:35 405次阅读
    如何<b class='flag-5'>配置</b>SWM系列系统<b class='flag-5'>时钟</b>?

    菱沃铂MCU的时钟配置

    对于单片机来说,时钟是必不可少的模块,如果将MCU比作是人,那时钟就是人的心脏。没有时钟,MCU是动不起来的,所以时钟是非常重要的。时钟单元
    发表于 07-18 16:45 416次阅读
    菱沃铂MCU的<b class='flag-5'>时钟</b><b class='flag-5'>配置</b>

    浅谈STM32单片机的时钟系统

      今天来总结一下stm32单片机的时钟系统,也就是时钟树的相关知识点。单片机正常工作的三要素是电源、时钟、复位电路。由此可以说,
    发表于 06-12 16:45 1424次阅读
    <b class='flag-5'>浅谈</b><b class='flag-5'>STM32</b>单片机的<b class='flag-5'>时钟</b>系统

    雅特力AT32F425时钟配置

    时钟是芯片正确高效运行的基础,正确的时钟配置是芯片能正确运行的必要条件,其重要性不言而喻。AT32各系列产品的时钟配置部分可能存在细微的差异
    的头像 发表于 05-23 09:34 417次阅读
    雅特力AT32F425<b class='flag-5'>时钟</b><b class='flag-5'>配置</b>

    雅特力AT32F415时钟配置

    时钟是芯片正确高效运行的基础,正确的时钟配置是芯片能正确运行的必要条件,其重要性不言而喻。 AT32各系列产品的时钟配置部分可能存在细微的差
    的头像 发表于 05-11 12:27 853次阅读
    雅特力AT32F415<b class='flag-5'>时钟</b><b class='flag-5'>配置</b>

    雅特力AT32F421的时钟配置解析

    在进行时钟配置之前,应充分了解对应芯片的时钟树结构,这样在进行时钟配置时才会游刃有余。对于系统时钟
    发表于 05-11 12:26 962次阅读
    雅特力AT32F421的<b class='flag-5'>时钟</b><b class='flag-5'>配置</b>解析