使用开发板为stm32F407VET6,为单片机课程设计时的课程学习内容。本章节主要包括stm32F4环境的配置(固件库的安装与Jlink驱动的下载)与stm32模板工程的创建
模板工程可到我的gitee上进行下载–模板工程下载地址
在学习一个新的开发板时,如果是进行的固件库的学习,那么必不可少的就是固件库的使用。所以第一步当然就是固件库的安装。
STM32固件库是意法半导体为了提高代码的可移植性,为了加快产品开发所提供的一整套API,这些API一方面向下直接操作硬件寄存器,一方面向用户提供可编程接口,使得用户可以在不用知道知道具体寄存器的情况下编写应用程序,而且便于移植。
在安装之前我们可以从官方arm kile 下载地址进行固件库的安装;或者是从老师的资料包中找到。
这个固件库是下面这样的
直接双击固件包就可以,你可以看到下面的界面,他会自动找到之前安装keil的路径,直接点击next
就可以
你可以在你自己的keil中看到自己的魔法棒中的divce
里面看到自己需要的芯片包
J-Link是一种硬件调试和编程工具,通常用于微控制器和嵌入式系统的开发。它支持多种微处理器架构,包括ARM、Cortex-M、Renesas等
Jlink是一种下载方式,在keil中的体现就是可以直接使用"download"安装
第一步:从SEGGER官网下载J-link的驱动
jlink驱动下载位置
都是傻瓜式的安装没有什么其他要注意的。
一个文件从.c到可运行:
预处理(将宏等定义进行转换),编译(语法检测),汇编(转换为机器可以识别的汇编),链接(链接到相应的库)。
这六个文件夹是我们按照不同的用途进行分类,方便我们后面的文件管理。
code
:存放内核启动文件FWLIB
:存放固件库函数文件SYSTEM
:存放用户自定义函数库,移植库USER
:存放工程所在文件HARDWARE
:存放外设模块文件OBJ
: 存放过程文件
想要复制现有的固件库,首先需要在官网将固件库的文件下载下来。
下载下来后会有,也可以在我的仓库中下载,STM32F4与STM32F1固件库下载
打开官方库文件,定位到\STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Libraries\STM32F4xx_StdPeriph_Driver
下面.将目录下面的 src,inc
文件夹 copy 到我们刚才建立的 FWLib 文件夹下面
定位到 \STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm
下面,将文件 startup_stm32f40_41xxx.s
复制到 CORE
目录下面
定位到目录\STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Libraries\CMSIS\Includ
, 将 里 面 的 四 个 头 文 件 :core_cm4.h、core_cm4_simd.h、core_cmFunc.h
以及core_cmInstr.h
同样复制到 CORE 目录下面
定位STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Libraries\CMSIS\Device\ST\STM32F4xx\Include
将里面的 2 个头文件 stm32f4xx.h
和system_stm32f4xx.h
复制到 USER
目录之下。
定位到 \STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Project\STM32F4xx_StdPeriph_Templates
,将 目 录 下 面 的 4
个 文 件 stm32f4xx_conf.h
,stm32f4xx_it.c
,stm32f4xx_it.h
,system_stm32f4xx.c
复制到 USER 目录下面。
有些教程是五个文件,还包括一个main.c文件,但是这个文件我们自己进行开发,所以这个main文件我们到时候自己创建。
之前我们所有创建的文件都是直接对目录进行的修改,我们并没有将其与我们的keil工程联系起来,所以我们需要打开keil,并创建一个新的项目。
建立三个Groups: USER,CORE,FWLIB。然后点击 OK即可,注意这里的文件夹名称要和我们之前创建的文件夹名相同。
添加完成之后,还有一个需要删除的文件!!
stm32f4xx_fmc.c
比较特殊。这个文件STM32F42 和 STM32F43 系列才用到,所以我们这里要把它删掉
(注意是 stm32f4xx_fmc.c 要删掉,不要删掉stm32f4xx_fsmc.c)。
如果没有设置头文件路径,那么工程会出现报错,头文件路径找不到
我们需要添加的头文件路径包括:\CORE, \USER\以及\GECLIB\inc。若需要添加到自己建立的头文件,也需要做路径的添加
STM32F40 系列的工程,还需要添加一个全局宏定义标识符
。
添加方法是点击魔术棒之后,进入 C/C++选项卡,然后在 Define 输入框连输入:STM32F40_41xxx,USE_STDPERIPH_DRIVER。注意这里是两个标识符 STM32F40_41xxx和 USE_STDPERIPH_DRIVER,请大家注意他们之间是用英文的逗号隔开
的。
在做编译工程之前我们首先要选择编译中间文件编译后存放目录。方法是点击魔术棒,然后选择“Output”选项下面的“Select folder forobjects…”,然后选择目录为我们上面的新建的 OBJ 目录。然后再OBJ目录下就可看到我们需要的程序.hex文件了。
之前我们说过main.c 我们没有复制,所以我们需要自己创建一个main.c
文件在目录USER下
创建完成后,写上我们自己的代码,比如一个最简单的(什么都没做):
#include "stm32f4xx.h" //# 开头为预处理,会在第一步将该文件的相关信息加载进来
/*“”<>的区别
>双引号会先在当先目录中查找,如果当前目录下面没有,则也会去库中去找
<>直接到库(环境变量)里面去找该文件
while(1)//防止程序跑飞,让程序一直在在while(1)中。
*/
int main(void)
{
while(1) ;
}
如果你还没有这一步,直接运行,会报错找不到main.h文件
所以可以在USER 分组下面的 stm32f4xx_it.c 文件内容清空。 或者删掉其中的 32 行对main.h 头文件的引入以及 144 行 SysTick_Handler 函数内容