STM32 新手入门教程
目录
一、前言
二、准备工作
1. 硬件设备
2. 软件环境
三、安装开发环境
1. 安装 Keil MDK
2. 安装 STM32CubeMX
四、创建第一个项目
1. 使用 STM32CubeMX 创建项目
2. 在 Keil MDK 中打开项目
五、编写代码
1. 了解项目结构
2. 编写第一个程序
3. 编译和下载程序
六、调试程序
1. 设置调试环境
2. 调试程序
七、学习资源推荐
1. 官方文档
2. 在线教程和论坛
3. 书籍
八、总结
一、前言
STM32 微控制器以其强大的性能、丰富的外设和广泛的应用场景,成为了嵌入式开发领域的热门选择。对于新手来说,STM32 的学习可能会有一定的挑战,但只要掌握了正确的方法和步骤,就能够快速入门并开始自己的嵌入式开发之旅。本文将为新手提供一个全面的 STM32 入门教程,帮助大家快速上手。
二、准备工作
1. 硬件设备
2. 软件环境
三、安装开发环境
1. 安装 Keil MDK
2. 安装 STM32CubeMX
四、创建第一个项目
1. 使用 STM32CubeMX 创建项目
2. 在 Keil MDK 中打开项目
五、编写代码
1. 了解项目结构
在 Keil MDK 中打开项目后,可以看到项目的结构。主要包括以下几个部分: HALLIB下面存放的是ST官方提供的HAL库文件,每一个源文件stm32f4xx_hal_ppp.c
都对应一个头文件 stm32f4xx_hal_ppp.h。分组内的源文件我们可以根据工程需要添加和删除。
这里对于跑马灯实验,我们需要添加 11 个源文件。CORE 下面存放的是固件库必须的核心头文件和启动文件。这里面的文件用户不需要
修改。大家可以根据自己的芯片型号选择对应的启动文件。SYSTEM 是 ALIENTEK 提供的共用代码,这些代码在第五章都有详细讲解。 HARDWARE 下面存放的是每个实验的外设驱动代码,他的实现是通过调用 HALLIB下面的HAL库文件函数实现的,比如led.c中函数调用stm32f4xx_hal_gpio.c内定义的函数对led
进行初始化,这里面的函数是讲解的重点。后面的实验中可以看到会引入多个源文件。USER 下面存放的主要是用户代码。但是 system_stm32f4xx.c 文件用户不需要修改,
同时 stm32f4xx_it.c 里面存放的是中断服务函数,这两个文件的作用在 3.3 节有讲解。main.c 函
数主要存放的是主函数了。
2. 编写第一个程序
#include "stm32f4xx_hal.h"
int main(void)
{
HAL_Init(); //初始化HAL库
Stm32_Clock_Init(360,25,2,8); //设置时钟,180Mhz
delay_init(180); //初始化延时函数
LED_Init(); //初始化LED
while(1)
{
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_RESET); //LED0对应引脚PB1拉低,亮,等同于LED0(0)
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_SET); //LED1对应引脚PB0拉高,灭,等同于LED1(1)
delay_ms(500); //延时500ms
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_SET); //LED0对应引脚PB1拉高,灭,等同于LED0(1)
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_RESET); //LED1对应引脚PB0拉低,亮,等同于LED1(0)
delay_ms(500); //延时500ms
}
}
void LED_Init(void)
{
GPIO_InitTypeDef GPIO_Initure;
__HAL_RCC_GPIOB_CLK_ENABLE(); //开启GPIOB时钟
GPIO_Initure.Pin=GPIO_PIN_0|GPIO_PIN_1; //PB1,0
GPIO_Initure.Mode=GPIO_MODE_OUTPUT_PP; //推挽输出
GPIO_Initure.Pull=GPIO_PULLUP; //上拉
GPIO_Initure.Speed=GPIO_SPEED_HIGH; //高速
HAL_GPIO_Init(GPIOB,&GPIO_Initure);
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_SET); //PB0置1,默认初始化后灯灭
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_SET); //PB1置1,默认初始化后灯灭
}
3. 编译和下载程序
六、调试程序
1. 设置调试环境
2. 调试程序
七、学习资源推荐
1. 官方文档
2. 在线教程和论坛
3. 书籍
八、总结
STM32 的学习需要一定的时间和耐心,但只要掌握了正确的方法和步骤,就能够快速入门并开始自己的嵌入式开发之旅。本文为新手提供了一个全面的 STM32 入门教程,希望能够帮助大家快速上手。在学习过程中,建议大家多动手实践,遇到问题多查阅资料和请教他人,相信大家一定能够掌握 STM32 的开发技术。
作者:千千道