文章目录
概述: 本文在Windows系统下, 以VS Code + EIDE 为开发工具, 以 arm-none-eabi-gcc 为编译工具, 以 OpenOCD 为烧录工具, 以 STLink 为下载器, 介绍了如何在由这些工具构成的环境下进行STM32开发.
1.开发环境介绍
1.1硬件环境
-
PC:
- 处理器:Intel i7 9750H
- 内存: 16 G
-
STM32 开发板
- 开发板型号: ST NUCLEO-F767ZI
- 芯片型号: STM32F767ZIT6
- RAM:1M
- FLASH:2M
-
下载器
- STLinker V2-1
1.2软件环境
-
操作系统
Windows 10 x64 ver = 1903 (注意: 当前EIDE插件仅支持Windows)
-
开发工具
2. 安装 VS Code + EIDE插件
- VS Code 下载链接, 下载完成后安装,安装过程比较简单, 此处不做说明
- 在 VS Code 的扩展应用商店搜索 EIDE, 并下载安装
- 安装成功后, 在左侧应用栏能够看到一个类似于 CPU 的图标, 表示安装成功
3. 安装 arm-none-eabi-gcc 工具链
- 下载arm-none-eabi-gcc工具链, 下载 win32 版本, 之后进行安装
- 建议(非必须)将安装后的 /bin 目录加入到环境变量中
4. 安装 OpenOCD
- 下载OpenOCD, 并进行安装
- 建议(非必须)将安装后的 /bin 目录加入到环境变量中
5. 安装 STM32 ST-LINK utility
- 下载STM32 ST-LINK utility, 并进行安装
6. EIDE 插件介绍
点击左侧 EIDE 应用图标, 可以看到 EIDE 共有两个区域,operation 区域和project view 区域
1. operation区域
- 打开项目: 打开已有的通过 EIDE 创建的项目
- 新建项目: 新创建一个 EIDE 项目
- 从模板创建项目: 通过模板创建一个新的项目
- 打开串口监视器: 打开串口
- 设置Keil工具链路径: 指定Keil工具链的路径(指定到 Keil/TOOLS.INI 位置)
- 下载缺少的外部工具: 可以帮助打开需要下载的工具链接 如arm-none-eabi-gcc、Jlink等
2. prject view区域
- 源文件视图: 本工程包含的所有源文件的路径
- CMSIS 包: STM32 CMSIS包 (.pack文件)
- 编译配置: 选择编译工具链, 可以是arm-none-eabi-gcc、ARM C Complier Version5/6(Keil编译器)等
- cpuType: STM32 芯片类型
- floatPointHardWare: 硬件浮点选项
- useCustomScatterFile: 是否选用自定义链接脚本
- storageLayout: RAM/FLASH 布局(类似Keil里的内存区域分配)
- options: 编译选项 包括优化等级等
- 烧录配置: 烧录程序所用的工具(所选工具不同 其子项也不同 此处以openocd为例)
- bin: 待烧录的程序
- target: 目标芯片类型
- interface: 下载器接口类型
- 项目依赖: 本工程项目的依赖项
- 包含目录: 工程包含的头文件目录 (注意 其会自动包含目标目录下的所有叶子目录项 但不会包含中间目录)
- 库目录: 工程所使用的的库文件路径
- 宏定义: 作用整个工程的宏定义
7. 配置 EIDE
-
点击 VS Code 左下角 管理, 并选择 设置 选项, 进入VS Code 设置界面.
-
在用户设置-扩展-Embedded IDE中, 需要更改的配置如下 (路径相关设置 根据自己实际情况 进行设置)
- ARM.GCC:Install Directory(仅安装路径 不同具体到/bin)
D:\ARM-GNU-Tool\8 2019-q3-update
- ARM.GCC:Prefix
arm-none-eabi-
- ARM.Open OCD:Exe Path
D:\OpenOCD\bin\openocd.exe
- ARM: Stlink Exe Path
D:\ST\STLinker\ST-LINK Utility\ST-LINK_CLI.exe
- ARM.GCC:Install Directory(仅安装路径 不同具体到/bin)
8. 工程创建示例
-
通过 STM32CubeMX 生成 Makefile 工程。
Project Manager配置如下-
Project
- Toolchain/IDE 选择 Makefile (其它使用gcc工具链的也可以 建议选择这个)
- Toolchain/IDE 选择 Makefile (其它使用gcc工具链的也可以 建议选择这个)
-
Code Generator 勾选
- Copy only the necessary library files
- Generate peripheral initialization as a pair of ‘.c/.h’ files per peripheral
-
生成的 STM32CubeMX 工程目录结构如下
生成的 STM32CubeMX 工程目录结构如下
demo_test 顶层目录
----Drivers
----Inc
----Src
----.mxproject
----demo_test.ioc
----Makefile
----startup_stm32f767xx.s
----STM32F767ZITx_FLASH.ld
-
-
通过 EIDE 创建新的工程项目
- 项目类型: Cortex-M MCU
- 项目名称: test (用户按需自定义)
- 项目保存位置: D:/stm32projects (用户按需自定义)
- 生成的 EIDE 工程目录结构如下
test 顶层目录
----.eide
----.vscode
----dependence
----src
----test.code-workspace
-
将 STM32CubeMX 工程内容拷贝到 EIDE 工程下
- 将 Drivers、Inc 目录拷贝到 EIDE 主目录下
- 将 Src目录下的所有文件拷贝到 EIDE主目录/src目录下
- 将 startup_stm32f767xx.s、STM32F767ZITx_FLASH.ld 拷贝到 EIDE主目录/src目录下
-
在 EIDE 插件的 Project View 区域进行项目配置
工程默认编译模式为 Release 模式,建议切换为 Debug 模式
切换方式:点击右端“切换”图标
- 源文件视图:点击右端“+”图标,将 Drivers目录添加到源文件路径。(自动包含子目录路径)
- CMSIS包:不操作 (本文介绍的方法不需要配置该项)
- 编译配置:点击右端“更换”图标, 选择gcc工具链
- cpuType:点击右端“配置”图标 选择Cortex-M7 (根据实际情况选择,我用的是STM32F767ZIT6)
- floatPointHardWare:default
- useCustomScatterFile: 点击右端“配置”图标 选择true
- scatterFilePath: 点击右端“配置”图标 选择STM32F767ZITx_FLASH.ld文件 (该选项在上一选项为true时 才会出现)
- options:不做更改
- 烧录配置:点击右端“更换”图标, 选择 OpenOCD (根据实际情况选择,我用的是OpenOCD)
- bin: 不更改 (生成烧录文件后 自动填充)
- target: 点击右端“配置”图标, 选择stm32f7x.cfg (根据实际情况选择,我用的是STM32F767ZIT6)
- interface: 点击右端“配置”图标, 选择stlink.cfg (根据实际情况选择,我用的是STLinker)
- 项目依赖:
- 包含目录:点击右端的“+”图标 添加Inc、Drivers为头文件目录
- 库目录:不更改 (本工程未使用库文件 根据实际情况选择)
- 宏定义:点击右端“配置”图标 添加STM32F767xx (根据实际情况选择,我用的是STM32F767ZIT6)
- 源文件视图:点击右端“+”图标,将 Drivers目录添加到源文件路径。(自动包含子目录路径)
-
修改源文件。按需修改、添加源文件,本文示例修改源文件,实现 led 闪烁。
-
编译工程。点击 Build Project 图标或 按 F6
-
下载程序。点击 Upload binary file to device 或按F7
-
观察开发板,LED 灯间隔性闪烁,表明程序正常运行。