从零开始搭建STM32开发环境

STM32处理器是目前市面上比较流行同时性价比很高的一款MCU,本文开始介绍基于STM32的程序开发知识。

STM32开发的第一步:搭建开发环境(安装MDK5(keil)、串口调试驱动、JLINK驱动),其中MDK 5用于工程代码的编辑编译,串口驱动用于PC端查看程序输出打印,JLINK驱动用于使用jlink烧写器下载工程代码到MCU。

STM32开发的第二步: 在MDK下创建一个最简工程,可以编译通过,无警告,无错误。(STM32 驱动的开发分为直接配置外设寄存器和使用驱动函数库两种方式,其中使用驱动函数库的方式用起来比较直观方便,本文中搭建最简工程使用基于驱动函数库的方式)

STM32开发第三步:编写驱动项目所需外设(uart、spi、i2c等)的驱动函数,将所有用到的外设调试ok。此时板子上的硬件电路就可以在软件驱动的控制下进行工作了(如果项目不使用RTOS,仅仅跑裸机的话,此时就可以写项目的应用程序了)。

STM32开发第四步: 移植第三方程序库,例如freertos(嵌入式实时操作系统)、lwip(嵌入式以太网协议栈)、emwin(嵌入式图形控件库)、FATFS(嵌入式文件系统)。

STM32开发第5步:如果项目移植freertos或其他的RTOS,这是就需要根据项目需要去规划,需要创建几个任务,几个消息队列、几个互斥信号量,然后一步步去实现各个任务的逻辑功能。

STM32开发第6步:代码编写完成,就需要在设备上进行调试,并完成最后的测试,保证整个程序运行的稳定行。

本文从第二步,基于驱动函数库搭建最简工程,后续会逐步介绍freertos、lwip、emwin、fatfs等第三方程序库的移植。

1. 首先新建一个文件夹template,并在该文件夹下新建文件夹project(用于存放工程文件及编译中的过程文件)、 main(存放main.c 和中断处理文件)、dal(外设驱动层,存放MCU外设驱动文件及启动文件)、afl(应用适配层,位于dal层之上、apl层之下,主要用于存放一些功能模块,供apl层去调用)、apl层(应用层,程序的主体功能就在这里实现)、third(主要用于存放freertos、lwip、canopen等第三方的程序库),接下来在dal 文件夹下再新建文件夹core(用于存放MCU内核启动代码和驱动固件库程序)、drive(用于存放外设驱动函数)。

 

2. 从ST官网上下载对应MCU型号的外设固件库,下载方法参考:https://blog.csdn.net/k1ang/article/details/79645044

本文以stm32f407VGT6为例,将下载好的固件库文件解压,并拷贝到\template\dal\core文件夹下。

3. 从\template\dal\core\STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Project\STM32F4xx_StdPeriph_Templates目录下拷贝main.c、stm32f4xx_conf.h、stm32f4xx_it.c、stm32f4xx_it.h这四个文件到\template\main文件夹下。

4. 打开MDK5(keil),新建工程,并加载对应文件。

工程路径选择\template\project文件夹,文件名为template,点击保存。

选择对应的额芯片类型,本文中使用的是STM32F407ZG,然后点击ok。

新建工程文件夹,并加载对应文件:

5. 添加头文件目录,并添加宏定义

6. 工程新建完成,修改main.c 及stm32f4xx_it.c文件,去掉main.h头文件的引用以及其他不想关的代码,即可完成编译。

修改完后的程序如上图所示。编译一下,直接通过。