文章目录
前言
这是我自己断断续续学习STM32以来准备以实战化的形式做一些教程和自己的学习总结,将以标准库和HAL两种库进行开发。
一、STM32标准库和HAL库分别是什么?
首先我们需要了解一下常见的名词有一个大概的印象
固件:为了支持不同硬件功能的底层驱动,目的为了节省内存。因为单片机内存有限且会影响速度,所以不同功能定制了不同的固件,而32的库函数就能简单理解为许多的固件包。
以上所说的固件包是指“STM32 标准函数库”,它是由 ST 公司针对 STM32 提供的函数接口,即 API,开发者可调用这些函数接口来配置 STM32的寄存器,使开发人员得以脱离最底层的寄存器操作,有开发快速,易于阅读,维护成本低等优点。
HAL库是为了配和CUNEMX软件ST公司专门配置的库集合,使用cubemx软件可以直接选择引脚功能以后自动配置底层驱动(也就是固件包选择有用的使用)软件的安装网上有资料可以自行下载安装
二、HAL库开发
cubemx新建工程
1.选择 CPU 型号
这个根据你开发板使用的 CPU 具体的型号来选择, 我的开发板芯片选 STM32F103ZET 型号。我们直接在搜索STM32F103ZET 最终确认 STM32F103ZETx 为我们实际使用型号.
2.确认时钟源
进入工程后打开 RCC 选项,选择 Crystal/Ceramic Resonator,即使用外部晶振作为HSE 的时钟源。
3. 配置 IO 口
这个工程简单控制一个 LED 周期闪烁,我们只需要配置一个 IO 即可,这里选定控制红色 LED 的引脚 PB5,通过搜索框搜索可以定位 IO 口的引脚位置,图中会闪烁显示,配置 PB5 的属性为 GPIO_Output。
4. 配置系统时钟
开发板的外部晶振为 8MHz,我们填入 8;通道选择 LSE;PLLM 选择为/1;倍频系数N 选择为 x9;系统时钟选择 PLLCLK;系统时钟设定为 72Mz;APB1 分频系数选择为/2 即PCLK1 位 36MHz;APB2 分频系数选择为/1 即 PCLK2 位 72MHz。
5. 进一步配置 IO 的具体属性
点击 Configuration,进入系统详细配置,选着 GPIO,配置PH10 的默认电平,开漏输出,无上下拉,低速模式。引脚标签为 LED_R。
6. 配置工程属性
为了防止cubemx的文件产生在main中,在配置文件中Code Generaor 勾上Generate peripheral initialization as a pair of ‘.c/.h’ files per peripheral
将外围设备初始化为每台外设一对“.c/.h”文件
为了防止出现,烧录以后仿真器无法连接的情况,我们在 Pinout 里将 SYS 里面的Debug 设置成 Serial Wire,这样问题得到解决。
7.生成代码
点击 GENERATE CODE,在设定的路径成功生成代码,选着打开工程。
8. 添加用户测试代码
打开工程后在 main 函数中的主循环插入用户代码,目的是让红色 LED 周期闪烁。
9. 配置下载调试工具
配置下载工具为 CMSIS-DAP,程序下载完后复位并运行。
代码如下(示例):
while (1)
{
HAL_Delay(500);
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_RESET);
HAL_Delay(500);
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_SET);
}
三.下载HAL库的官方固件包对应操作函数进行编程
如果觉得麻烦可以直接下载我上传的内容link.
总结
1.固件是什么,为什么要使用固件?
2.寄存器是什么?
3.标准库是什么?
4.HAL库是什么?
5.HAL库与标准库的区别在哪里?
6.cubemx配置第一个工程。