当前位置: 首页 > article >正文

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. 硬件设备

  • 开发板:选择一款适合新手的 STM32 开发板,如 STM32F103C8T6 最小系统板。这种开发板价格便宜、资源丰富,非常适合学习和实践。
  • 下载器:用于将编译好的程序下载到开发板中。常见的下载器有 ST-Link、J-Link 等。
  • 电脑:安装开发环境所需的软件。

2. 软件环境

  • 集成开发环境(IDE):推荐使用 Keil MDK 或 CubeIDE。Keil MDK 是一款非常流行的嵌入式开发工具,具有强大的功能和良好的用户体验。CubeIDE 是 ST 官方推出的集成开发环境,集成了 STM32CubeMX 图形化配置工具,方便进行项目配置和代码生成。
  • STM32CubeMX:ST 官方推出的图形化配置工具,可以快速生成 STM32 项目的初始化代码,大大提高开发效率。

三、安装开发环境

1. 安装 Keil MDK

  • 下载 Keil MDK 安装包,可以从 Keil 官方网站或其他可靠渠道下载。
  • 运行安装包,按照提示进行安装。在安装过程中,需要选择安装路径、注册许可证等。
  • 安装完成后,打开 Keil MDK,进行一些基本的设置,如选择芯片型号、设置编译器路径等。

2. 安装 STM32CubeMX

  • 下载 STM32CubeMX 安装包,可以从 ST 官方网站下载。
  • 运行安装包,按照提示进行安装。在安装过程中,需要选择安装路径、安装组件等。
  • 安装完成后,打开 STM32CubeMX,进行一些基本的设置,如选择芯片型号、设置下载器类型等。

四、创建第一个项目

1. 使用 STM32CubeMX 创建项目

  • 打开 STM32CubeMX,选择芯片型号。可以通过搜索芯片型号或从列表中选择。
  • 配置时钟系统。根据实际需求选择外部晶振或内部振荡器,并设置时钟分频系数和倍频系数。
  • 配置外设。根据项目需求,配置 GPIO、UART、SPI、I2C 等外设。可以通过图形化界面进行配置,非常直观方便。
  • 生成代码。配置完成后,点击 “Project” 菜单中的 “Generate Code” 按钮,生成项目的初始化代码。

2. 在 Keil MDK 中打开项目

  • 打开 Keil MDK,点击 “Project” 菜单中的 “Open Project” 按钮,选择刚才生成的项目文件夹中的 “.uvprojx” 文件,打开项目。
  • 在 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. 编写第一个程序

  • 在 “Src” 文件夹中创建一个新的源文件,如 “main.c”。
  • 在 “main.c” 文件中,编写一个简单的程序,如点亮一个 LED 灯。以下是一个示例代码:
#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,默认初始化后灯灭
}
  • 在这个程序中,首先调用HAL_Init函数进行初始化,然后配置 GPIO 引脚为输出模式,最后在一个无限循环中交替点亮和熄灭 LED 灯。

3. 编译和下载程序

  • 在 Keil MDK 中,点击 “Build” 菜单中的 “Build Target” 按钮,编译项目。如果编译成功,会在 “Output” 窗口中显示编译信息。
  • 将下载器连接到开发板和电脑上,然后在 Keil MDK 中点击 “Flash” 菜单中的 “Download” 按钮,将编译好的程序下载到开发板中。

六、调试程序

1. 设置调试环境

  • 在 Keil MDK 中,点击 “Debug” 菜单中的 “Start/Stop Debug Session” 按钮,进入调试模式。
  • 在调试模式下,可以设置断点、单步执行、查看变量值等。

2. 调试程序

  • 设置断点:在代码中需要调试的地方点击鼠标右键,选择 “Insert/Remove Breakpoint” 设置断点。
  • 单步执行:点击 “Debug” 菜单中的 “Step” 或 “Step Over” 按钮,进行单步执行或单步跳过。
  • 查看变量值:在 “Watch” 窗口中,可以添加需要查看的变量,实时查看变量的值。

七、学习资源推荐

1. 官方文档

  • STM32 的官方文档非常详细,包括芯片手册、参考手册、用户手册等。可以从 ST 官方网站下载。
  • 官方文档是学习 STM32 的重要资源,建议新手认真阅读。

2. 在线教程和论坛

  • CSDN、电子发烧友等网站上有很多关于 STM32 的教程和经验分享,可以帮助新手快速入门。
  • STM32 官方论坛也是一个很好的学习资源,可以在上面提问、交流和分享经验。

3. 书籍

  • 《STM32 自学笔记》《STM32 库开发实战指南》等书籍都是非常适合新手学习的书籍。

八、总结

STM32 的学习需要一定的时间和耐心,但只要掌握了正确的方法和步骤,就能够快速入门并开始自己的嵌入式开发之旅。本文为新手提供了一个全面的 STM32 入门教程,希望能够帮助大家快速上手。在学习过程中,建议大家多动手实践,遇到问题多查阅资料和请教他人,相信大家一定能够掌握 STM32 的开发技术。


http://www.kler.cn/a/429168.html

相关文章:

  • SpringMVC 实战指南:打造高效 Web 应用的秘籍
  • mysql8.0 重要指标参数介绍
  • GPT-5 传言:一场正在幕后发生的 AI 变革
  • 异步 HTTP 请求
  • 用 Python 自动化处理日常任务
  • 【React】插槽渲染机制
  • ECharts实战教程:如何生成动态水波纹效果
  • 使用 Nginx 在同一端口部署两个前端项目并配置子路径
  • 【Java】—— 图书管理系统
  • 人工智能与机器学习:真实案例分析及其在各行业的应用前景
  • C语言——字符串指针变量与字符数组(易错分析)
  • 5G模组AT命令脚本-命令发送及回显读取
  • 《Java核心技术I》映射条目的原子更新
  • Ubuntu压缩打包解压
  • [创业之路-187]:《华为战略管理法-DSTE实战体系》-1-从UTStarcom的发展历程,如何辩证的看企业初期发展太顺利中的危机
  • 第1章 Linux系统安装向日葵
  • React 初学者指南:从零开始构建第一个 React 应用
  • 机器学习实战学习笔记:前言与准备
  • 二分模板题
  • 在 Ubuntu 24 上安装 Redis 7.0.15 并配置允许所有 IP 访问
  • JMeter Java请求开发方法
  • Ubuntu 22.04加Windows AD域
  • 【Ubuntu】清理、压缩VirtualBox磁盘空间大小
  • 探索 Webpack:前端工程化的核心驱动力与应用场景全解析
  • 高级java每日一道面试题-2024年12月08日-JVM篇-什么是类加载器?
  • 【模型对比】ChatGPT vs Kimi vs 文心一言那个更好用?数据详细解析,找出最适合你的AI辅助工具!