1. 软件安装
视频选集(3/50)[2-1] 软件安装
注.跟着视频走就可以了,以下是一些注意事项
- 弹出的Pack Installer窗口是用来安装器件支持包的
-
该支持包只有Keil5需要安装,之前的版本不需要
-
支持包选项出现的原因:ARM的芯片型号非常多,同时支持所有型号的芯片,会让软件体积过大;因此将芯片的器件支持包独立出来,用户只需安装所开发芯片对应的软件支持包即可
如果没有安装支持包,新建工程时找不到相应的器件型号
2. STM32的开发方式
视频选集(3/50)[2-2] 新建工程
-
基于寄存器的方式:用程序直接配置寄存器,来实现想要的功能
优点:直接、效率高。但STM32结构复杂、寄存器多,不推荐该方式
-
基于标准库的方式:使用ST官方提供的封装好的函数,通过调用这些函数来间接地配置寄存器
本课程使用该方式进行开发
-
基于HAL库的方式:可用图形化界面快速配置STM32
这种方式隐藏了底层逻辑
3. 新建工程
2.1 开发环境与器件
- 开发环境:Keil MDK5.36
- 开发芯片:STM32F103C8T6
- 配置材料:STM32库函数压缩包
STM32F10x_StdPeriph_Lib_V3.5.0.zip
2.2 环境配置
(1) 固件库介绍
-
Libraries:库函数的文件
-
Project:官方提供的工程示例和模板
-
Utilities:官方评估板的相关例程
【评估板】官方用STM32做的一个小电路板,用来评测STM32
-
Release_Notes.html:库函数的发布文档
-
stm32f10x_stdperiph_lib_um.chm:库函数的使用手册
(2) 创建工程(寄存器开发)
-
创建一个总文件夹
STM32Project
,用于收纳所有的工程文件 -
在
./STM32Project
的路径下,创建2-1 STM32工程模板(寄存器开发)
文件夹,用来存放本次工程文件 -
打开Keil5,创建新工程文件
-
选择相应的路径;給工程命名;保存
-
选择开发芯片的型号
-
这里会弹出Keil软件的新建工程小助手,它可以帮助快速新建工程。暂时不需要用到这个,关掉即可
-
到这一步,我们已经创建了一个空工程文件
-
在
.\STM32Project\2-1 STM32工程模板
路径下,创建Start
文件夹,用以存放必要的配置文件。需要复制粘贴到.\STM32Project\2-1 STM32工程模板\Start
路径下的文件有:-
.\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm
路径下的所有文件:STM32的启动文件STM32的程序从启动文件开始执行
-
.\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32
路径下的stm32f10x.h:STM32的外设寄存器描述文件作用和51单片机的头文件REGX52.H一样,描述STM32有哪些寄存器和其对应的地址
-
.\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32
路径下的system_stm32f10x.c和system_stm32f10x.h:用来配置时钟 -
.\Libraries\CMSIS\CM3\CoreSupport
路径下的core_cm3.c和core_cm3.h:Cortex-M3内核寄存器描述文件
-
-
把配置文件添加到Keil工程文件中
-
将
Source Group 1
重命名为Start
。右键Start
添加文件 -
首先添加启动文件。启动文件有很多类,只能添加其中一个,本项目开发器件型号对应的启动文件为
startup_stm32f10x_md.s
-
然后将启动文件以外的其他文件都添加进来。添加完点击
Close
关闭窗口这些文件都是STM32中最基本的文件,不需要我们进行修改,添加进来即可。文件图标上的黄色钥匙,指示它是一个只读文件
-
-
在Keil工程文件中添加配置文件的头文件路径
若未添加头文件路径,软件会报错:找不到.h文件
这里添加完,会变成一个较短的相对路径
-
在
.\STM32Project\2-1 STM32工程模板
路径下,创建User
文件夹,用以存放main.c文件。 -
Keil工程文件中右键
Target1
,创建组,对应命名为User
-
右键
User
,创建新文件 -
在弹出窗口中选择文件类型、命名为main.c、选择存放路径
-
在main.c文件中,右键,插入头文件
-
在main函数里写一个空的死循环
注意:任何文件的最后一行必须是空行,否则编译后会弹警告
-
进行编译
-
编译后,发现有报错
-
阅读Error中的描述,发现是编译器的问题:编译器版本过新,导致某些语句不被支持。需要更换编译器版本
-
再编译一次,显示0 Error。工程创建完成
当前工程未添加STM32的库函数,所以仍是一个基于寄存器开发的工程文件
-
本项目使用ST-LINK下载器将工程文件烧录到开发板上,需要进行相应的配置
-
设置下载程序后会立即复位并执行
如果没有配置这一项,下载程序后还需手动按开发板上的复位键来执行新烧录的程序
(3) 创建工程(标准库开发)
-
复制
2-1 STM32工程模板(寄存器开发)
文件,粘贴副本,重命名为2-3 STM32工程模板(标准库开发)
文件 -
在
.\STM32Project\2-3 STM32工程模板(标准库开发)
路径下,创建Library
文件夹,用来存放库函数。需要复制粘贴到.\STM32Project\2-3 STM32工程模板(标准库开发)\Library
路径下的文件有:.\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\src
路径下的所有文件.\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\inc
路径下的所有文件
-
需要复制粘贴到
.\STM32Project\2-3 STM32工程模板(标准库开发)\User
路径下的文件有:.\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template
路径下的stm32f10x_conf.h文件:用来配置库函数头文件的包含关系。且包含用来参数检查的函数定义.\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template
路径下的stm32f10x_it.c和stm32f10x_it.h文件:用来存放中断函数
-
打开工程文件,添加配置文件
-
创建
Library
组。右键Library
添加文件 -
右键
User
添加文件
-
-
宏定义
-
右键头文件,打开它
-
向下拉,滑到8296行。这是一个条件编译语句,意思是:只有定义了字符串“USE_STDPERIPH_DRIVER”,语句
#include "stm32f10x_conf.h"
才会生效 -
进行宏定义;并添加头文件的路径
-
-
点击编译,编译成功。基于标准库开发的工程文件创建完成
注.Start和Library中的文件都是只读的,只有User中的文件需要手动修改