目录
二、在Template文件夹中新建CORE、HALLIB、OBJ、USER四个文件夹
四、从官方STM32cubeF4固件包里复制一些关键文件到新建的工程文件夹
一、新建Template文件夹
二、在Template文件夹中新建CORE、HALLIB、OBJ、USER四个文件夹
三、新建Keil5工程
1、新建工程,将工程目录保存到Template中的USER 文件夹下,命名工程为Template。
2、选择STM32F407ZG,因为用的该芯片的开发板。点击OK弹出下载新组件的对话框,点击Cancel,新建完毕。
下面开看USER 文件夹中的内容。其中Template是工程文件。DebugConfig用于储存调试配置文件,Listings,Objects用来储存MDK编译过的中间文件。
四、从官方STM32cubeF4固件包里复制一些关键文件到新建的工程文件夹
1、下载方法
打开ST官网:https://www.st.com.cn/content/st_com/zh.html,必须登录。
.
下载得到:
文件解压:从目录:\STM32Cube_FW_F4_Vxxx\Drivers\STM32F4xx_HAL_Driver 下面
,将其中Src、Inc复制到HALLIB文件夹下。Src 存放的是 HAL 库的.c 文件, Inc 存放的是对应的.h 文件。
五、复制启动文件、关键头文件、源文件
1、打开STM32CubeF4包,打开目录:
\STM32Cube_FW_F4_V1.24.1\Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm 下面,将 文 件 startup_stm32f407xx.s 复 制 到 CORE 目 录 下 面。
2、打开目录:\STM32Cube_FW_F4_V1.24.1\Drivers\CMSIS\Include,将里面的几个头文件: cmsis_armcc.h, cmsis_armclang.h, cmsis_compiler.h, cmsis_version.h, mpu_armv7.h, core_cm4.h 同样复制到 CORE 目录下面。
3、定位到目录:\ STM32Cube_FW_F4_V1.24.1\Drivers\CMSIS\Device\ST\STM32F4xx\Include
全部3个文件stm32f4xx.h, system_stm32f4xx.h 和 stm32f407xx.h 复制到 USER 目录之下。
4、定位到目录:\STM32Cube_FW_F4_V1.24.1\Projects\STM32F4-Discovery\Templates,
从Src和Inc文件夹复制需要的文件到USER目录下。
首先我们打开Inc目录,将目录下面的3个头文件stm32f4xx_it.h, stm32f4xx_hal_conf.h 和main.h全部复制到USER 目录下面。然后我们打开 Src 目录,将下面的四个源文件 system_stm32f4xx.c, stm32f4xx_it.c, stm32f4xx_hal_msp.c 和 main.c 同样全部复制到 USER 目录下面。
5、将正点原子编写的SYSTEM文件夹复制到Template根目录下。SYSTEM文件夹主要包括时钟初始化、串口打印、延时函数等等。
到此为止工程模板所需的所有文件都已经复制完成,接下来将在MDK中将这些文件添加到工程中。
六、将前面复制过来的文件加入工程中
1、右键点击Target1,选择Manage Project Items,如下图所示。
2、将工程改为如下所示:点击OK
完成后如下所示:
3、往Groups里添加文件。
HALLIB,右键点击Template,打开工程,定位到目录:\HALLIB\Src,添加里面全部的文件。
USER,添加USER目录下所有的.c文件。
CORE,添加所有文件。
SYSTEM,所有文件。
4、设置头文件存放路径
需要添加的头文件路径包括: \CORE, \USER\, \SYSTEM\delay , \SYSTEM\usart, SYSTEM\sys 以及\HALLIB\Inc。
5、添加全局宏定义标识符,所谓全局宏定义标识符,就是在工程中任何地方都可见。
在 Define 输入框连输入: USE_HAL_DRIVER,STM32F407xx。
6、 选择编译中间文件编译后存放目录。
6、把 main.c 文件里面的内容替换为如下内容。
#include "sys.h"
#include "delay.h"
#include "usart.h"
/************************************************
ALIENTEK 探索者 STM32F407 开发板实验 0-1
Template 工程模板-新建工程章节使用-HAL 库版本
技术支持: www.openedv.com
淘宝店铺: http://eboard.taobao.com
关注微信公众平台微信号: "正点原子",免费获取 STM32 资料。
广州市星翼电子科技有限公司
作者:正点原子 @ALIENTEK
************************************************/
/***注意:本工程和教程中的新建工程 3.3 小节对应***/
void Delay(__IO uint32_t nCount);
void Delay(__IO uint32_t nCount)
{
while(nCount--){}
}
int main(void)
{
GPIO_InitTypeDef GPIO_Initure;
HAL_Init(); //初始化 HAL 库
Stm32_Clock_Init(336,8,2,7); //设置时钟,168Mhz
__HAL_RCC_GPIOF_CLK_ENABLE(); //开启 GPIOF 时钟
GPIO_Initure.Pin=GPIO_PIN_9|GPIO_PIN_10; //PF9,10
GPIO_Initure.Mode=GPIO_MODE_OUTPUT_PP; //推挽输出
GPIO_Initure.Pull=GPIO_PULLUP; //上拉
GPIO_Initure.Speed=GPIO_SPEED_HIGH; //高速
HAL_GPIO_Init(GPIOF,&GPIO_Initure);
while(1)
{
HAL_GPIO_WritePin(GPIOF,GPIO_PIN_9,GPIO_PIN_SET); //PF9 置 1
HAL_GPIO_WritePin(GPIOF,GPIO_PIN_10,GPIO_PIN_SET); //PF10 置 1
Delay(0x7FFFFF);
HAL_GPIO_WritePin(GPIOF,GPIO_PIN_9,GPIO_PIN_RESET); //PF9 置 0
HAL_GPIO_WritePin(GPIOF,GPIO_PIN_10,GPIO_PIN_RESET); //PF10 置 0
Delay(0x7FFFFF);
}
}
7、完成后修改Keil5设置。
从工程中移除stm32f4xx_hal_timebase_rtc_alarm_template、stm32f4xx_hal_timebase_tim_template这两个文件。