系统时钟配置错误而产生的串口定时器等问题


在 STM32 中,有五个时钟源,为 HSI、HSE、LSI、LSE、PLL。从时钟频率来分可以分为
高速时钟源和低速时钟源,在这 5 个中 HIS,HSE 以及 PLL 是高速时钟,LSI 和 LSE 是低速时
钟。从来源可分为外部时钟源和内部时钟源,外部时钟源就是从外部通过接晶振的方式获取时
钟源,其中 HSE 和 LSE 是外部时钟源,其他的是内部时钟源。下面我们看看 STM32 的 5 个时
钟源,我们讲解顺序是按图中红圈标示的顺序:
①、HSI 是高速内部时钟,RC 振荡器,频率为 8MHz。
②、HSE 是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为
4MHz~16MHz。我们的开发板接的是 8M 的晶振。
③、LSI 是低速内部时钟,RC 振荡器,频率为 40kHz。独立看门狗的时钟源只能是 LSI,同
时 LSI 还可以作为 RTC 的时钟源。
④、LSE 是低速外部时钟,接频率为 32.768kHz 的石英晶体。这个主要是 RTC 的时钟源。
⑤、PLL 为锁相环倍频输出,其时钟输入源可选择为 HSI/2、HSE 或者 HSE/2。倍频可选择为2~16 倍,但是其输出频率最大不得超过 72MHz。
上面我们简要概括了 STM32 的时钟源,那么这 5 个时钟源是怎么给各个外设以及系统提
供时钟的呢?这里我们将一一讲解。我们还是从图的下方讲解起吧,因为下方比较简单。
图中我们用 A ~E 标示我们要讲解的地方。
A. MCO 是 STM32 的一个时钟输出 IO(PA8),它可以选择一个时钟信号输出,可以
选择为 PLL 输出的 2 分频、HSI、HSE、或者系统时钟。这个时钟可以用来给外
部其他系统提供时钟源。
B. 这里是 RTC 时钟源,从图上可以看出,RTC 的时钟源可以选择 LSI,LSE,以及
HSE 的 128 分频。
C. 从图中可以看出 C 处 USB 的时钟是来自 PLL 时钟源。STM32 中有一个全速功能
的 USB 模块,其串行接口引擎需要一个频率为 48MHz 的时钟源。该时钟源只能
从 PLL 输出端获取,可以选择为 1.5 分频或者 1 分频,也就是,当需要使用 USB
模块时,PLL 必须使能,并且时钟频率配置为 48MHz 或 72MHz。
D. D 处就是 STM32 的系统时钟 SYSCLK,它是供 STM32 中绝大部分部件工作的时
钟源。系统时钟可选择为 PLL 输出、HSI 或者 HSE。系统时钟最大频率为 72MHz,
当然你也可以超频,不过一般情况为了系统稳定性是没有必要冒风险去超频的。
E. 这里的 E 处是指其他所有外设了。从时钟图上可以看出,其他所有外设的时钟最
终来源都是 SYSCLK。SYSCLK 通过 AHB 分频器分频后送给各模块使用。这些
模块包括:
①、AHB 总线、内核、内存和 DMA 使用的 HCLK 时钟。
②、通过 8 分频后送给 Cortex 的系统定时器时钟,也就是 systick 了。
③、直接送给 Cortex 的空闲运行时钟 FCLK。
④、送给 APB1 分频器。APB1 分频器输出一路供 APB1 外设使用(PCLK1,最大
频率 36MHz),另一路送给定时器(Timer)2、3、4 倍频器使用。
⑤、送给 APB2 分频器。APB2 分频器分频输出一路供 APB2 外设使用(PCLK2,
最大频率 72MHz),另一路送给定时器(Timer)1 倍频器使用。
其中需要理解的是 APB1 和 APB2 的区别,APB1 上面连接的是低速外设,包括电源接口、
备份接口、CAN、USB、I2C1、I2C2、UART2、UART3 等等,APB2 上面连接的是高速外设包
括 UART1、SPI1、Timer1、ADC1、ADC2、所有普通 IO 口(PA~PE)、第二功能 IO 口等。
这是f4的时钟源码详解
重点参考:STM32固件库使用手册的中文翻译版PDF文档中的rcc时钟。
我目前只是会配置系统时钟的时钟,一般默认是72Mhz
外部高速时钟的配置及最后的系统时钟配置
在system_stm32f10x.c文件中的setsysclockto72()函数中有设置倍频系数的地方,对应的头文件中有设置外部高速时钟值的地方,如果外部晶振不采用8Mhz,则需要手动更改这个地方的值。

关于系统时钟的配置问题,如是stm32f1的系统时钟为72Mhz相关推荐

  1. esp32 rtc 时钟设置不对_STM32入门系列-STM32时钟系统,STM32时钟树

    时钟对于单片机来说是非常重要的,它为单片机工作提供一个稳定的机器周期从而使系统能够正常运行.时钟系统犹如人的心脏,一旦有问题整个系统就崩溃.我们知道STM32属于高级单片机,其内部有很多的外设,但不是 ...

  2. 卫星授时设备(NTP时钟服务器)应用高速公路监控系统

    卫星授时设备(NTP时钟服务器)应用高速公路监控系统 卫星授时设备(NTP时钟服务器)应用高速公路监控系统 尤其是近几年来,伴随着我国经济的快速发展,对高速公路信息化的需要也呈现出高度智能化.高度信息 ...

  3. STM32系统学习——RCC(使用HSE/HSI配置时钟)

    ** STM32系统学习--RCC(使用HSE/HSI配置时钟) ** RCC :reset clock control 复位和时钟控制器.主要讲解时钟部分,特别是要着重理解时钟树,理解了时钟树,ST ...

  4. GPS时钟服务器|北斗卫星授时系统|NTP网络时间服务器|时间同步显示系统

    http://www.cnblogs.com/yfcs888/archive/2013/01/14/bdssxt.html 北斗授时系统(北斗卫星授时系统-北斗授时服务器) 北斗授时系统(北斗卫星授时 ...

  5. linux系统发送信号的系统调用是,linux系统编程之信号:信号发送函数sigqueue和信号安装函数sigaction...

    信号发送函数sigqueue和信号安装函数sigaction sigaction函数用于改变进程接收到特定信号后的行为. sigqueue()是比较新的发送信号系统调用,主要是针对实时信号提出的(当然 ...

  6. 新闻发布系统类图_如何熟悉一个系统?(内含知识大图)

    开发人员经常会面临下面一些场景: 新人入职,需要学习已有系统,作为 landing 的一部分,如何学习? 被拉过去参与一个陌生系统的迭代开发或者系统维护(bugfix),如何快速上手? 同事离职或转岗 ...

  7. 嵌入式linux系统移植的四大步骤_嵌入式系统移植步骤

    在嵌入式系统移植中重要的一部分是操作系统的移植,与其它操作系统相比,Linux大的特点:它是一款遵循GPL的操作系统,我们可以自由地使用.修改.和扩展它.正是由于这一特色,嵌入式系统移植过程中Linu ...

  8. 此服务器的时钟与主域控制器的时钟不一致_基于域的GPS时钟同步配置

    本篇约700字6图 GPS时钟同步主题分享 时钟不同步会导致 终端数据丢失 观测迟.漏发报 数据采集时间不准 本文 Vaisala时钟配置步骤 特点: TCP/IP网络时钟信号 基于域管理 Serve ...

  9. 基于微型计算机系统的实时时钟设计,基于51单片机的实时时钟设计报告.doc

    基于51单片机的实时时钟设计报告 PAGE PAGE 24 课程设计(论文)任务书 信息工程 学 院 信息工程 专 业 (2) 班 一.课程设计(论文)题目 嵌入式课程设计 二.课程设计(论文)工作自 ...

最新文章

  1. tl-wn821n无线网卡驱动 linux,tl-wn821n win10驱动
  2. 更改文件和目录(及子目录)的拥有者
  3. 筋斗云newcloud错误码列表
  4. Radware LP 增加线路接口操作
  5. NET在后置代码中输入JS提示语句(背景不会变白)
  6. mysql经典四表查询_mysql经典问题四表查询(教师,学生,成绩,课程表)
  7. android EditText使用指南
  8. Layout-pcb之天线设计
  9. Traceback (most recent call last):IndexError: list assignment index out of range
  10. 输电线缺陷检测 计算机工程与设计,小波去噪和混沌理论应用于输电线缺陷检测-计算机工程与应用.pdf...
  11. 手把手逆向Playcanvas天空盒编码(一次乌龙的任务)
  12. 使用photoView完成照片查看器(本地图片)
  13. 课程预约小程序开发需要哪些功能?
  14. 最短路径(加权有向图)
  15. 自行车 forum.php,[你们城里人真会玩]关于大行折叠自行车18速..
  16. Pycharm导入conda虚拟环境时报错error code:1
  17. IDEA如何设置热启动
  18. ceph (cephadm)集群部署
  19. 用表格做出的阴影扇形图
  20. 彩色星球与阿里云签署合作备忘录;京东科技和软通动力达成战略合作 | 全球TMT...

热门文章

  1. 微信jssdk已无力吐槽
  2. StringBuffer的equals
  3. 利用Glide 对设备上的图片进行压缩并保存
  4. 私有5g网络_2020-2026全球与中国私有LTE和5G网络市场现状及未来发展趋势
  5. graphql的调用
  6. Unity基础(四)--3D数学
  7. vue 水印插件 插件:directives.js
  8. linux修改主机名命令
  9. Linux命令行操作串口收发数据(stty命令)
  10. 判断模式分解是否为无损连接的方法