项目简介
本项目是一个简单且完整的通用STM32裸机编程指南项目,目的是帮助初学者摆脱集成开发环境(IDE)的限制,以裸机编程方式控制STM32微控制器上的内置LED灯闪烁,让初学者更好地理解STM32硬件工作原理和底层编程技巧。
项目的主要特性和功能
- 裸机编程:不依赖STM32CubeIDE等IDE,手动配置和编写代码,深入理解STM32工作机制。
- LED控制:通过操作GPIO寄存器,实现内置LED灯的闪烁功能。
- 通用适配:适用于多种STM32型号,可根据不同型号调整相关配置。
- 支持多语言:代码可在C和C++之间灵活切换,使用项目提供的Makefile可轻松实现不同语言源文件的编译。
安装使用步骤
前提条件
- 硬件:一台安装Linux系统的计算机、Nucleo STM32开发板(如STM32G474RE)。
- 软件:STM32CubeIDE(仅用于获取初始文件)、arm-none-eabi工具链、lstdc++库、stlink-tools。安装命令如下:
bash sudo apt-get remove binutils-arm-none-eabi gcc-arm-none-eabi sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa sudo apt-get update sudo apt-get install gcc-arm-none-eabi sudo apt-get install gdb-arm-none-eabi sudo apt install libstc++-arm-none-eabi-newlib sudo apt-get install stlink-tools
项目搭建
- 下载必要文件:
- 文档:从ST官方网站下载对应型号的STM32官方数据手册、参考手册和Nucleo用户手册。
- 源代码:从STM32CubeIDE中获取相关头文件、启动文件和链接脚本文件。具体操作:打开STM32CubeIDE,创建新的空项目,选择对应型号的开发板,完成创建后从项目文件夹中提取所需文件。
- Makefile:使用项目提供的通用Makefile。
- 创建项目目录:创建一个新文件夹作为项目根目录,将Makefile放入其中,创建
core
文件夹,并将获取的头文件、启动文件和链接脚本文件放入core
文件夹。同时,在core
文件夹中添加main.h
和main.c
文件,也可按需添加gpio.h
和gpio.c
文件。 - 配置链接脚本:根据STM32数据手册,确定FLASH和RAM的长度,并在链接脚本的
MEMORY
块中修改相应长度值。
代码编写与编译
-
编写代码:在
main.c
或gpio.c
文件中实现控制LED闪烁的代码,示例代码如下: ```c void gpioToggleLed() { RCC->AHB2ENR |= RCC_AHB2ENR_GPIOAEN; GPIOA->MODER &= ~GPIO_MODER_MODE5_Msk; GPIOA->MODER |= 0x1 << GPIO_MODER_MODE5_Pos;for (;;) { GPIOA->ODR |= GPIO_ODR_OD5; spin(999999); GPIOA->ODR &= ~GPIO_ODR_OD5; spin(999999); } }
`` 2. 编译代码:打开包含Makefile的项目文件夹,在终端中运行
make命令进行编译,编译成功后会在
build文件夹中生成目标文件。 3. 烧录代码:将STM32开发板通过USB连接到计算机,在终端中运行
make flash`命令将代码烧录到开发板中,此时开发板上的内置LED灯应开始闪烁。
其他操作
- 清理项目:运行
make clean
命令可删除build
文件夹中的所有生成文件。 - 调试代码:运行
make debug
命令可使用GDB进行代码调试。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】