图文并茂、一条龙 讲述利用Keil5 开发STM32项目全过程
- 摘要:本文是作者偶然间在CSDN上看到的一篇,主要讲解了以下内容:1.Keil5 MDK下载、安装、注册;2.芯片支持包和标准库下载;3.STLINK、CH340(USB转串口芯片)驱动安装;4.Keil MDK工程创建(寄存版和标准库版);5.通过STLINK、串口下载程序。
- 感觉图文表述非常详尽,对刚刚接触KEIL开发工具的同学有较好的参考和借鉴意义。特原文转载,若有侵权,请联系删除。liangzc1124@163.com。
一、Keil5 MDK下载
-
选择MDK-Arm
-
填写信息(除了邮箱格式要正确外,其他可以随便填写),点击Submit
-
点击下载即可
二、Keil5 MDK的安装
- 双击下载的安装包
- Next
- 勾选同意许可协议,点击Next
- 选择软件和芯片支持包的安装路径(安装路径不要有中文),点击Next
- 等待安装,几到十几分钟
- 点击Finsih,安装成功
- 之后会自动弹出芯片支持包安装的界面,先叉掉(用这种方法下载很慢)
三、Keil5 MDK的注册(仅供学习和测试使用)
- 注册机下载地址
- 注册步骤
- 注册前需要先关闭windows系统的"病毒和威胁防护",步骤如下:
- 选中win图标—>鼠标右键,点击设置;
- 隐私和安全性—>Windows安全中心;
- 打开Windows安全中心
- 病毒和威胁防护—>管理设置
- 关闭实时保护、开发人员驱动器保护、云提供的保护、自动提交样本、篡改保护;
- 选中win图标—>鼠标右键,点击设置;
- 打开注册机下载地址,随便选择一个下载方式
- 如果还是被微软防火墙阻止,按下面方法操作:
- 点击三个点—>点击保留;
- 点击下图所示图标;
- 选择仍然保留,之后就可以下载成功;
- 点击三个点—>点击保留;
- 双击下载到的注册机(温馨提示:静音,否则会听到“灵魂小曲”)
- 如果出现下面的恶意文件的界面,点击更多信息;
- 点击仍要运行;
- 之后以管理员方式打开Keil MDK—>File—>License Management…;
- 之后按照下图具体操作,即可注册成功;
四、STM32芯片支持包下载、安装;标准库下载
1. STM32芯片支持包下载(DFP,Device Famliy Pack设备系列包)
-
芯片支持包下载链接(下载后需要先解压,之后才能双击安装)
-
下载步骤
- Products—>Device List
- STMicroelectronics—>Cortex-M3—>STM32F1Series—>STM32F103—>STM32F103C4(同一系列中不同型号的芯片下载的芯片支持包都是一样的)
- STM32F1xx_DFP
- Download / Version History —> Get Pack—>Download
- 双击下载好的文件
- 点击Next;
- 点击Finsih即可(在之后创建工程时,就有该芯片的选项了)
- Products—>Device List
2. 标准外设库下载(创建Keil5 MDK工程需要该文件夹中的文件)
- 标准库下载链接
- 标准外设库下载地址(ST官网)
- 下载步骤
- Tools & Software
- Embedded software—>STM32 Embedded software
- MCU and MPU embedded software—>STM32 Embedded software—>STM32 Standard Peripheral Libraries(8)—>F1
- Get lastest / Selection version
- Tools & Software
- 下载步骤
五、STLink、JLink驱动安装
-
通常情况下,在安装Keil时会提示安装,如果没有安装我们可以自己手动安装;
-
在Keil的安装路径中找到下面位置,之后双击dpinst_amd64(64位电脑)后,即可安装STLink;
-
安装成功后,我们把STlink插到电脑上,在设备管理器中就可以找到STLink了
-
在Keil的安装路径中找到下面位置,之后双击dpinst_amd64(64位电脑)后,即可安装JLink;
六、 USB转串口CH340驱动下载安装
2.安装
- 双击下载的安装程序;
- 点击安装;
- 出现“驱动预安装成功!”,点击确定即可。
七、 Keil MDK工程创建(寄存器版和标准库版)
1. 寄存器版工程创建
-
新建一个文件夹,命名为Project_REG,在该文件夹下创建Listings和Output两个文件夹;
- Listings文件夹用于存放编译时产生的c/汇编/链接的列表清单;
- Output文件见用于存放生成的调试信息、hex烧录文件、预览信息、封装库等;
- 打开Keil5,新建一个工程,命名为Project_RGE;
- 选择芯片型号(根据自己所用的芯片型号进行选择)
- 取消在线添加库文件(寄存器版本的工程不需要添加库文件)
- 把标准库en.stsw-stm32054_v3-6-0\STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x中的stm32f10x.h复制到Project_REG文件夹下;
- 把标准库en.stsw-stm32054_v3-6-0\STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm文件下的startup_stm32f10x_hd.s复制到Project_REG文件夹下;
- 在Project_REG文件夹下新建一个main.c文件
- 按照下图把文件添加到工程中
- 打开Keil5,新建一个工程,命名为Project_RGE;
-
按照下图添加头文件(stm32f10x.h)路径到工程中
-
按照下图配置Target、Output、Listings选项卡;
-
按下列操作,避免中文乱码
-
把下列代码复制到main.c中;并stm32f10x.h中所有内容删除,并在写入一个回车;
#include "stm32f10x.h" // Device header int main (void) { } void SystemInit(void) { //函数体为空,目的是为了骗过编译器不报错 }

-
按照下图操作,修改编译器为5版本
-
按照下图进行编译,即可编译成功
2. 标准库工程创建
-
创建库函数工程所需要标准库文件及说明如下图所示:
-
创建工程需要的文件夹并添加文件
-
创建一个存放整个工程的文件夹,命名为Project_STD;(名字可以任意取,但不要包含中文)
-
在该文件夹下创建6个文件夹,各个文件夹的作用如下所示:
名称 作用 Doc 存放程序的说明文件,由编写程序的人添加 Libraries 存放标准库相关的文件; Listing 存放编译器生成的列表文件(.lst)和.map文件。列表文件包含了源代码、汇编代码以及编译后的机器代码之间的对应关系;.map文件列出了程序中所有符号(如函数和变量)的地址分配; Output 存放编译和链接后的目标文件(.o文件)、库文件(.lib文件)、可执行文件(.hex) Project 存放keil工程文件 User 存放用户编写的文件
-
在Libraries文件夹下创建CMSIS文件夹,在CMSIS文件夹下创建CoreSupport文件夹和DeviceSupport文件夹。
-
将解压后的标准库STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\CMSIS\CM3\CoreSupport文件夹下的core_cm3.c和core_cm3.h复制到Libraries\CMSIS\CoreSupport文件夹下。
-
将解压后的标准库StdPeriph_Lib_V3.6.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm文件夹下的startup_stm32f10x_hd.s复制到Libraries\CMSIS\DeviceSupport文件夹下。
【不同型号的单片机的启动文件夹不一样,关于启动文件的选择参考下图】
-
将解压后的标准库STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x下的stm32f10x.h、system_stm32f10x.c、system_stm32f10x.h复制到Libraries\CMSIS\DeviceSupport文件夹下;
-
在Libraries文件夹下创建STM32F10x_StdPeriph_Driver文件夹
-
将解压后的标准库STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\STM32F10x_StdPeriph_Driver文件夹下的inc和src文件夹复制到Libraries\STM32F10x_StdPeriph_Driver文件夹下;
-
将解压后的标准库STM32F10x_StdPeriph_Lib_V3.6.0\Project\STM32F10x_StdPeriph_Template文件夹下的main.c、stm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it.h复制到User文件夹下;
-
-
打开Keil5,新建工程
-
Project —> New uVison Project… —> 存放在Project文件夹下;
- 设定工程名(不要含有中文)
-
选择单片机类别:STMicroelectronics/STM32F1 Series/STM32F103/STM32F103ZE;
-
选择单片机芯片具体型号
-
在线添加组件,keil的服务器在国外,在线添加很慢,关闭。我们之后在本地手动添加库文件;
-
-
在keil5中添加文件组并把文件添加到keil工程中
-
添加文件组STARTUP、CMSIS、STDLIB、USER、DOC;
-
-
把Libraries\CMSIS\DeviceSupport下的启动文件添加到STARTUP组;
-
把Project_STD\Libraries\CMSIS\CoreSupport下的core.c、Projects\Project_STD\Libraries\CMSIS\DeviceSupport下的system_stm32f10x.c添加到CMSIS组;
-
-
把Project_STD\Libraries\STM32F10x_StdPeriph_Driver\src下的所有.c文件添加到STDLIB组;
-
把stm32f10x_it.c和main.c添加到USER组;
-
-
-
配置魔术棒选项卡
-
勾选Target选项卡中的"Use MciroLib";把编译器版本改为version 5;如果选择version6,需要把core_cm3.c从工程中移除,具体操作如下所示:
- complier version 6和complier version 5的区别:
- complier version5的编译速度较慢,变量必须定义在函数开头;
- complier version6的编译速度更快,变量定义可以不放在函数开头;但使用complier version6时,需要把core_cm3.c文件从工程中移除;
- 具体操作如下所示:
- complier version 6和complier version 5的区别:
-
在Output选项卡中把输出文件夹定位到Project_STD\Output下;并勾选Create HEX File;
-
在Listing选项卡中把输出文件夹定位到Project_STD\Listing下;
-
在C/C++选项卡中添加处理宏STM32F10X_HD(具体需要根据芯片的Flash大小进行选择是LD、MD、HD、XL等), USE_STDPERIPH_DRIVER、编译器查找的头文件路径;
- 把下面的内容复制到mai.c中,点击编译按钮即可;
#include "stm32f10x.h" // Device header int main(void) { }
-
八、下载程序
1.通过STLINK下载程序
- 硬件连接
- 电脑通过USB线连接到ST-LINK;
- ST-Link通过排线连接到开发板;
- 开发板必须上电;
- Keil配置
- 点击“魔术棒”,选择“Utilities”选项卡,查看是否勾选 “Use Debug Driver”,如果没勾选,勾选上;
- 点击“Debug”选项卡,按下图所示选择ST-Link Debugger(如果用的其他的仿真器,选择对应的即可)
- 点击“Setting”,Keil MDK就会检测到“ST-LINK”;
- 点击编译,之后点击下载即可;
- 点击“魔术棒”,选择“Utilities”选项卡,查看是否勾选 “Use Debug Driver”,如果没勾选,勾选上;
2.通过串口ISP一键下载程序
-
ISP(In-System Programing),在系统可编程,指可以直接把程序下载到芯片中,不需要把芯片从电路板上取下来放到烧录器上;
- 通过ISP下载时需要用到Bootloader程序,该程序固化在STM32的系统存储器中,需要通过调节Boot0、Boot1引脚的高低电平进入该程序;
- ISP的下载步骤
- 设置BOOT0为高电平、BOOT1为低电平;
- 复位单片机(单片机复位后会进入Boot loader模式),通过上位机软件下载程序(如mcuisp、FlyMcu);
- 下载完毕后,设置BOOT0为低电平,BOOT1为低电平;
- 复位单片机,即可运行下载后的程序;
- 以上ISP下载步骤需要来回设置BOOT引脚高低电平和复位单片机,可通过DTR、RTS来控制BOOT脚和复位脚,电路图如下图所示;
-
通过串口下载,需要开发板上带有USB转串口芯片或有USB转串口模块(如CH340)并在电脑上安装对应的驱动(如第六节所示),之后连接UASRT1进行串口下载(下图参考手册所示);
-
硬件连接
-
电脑通过USB线连接CH340(连接成功后,电脑的设备管理器可识别到串口);
-
CH340连接STM32的USART1;
-
-
通过mcuisp串口软件下载程序到STM32中
-
-
下载后,双击即可运行;先点击“搜索串口(X)”,选择CH340对应的COM口;—>点击“bsp",选择115200;
-
按照下图,选择hex文件;
-
选择”STMISP“;—>选择”校验“,”编程后执行“—>选择”DTR低电平复位,RTS高电平进BootLoader“;—>点击开始编程;
-
烧录成功后,如下图所示
-
-
-
通过FlyMcu 串口软件下载程序到STM32中;
- FlcyMcu串口软件下载链接,下载密码:bxsb
- 按照下图步骤下载;
- 按照下图步骤下载;
- FlcyMcu串口软件下载链接,下载密码:bxsb
-