萌新的STM32学习-8
STM32CubeMX 是由 ST 公司开发的图形化代码自动生成工具,能够快速生成初始化代码,
如配置 GPIO,时钟树,中间件等,使用户专注于业务代码的开发。现在 ST 主推 HAL 库代码,
经典的标准外设库已经停止维护了,新产品也只提供 HAL 库的代码,因此,我们学习 HAL 库
是更加有优势的,由于 HAL 库具有低耦合、通用、抽象了硬件层,使得开发者无需太过关注硬
件驱动的实现,使得开发更加的简单快速,更容易维护,因此被越来越多的产品所使用。
通过上一步安装固件库后,我们就可以使用 STM32CubeMX 配置工程,步骤如下:
- 工程初步建立
- HSE 和 LSE 时钟源设置
- 时钟系统(时钟树)配置
- GPIO 功能引脚配置
- 配置 Debug 选项
- 生成工程源码
- 用户程序
这左边是外部时钟晶振
这右边这块是(外部)输入源时钟信号
这两个是内部时钟信号源
2 个外部时钟源:⚫ 高速外部振荡器 HSE (High Speed External Clock signal)
外接石英/陶瓷谐振器,频率为 4MHz~16MHz。本开发板使用的是 8MHz。
⚫ 低速外部振荡器 LSE (Low Speed External Clock signal)
外接 32.768kHz 石英晶体,主要作用于 RTC 的时钟源。
(2)2 个内部时钟源:
⚫ 高速内部振荡器 HSI(High Speed Internal Clock signal)
由内部 RC 振荡器产生,频率为 8MHz。
⚫ 低速内部振荡器 LSI(Low Speed Internal Clock signal)
由内部 RC 振荡器产生,频率为 40kHz,可作为独立看门狗的时钟源。
芯片上电时默认由内部的 HSI 时钟启动,如果用户进行了硬件和软件的配置,芯片才会根
据用户配置调试尝试切换到对应的外部时钟源,所以同时了解这几个时钟源信号还是很有必要
的。如何设置时钟的方法我们会在后文提到。
在正点原子一般HSE接的是8MHz
因为我们从上面了解到经过HSE 以及HSI 才能达到 内部的频率 SYSCLK 是72MHz 但是我们怎样才能达到这个频率呢 我们需要经过一个锁相环PLL达到72MHz 倍乘
因为HSI是8MHz 进来先经过了一个二分频就变成了4 HSE有2分频 和1分频 用内部4乘16=64 也满足不了所需要的72MHz 所以基本上我们用的是外部 的HSE 8x9=72
经过SYSCLK 之后来到了HCLK HCLK其实就是我们的AHB高性能总线 从SYSCLK过来要经过一个分频
来到HCLK之后 会经过2个桥 一个来到APB1 另一个来到APB2
APB1 最大是36M APB2 最大是72M
除了AHB总线之外那么HCLK总线上还会挂载一些外设 和 内核
继而会从APB1 和APB2 各引出一个外设
上面讲述的是高速的部分 接下来叙述一下低速的部分
LSI 与 LSE
LSI是40MHz LSE是 32.768MHz
LSI可以作为IWDG 和 RTC的时钟源
LSE 只作为RTC的时钟源
一些简单的注意事项
由于外部的时钟源振荡器用的是晶体/陶瓷结构 而内部一般来说用的是RC 所以 我们大多会选用外部