STM32 基于HAL库和STM32cubeIDE的应用教程(一)--安装环境
如果有什么不懂的地方欢迎私聊博主,欢迎小白,博主必一一解答。
1. 安装所需工具和软件
在开始编程之前,您需要安装以下软件:
- STM32CubeIDE:这是一个集成开发环境(IDE),集成了 STM32 的开发工具,包括编辑器、编译器、调试器等。
- 下载链接:STM32软件开发套件 - 意法半导体STMicroelectronics
- STM32CubeMX:用于生成初始化代码、配置外设等,STM32CubeIDE 中已经集成了此工具。
- 下载链接:STM32配置程序和代码生成器 - 意法半导体STMicroelectronics
2. 创建 STM32 项目
- 打开 STM32CubeIDE,选择
File
->New
->STM32 Project
。 - 在弹出的窗口中,选择您的目标 STM32 微控制器或开发板。您可以通过型号或开发板选择。例如,选择
STM32F103C8
或Nucleo-F103RB
。 - 配置项目名称和存储路径后,点击
Finish
创建项目
3. 配置外设
- 打开 STM32CubeMX 配置界面:如果在 STM32CubeIDE 中创建项目,默认会自动打开 STM32CubeMX 配置界面。
- 在此界面中,您可以选择配置外设。例如:
- 配置 GPIO 引脚,选择输入或输出模式。
- 配置 UART,设置波特率、数据位、停止位等。
- 配置 定时器 (TIM)、ADC、DAC 等外设。
4. 生成代码
- 配置好外设后,点击
Project
菜单,输入项目名称,选择代码生成的框架为 HAL(默认为 HAL 库)。 - 选择 Toolchain/IDE 为
STM32CubeIDE
。 - 点击
Generate Code
,STM32CubeMX 会根据配置生成初始化代码,并将代码导入到 STM32CubeIDE。
5. 编写应用代码
在 STM32CubeIDE 中,打开生成的代码,可以开始编写应用代码。
-
主函数 (main.c):在
main.c
中,您可以看到由 STM32CubeMX 自动生成的初始化代码。例如,在
main()
函数中初始化了 HAL 库、外设时钟、GPIO 等。 -
#include "main.h" int main(void) { HAL_Init(); // 初始化 HAL 库 SystemClock_Config(); // 配置系统时钟 MX_GPIO_Init(); // 初始化 GPIO 外设 MX_USART1_UART_Init(); // 初始化 UART 外设 while (1) { // 主循环代码 } }
外设驱动:在
gpio.c
、uart
.c等文件中,您可以看到由 STM32CubeMX 生成的外设驱动代码。
6. 编译并烧录程序
- 编译程序:点击 STM32CubeIDE 中的
Build
按钮(类似小锤子图标),编译您的代码。 - 烧录到 STM32:连接您的开发板,并点击
Debug
按钮进行烧录和调试。
7. 使用 HAL 库函数进行操作
STM32 HAL 库封装了很多底层操作,您可以直接使用 HAL 库提供的函数。
// 设置 GPIO 引脚为输出
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET); // 设置引脚高电平
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET); // 设置引脚低电平
uint8_t data[] = "Hello, STM32!";
HAL_UART_Transmit(&huart1, data, sizeof(data), 1000); // 通过 UART 发送数据
8. 调试与测试
使用 STM32CubeIDE 进行调试,您可以设置断点、查看寄存器和变量,帮助诊断问题。
9. 常用 HAL 库函数
- HAL_GPIO:用于控制 GPIO 引脚。
- HAL_UART:用于配置和操作 UART 外设。
- HAL_TIM:用于定时器操作。
- HAL_ADC:用于 ADC 转换。
- HAL_I2C / HAL_SPI:用于 I2C / SPI 外设操作。
10. 文档和支持
STM32 HAL 库的官方文档和示例代码都可以在 STM32Cube 中找到,提供了全面的 API 参考。