Linux环境下STM32开发实战指南

linux下开发stm32

时间:2024-12-04 00:50


Linux下STM32开发指南:从入门到实践 在嵌入式系统开发领域,STM32系列微控制器因其高性能和低功耗特性而备受青睐

    尽管传统的STM32开发多依赖于Windows系统下的Keil-MDK等集成开发环境,但随着开源社区的壮大和Linux系统的发展,越来越多的开发者开始选择在Linux环境下进行STM32开发

    本文将详细介绍如何在Linux系统下搭建STM32开发环境,并进行高效的开发工作

     一、搭建开发环境 1. 准备工作 首先,确保你的PC上已经安装了Linux系统,可以是Ubuntu、Kubuntu或其他基于Debian的发行版

    这里以Ubuntu 20.04为例

     其次,准备一块STM32开发板,如STM32F103ZET6

    不同型号的STM32开发板所需的开发工具基本一致,但启动文件和链接文件可能有所不同

     2. 安装交叉编译工具链 STM32是基于ARM Cortex-M系列处理器的芯片,因此需要安装支持ARM Cortex-M系列处理器的交叉编译器

    常用的编译器是`arm-none-eabi-gcc`

     可以通过以下命令安装: sudo apt-get install gcc-arm-none-eabi 或者,你可以从ARM官方网站下载对应版本的交叉编译器并进行手动安装

    下载完成后,解压并配置环境变量,使编译器能够在任何目录下运行

     tar -xjvf gcc-arm-none-eabi-x.x-xxxx.xx-x86_64-linux.tar.bz2 sudo mv gcc-arm-none-eabi-x.x-xxxx.xx-x86_64-linux ~/gcc-arm-none-eabi sudo nano ~/.bashrc 在`.bashrc`文件的最后一行添加以下代码: export PATH=$PATH:/home/your_username/gcc-arm-none-eabi/bin 保存并退出后,刷新环境变量: source ~/.bashrc 运行`arm-none-eabi-gcc -v`,如果出现版本信息,说明编译器安装成功

     3. 安装OpenOCD OpenOCD是一款开源的调试工具,用于连接JTAG、SWD接口以及串口连接的调试器

    安装OpenOCD的步骤如下: sudo apt-get install openocd 或者,你也可以从OpenOCD官方网站下载源码并进行编译安装

    下载完成后,解压并进入源码目录: tar -zxvf openocd-x.x.x.tar.gz cd openocd-x.x.x 运行配置脚本,并根据使用的下载器添加配置参数

    例如,如果你使用的是CMSIS-DAP下载器,可以运行: ./configure --enable-cmsis-dap 解决依赖问题后,进行编译和安装: sudo apt-get install libhidapi-dev libusb-1.0-0-dev make sudo make install 安装完成后,OpenOCD的使用文件会存放在`/usr/local/share/openocd/scripts/`目录下

     4. 安装VSCode VSCode是一款强大的代码编辑器,支持多种插件,非常适合STM32开发

    你可以从VSCode官方网站下载deb安装包并进行安装

     5. 安装ST-Link工具 ST-Link是STM32系列微控制器的官方调试工具

    你可以从ST-Link的GitHub页面下载最新版本的deb安装包并进行安装

     需要注意的是,安装完成后可能需要手动修改快捷方式文件配置信息,以启动ST-Link工具

     二、创建STM32工程 1. 获取STM32标准库 STM32标准库包含了所有必要的硬件抽象层和外设库函数

    你可以从STMicroelectronics官方网站下载标准库文件,并创建一个文件夹来存放项目文件

     2. 创建工程目录 创建以下目录结构来组织你的项目文件: your_project/ ├── doc/ ├── lib/ │ ├── CMSIS/ │ │ ├── core_cm3.c │ │ ├── core_cm3.h │ │ ├── startup/ │ │ │ ├── ... │ │ ├── stm32f10x.h │ │ ├── system_stm32f10x.c │ │ └── system_stm32f10x.h │ └── FWlib/ │ ├── inc/ │ │ ├── misc.h │ │ ├── stm32f10x_adc.h │ │ ├── ... │ └── src/ │ ├── ... ├── src/ └── Makefile 3. 编写Makefile Makefile是Makefile工程的核心文件,用于编译和链接STM32项目

    你需要根据具体项目需求编写Makefile文件

     例如: File : Makefile This file is compiling ARM Cortex-M project. toolchain := arm-none-eabi- target := stm32f103 CC :=$(toolchain)gcc AS :=$(toolchain)as LD :=$(toolchain)ld OBJCOPY:= $(toolchain)objcopy OBJDUMP:= $(toolchain)objdump SIZE :=$(toolchain)size archive := cortex-m3 float_abi := soft fpu := vfpv3 CC_CONFIG := -mcpu=$(archive) -mthumb -mfpu=$(fpu) -mfloat-abi=$(float_abi) -O0 -Ilib/CMSIS/inc -Ilib/FWlib/inc -ffunction-sections -fdata-sections AS_CONFIG := -mcpu=$(archive) -mthumb -mfpu=$(fpu) -mfloat-abi=$(float_abi) -W -mimplicit-it=thumb LD_CONFIG := -T stm32_flash.ld --gc-sections INCDIRS := lib/CMSIS/inc lib/FWlib/inc src SRCDIRS := lib/CMSIS/src lib/FWlib/src src %.o: %.s $(AS)$(AS_CONFIG) -o $@ $< %.o: %.c $(CC)$(CC_CONFIG) -I$(INCDIRS) -c -o $@ $< all:$(SRCDIRS:%=