STM32新建工程
学过51单片机的朋友都知道,51单片机新建工程用keli新建工程点几下就好了,下载程序更是选好hex文件点击下载,复位一下就好。现在学到了STM32了,可就没那么简单了,我们看下怎么做!
准备
- 正点原子STM32——探索者开发板(STM32F407ZGT)
- miniUSB公口B型*1
- ST-Link下载器*1
- 电源*1
- 下载"STM32F4xx固件库"
新建工程
1. 创建文件夹
创建一个Template的文件夹→在里面分别创建CORE、USER、FWLIB四个文件夹
2.新建工程
打开keli5,依次点击
project→New Uvision Project
将目录地址定位到Template的USER里
保存为Template.uvproj
选择正确的芯片型号
点击OK
3.复制文件
既然是库函数版本,那么就要复制对应固件包里面的文件,也就是一些头文件和一些.c文件
- 解压固件包(固件包下载)
- 进入解压后的文件夹,进入路径:\STM32F4xx_DSP_StdPeriph_Lib_Vx.x.x\Libraries\STM32F4xx_StdPeriph_Driver复制里面的src、inc两个文件夹到Template的FWLIB里面
- 进入路径:\STM32F4xx_DSP_StdPeriph_Lib_Vx.x.x\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm
,复制里面的startup_stm32f40_41xxx.s到CORE目录下 - 进入路径:\STM32F4xx_DSP_StdPeriph_Lib_Vx.x.x\Libraries\CMSIS\Includ复制四个头文件:core_cm4.h 、core_cm4_simd.h 、core_cmFunc.h以及core_cmInstr.h到CORE文件夹内
- 进入路径:STM32F4xx_DSP_StdPeriph_Lib_Vx.x.x\Libraries\CMSIS\Device\ST\STM32F4xx\Include,将里面的2个头文件 stm32f4xx.h和system_stm32f4xx.h 复制到USER目录之下(两个头文件尤其重要!!!)
- 进入目录\STM32F4xx_DSP_StdPeriph_Lib_Vx.x.x\Project\STM32F4xx_StdPeriph_Templates ,
将目录下面的5个文件main.c,stm32f4xx_conf.h,stm32f4xx_it.c,stm32f4xx_it.h,system_stm32f4xx.c 复制到USER目录下面
4.配置
当已经复制好了文件就需要添加进去,这个时候就需要配置了!不然你在文件夹存放好那些文件MDK也不知道在哪里啊!在第2步已经新建了一个文件夹了,那么就切换到keli开始配置
- 创建组
右键点击左侧栏的Target1,选择Manage Project Items在左侧栏(Project Tarage)将Tarage1改名为Template,并在中栏(Groups)删除Source Group1,并在中栏添加三个Groups:FWLIB,USER,CORE。再点击OK! - 再添加源文件
- USER要添加USER文件夹中的main.c,stm32f4xx_it.c,system_stm32f4xx.c
- FWLIB要添加的是FWLIB/src里面的全部,添加完再删除stm32f4xx_fmc.c(因为这个是属于F42X/F43X的,注意别删除了stm32f4xx_sfmc.c!而且到后面可以需要什么再添加什么,初学为了方便就全部添加进去,但编译速度会很慢!)
- CORE中添加CORE里面的 startup_stm32f40_41xxx.s(注意:添加的时候默认显示.c,.s没显示,这时候要设置全类型可见!!!)
- 添加头文件路径
点击Options for tarage(魔术棒) → C/C++ → Include Paths,分别添加\CORE, \USER\以及\FWLIB\inc(注意:这里是文件夹里面的路径!而且是inc,不是src,因为要添加的是头文件) - 添加全局宏定义标识符
点击魔术棒之后,进入 C/C++选项卡,然后在 Define 输入框连输入:STM32F40_41xxx,USE_STDPERIPH_DRIVER
Tips:这个地方极其容易出错!务必注意!
收尾(针对正点原子探索者来说)
- 将USER分组下面的stm32f4xx_it.c文件内容清空或者删掉其中的32行main.h头文件的引入以及144行SysTick_Handler函数内容
- System_stm32f4xx.c文件把PLL第一级分频系数M修改为8,这样达到主时钟频率为168MHz。
- 同时,我们要在stm32f4xx.h里面修改外部时钟HSE_VALUE值为8MHz,因为我们的外部高速时钟用的晶振为8M.