STM32时钟配置及相关问题

发布者:紫色小猫最新更新时间:2021-01-20 来源: eefocus关键字:STM32  时钟  配置 手机看文章 扫描二维码
随时随地手机看文章

Ⅰ、写在前面

最近有很多朋友问: 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系统时钟配置的内容,还需要你自己认真阅读以下源代码(建议看一下注释说明)。官方提供的代码从命名上都是很容易理解的。


关键字:STM32  时钟  配置 引用地址:STM32时钟配置及相关问题

上一篇:读懂ST官方网页,有效获取有用资料
下一篇:关于USART很多人都容易忽视的一个问题

推荐阅读最新更新时间:2024-11-07 18:14

stm32 boot启动经验
STM32三种启动模式对应的存储介质均是芯片内置的,它们是: 1)用户闪存 = 芯片内置的Flash。 2)SRAM = 芯片内置的RAM区,就是内存啦。 3)系统存储器 = 芯片内部一块特定的区域,芯片出厂时在这个区域预置了一段Bootloader,就是通常说的ISP程序。这个区 域的内容在芯片出厂后没有人能够修改或擦除,即它是一个ROM区。 在每个STM32的芯片上都有两个管脚BOOT0和BOOT1,这两个管脚在芯片复位时的电平状态决定了芯片复位后从哪个区域开始执 行程序 不同的下载方式对应STM32启动方式也不同,如下图是STM32三种启动方式: ● 第一种启动方式是最常用的用户FLASH启动,正常工作
[单片机]
<font color='red'>stm32</font> boot启动经验
stm32DMA通道 ADC通道
DMA: 1.使用DAC的时候,将转化后得到的模拟信号通过IO口输出的时候,为什么还将IO口配置能输入模式 PS:stm32手册上定义PA4和PA5分别和DAC1通道和DAC2通道相连 ; DMA1和DMA2使用按个通道手册中也是有规定的: 波形数据从内存带DAC是怎么DMA是怎么传输的?: /* 配置DMA2 */ DMA_InitStructure.DMA_PeripheralBaseAddr = DAC_DHR12RD_Address;//外设数据地址 DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)&DualSine12bit ;//内存数据地址 DualSine1
[单片机]
诺基亚(Nokia 5110)5110屏驱动(STM32
一、前期准备 单片机:STM32F103ZET6 开发环境:MDK5.14 库函数:标准库V3.5 Nokia 5110模块:淘宝有售 二、实验效果 三、驱动原理 看5110的数据文档,根据文档要求写。需要完整工程或者有问题的请加QQ:1002521871,验证:呵呵。 四、驱动代码 5110.h #ifndef __NOKIA_5110_H__ #define __NOKIA_5110_H__ #include stm32f10x.h #include gpio.h #include delay.h #include nokiafont.h #define Nokia_CLK PEout(0)
[单片机]
诺基亚(Nokia 5110)5110屏驱动(<font color='red'>STM32</font>)
STM32 NVIC 中断
***************************** STM32 NVIC 中断 一、STM32 的中断分组:STM32 将中断分为 5 个组,组 0~4。该分组的设 置是由 SCB- AIRCR 寄存器的 bit10~8 来定义的。具体的分配关系如表所示: 组…,…,. bit 分配情况 …,…,…,…分配结果 0 …,…,…,…,…,…0:4 …,…,…,…0 位抢占优先级,4 位响应优先级 1 …,…,…,…,…,…1:3 …,…,…,…1 位抢占优先级,3 位响应优先级 2 …,…,…,…,…,…2:2 …,…,…,…2 位抢占优先级,2 位响应优先级 3…,…,…,…,…,…3:1…,…,…,… ,3 位抢占优
[单片机]
51单片机时钟秒表课程设计
这个是我写的作业的方案,单片机课程结课作业,以下是我写的设计方案,写的不咋滴 欢迎拍砖。。 一、详细功能设计 1、基于51单片机倒计时秒表,最大值为9999秒,计时单位为0.1秒; 2、计时的初始值为组员学号后4位,键盘启动/停止计时; 3、设计多个按键,使用键盘选择不同成员的学号作为初始值。 二、8031最小系统设计 1、最小系统设计原理图如图1.0所示: 2、8031最小系统概述; 8031最小系统包含晶振电路与复位电路。 晶振选择12MHZ晶振,晶振电容使用30pf电容瓷片电容。复位电路选择上电复位。 三、硬件设计 1、数码管电路 在本设计中,使用7段共阴极数码管,选择数码管的型号为7SEG-MP
[单片机]
51单片机<font color='red'>时钟</font>秒表课程设计
80c51单片机的基本配置有哪些 80c51单片机各个引脚及功能
  80c51单片机的基本配置有哪些   80C51单片机的基本配置包括:   CPU:80C51单片机的CPU由一个8位的ALU(算术逻辑单元)、一个8位的累加器、一个8位的B寄存器、一个16位的程序计数器和一个8位的状态寄存器组成。   存储器:80C51单片机的存储器包括程序存储器(ROM)、数据存储器(RAM)和特殊功能寄存器(SFR)。   时钟源:80C51单片机支持多种时钟源,包括外部晶体、外部时钟信号、内部振荡器等。   中断系统:80C51单片机支持多种中断源和中断优先级设置,可以灵活处理各种外部事件。   IO端口:80C51单片机的IO端口由多个可编程的输入输出引脚组成,可以连接各种外部设备。   通信接口:
[单片机]
STM32电机矢量控制】记录5——FOC原理大概
FOC控制算法: FOC控制的其实是电机的电磁场方向。转子的转子力矩正比于定子的磁场向量与转子磁场矢量的矢量积。由矢量的关系可知,若使电机的转矩时刻保持最大,则定子磁场向量应与转子磁场向量相互垂直。又因为磁场的大小与方向与电流的大小与方向有着直接的关系,所以在用FOC控制算法控制BLDC时的关键就是控制三相输入的电流大小与方向。而控制电流产生定子磁场与转子磁场垂直的关键在:控制稳定的三相输入电压及其电流向量,并且我们得知道转子的实时位置。 输入电流的方向控制,FOC给出了空间电流矢量的概念。其实质是将三相的电流矢量结合,再分解为垂直和平行于转子磁体轴方向的两个分量即d-q结构。垂直方向的电流分量所产生磁场正交于转子的磁场,这就产生
[单片机]
【<font color='red'>STM32</font>电机矢量控制】记录5——FOC原理大概
发挥Cortex-M3极致性能的全新STM32 F-2系列(ST)
意法半导体(ST)宣布全新STM32 F-2微控制器产品系列正式上市,把Cortex-M3架构性能发挥到极致。 意法半导体全新的STM32 F-2先进微控制器产品系列整合意法半导体先进的90nm制程与创新的自适应实时存储器加速器(ART Accelerator™),成功发挥Cortex-M3架构的极致性能。当以120MHz速度从闪存执行代码时,STM32 F-2 微控制器的处理性能高达150 Dhrystone MIPS,这是Cortex-M3处理器在这个频率下的最高性能。CoreMark测试结果显示,当从闪存执行代码时,该系列产品的动态功耗为 188uA/MHz ,相当于在120MHz时消耗22.5mA电流。除内置现有Cor
[嵌入式]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved