打印
[应用相关]

从零开始搭建STM32开发环境

[复制链接]
2239|24
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
STM32处理器是目前市面上比较流行同时性价比很高的一款MCU,本文开始介绍基于STM32的程序开发知识。

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

使用特权

评论回复
沙发
gaonaiweng|  楼主 | 2021-9-28 22:51 | 只看该作者
STM32开发的第二步: 在MDK下创建一个最简工程,可以编译通过,无警告,无错误。(STM32 驱动的开发分为直接配置外设寄存器和使用驱动函数库两种方式,其中使用驱动函数库的方式用起来比较直观方便,本文中搭建最简工程使用基于驱动函数库的方式)

使用特权

评论回复
板凳
gaonaiweng|  楼主 | 2021-9-28 22:54 | 只看该作者
STM32开发第三步:编写驱动项目所需外设(uart、spi、i2c等)的驱动函数,将所有用到的外设调试ok。此时板子上的硬件电路就可以在软件驱动的控制下进行工作了(如果项目不使用RTOS,仅仅跑裸机的话,此时就可以写项目的应用程序了)。

使用特权

评论回复
地板
gaonaiweng|  楼主 | 2021-9-28 22:55 | 只看该作者
STM32开发第四步: 移植第三方程序库,例如freertos(嵌入式实时操作系统)、lwip(嵌入式以太网协议栈)、emwin(嵌入式图形控件库)、FATFS(嵌入式文件系统)。

使用特权

评论回复
5
gaonaiweng|  楼主 | 2021-9-28 22:57 | 只看该作者
STM32开发第5步:如果项目移植freertos或其他的RTOS,这是就需要根据项目需要去规划,需要创建几个任务,几个消息队列、几个互斥信号量,然后一步步去实现各个任务的逻辑功能。

使用特权

评论回复
6
gaonaiweng|  楼主 | 2021-9-28 22:58 | 只看该作者
STM32开发第6步:代码编写完成,就需要在设备上进行调试,并完成最后的测试,保证整个程序运行的稳定行。

使用特权

评论回复
7
gaonaiweng|  楼主 | 2021-9-28 22:59 | 只看该作者
本文从第二步,基于驱动函数库搭建最简工程,后续会逐步介绍freertos、lwip、emwin、fatfs等第三方程序库的移植。

使用特权

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

使用特权

评论回复
9
gaonaiweng|  楼主 | 2021-9-28 23:03 | 只看该作者

使用特权

评论回复
10
gaonaiweng|  楼主 | 2021-9-28 23:08 | 只看该作者

使用特权

评论回复
11
gaonaiweng|  楼主 | 2021-9-28 23:09 | 只看该作者
2. 从ST官网上下载对应MCU型号的外设固件库,下载方法参考:https://blog.csdn.net/k1ang/article/details/79645044

使用特权

评论回复
12
gaonaiweng|  楼主 | 2021-9-28 23:10 | 只看该作者
本文以stm32f407VGT6为例,将下载好的固件库文件解压,并拷贝到\template\dal\core文件夹下。

使用特权

评论回复
13
gaonaiweng|  楼主 | 2021-9-28 23:10 | 只看该作者
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文件夹下。

使用特权

评论回复
14
gaonaiweng|  楼主 | 2021-9-28 23:11 | 只看该作者
4. 打开MDK5(keil),新建工程,并加载对应文件。

使用特权

评论回复
15
gaonaiweng|  楼主 | 2021-9-28 23:14 | 只看该作者
工程路径选择\template\project文件夹,文件名为template,点击保存。

使用特权

评论回复
16
gaonaiweng|  楼主 | 2021-9-28 23:15 | 只看该作者
选择对应的额芯片类型,本文中使用的是STM32F407ZG,然后点击ok。

使用特权

评论回复
17
gaonaiweng|  楼主 | 2021-9-28 23:16 | 只看该作者
新建工程文件夹,并加载对应文件:

使用特权

评论回复
18
gaonaiweng|  楼主 | 2021-9-28 23:16 | 只看该作者
5. 添加头文件目录,并添加宏定义

使用特权

评论回复
19
gaonaiweng|  楼主 | 2021-9-28 23:17 | 只看该作者
6. 工程新建完成,修改main.c 及stm32f4xx_it.c文件,去掉main.h头文件的引用以及其他不想关的代码,即可完成编译。

使用特权

评论回复
20
gaonaiweng|  楼主 | 2021-9-28 23:19 | 只看该作者
修改完后的程序如上图所示。编译一下,直接通过。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

68

主题

688

帖子

3

粉丝