STM32·HAL库·新建工程模板【一步到位】

目录

一、获取官方固件包

二、新建工程文件夹

1、新建文件夹

2、拷贝/新建工程相关文件

2.1、Drivers文件夹

2.2、Projects文件夹

2.3、User文件夹

三、新建工程框架

1、新建工程

2、保存工程

3、选择主控型号

4、删除文件夹

四、添加文件

1、设置工程名和分组名

2、添加启动文件

3、添加User源码

4、添加SYSTEM源码

5、添加STM32F4xx_HAL_Driver源码

6、取消只读权限

五、魔术棒设置

1、Target选项卡

2、Output选项卡

3、Listing选项卡

4、C/C++选项卡

5、Debug选项卡

6、Utilities选项卡

六、添加主函数,并编写代码

1、创建main.c

2、编写main.c并进行编译

七、VScode配置【可选】

1、载入Keil工程

2、转换编码格式


一、获取官方固件包

方法一:ST官网搜索STM32Cube

方法二:正点原子官网获取,STM32参考资料——STM32CubeXX固件包

二、新建工程文件夹

1、新建文件夹

创建Template文件夹,在文件夹中新建下面几个文件夹

2、拷贝/新建工程相关文件

2.1、Drivers文件夹

在Drivers文件夹中新建BSP文件夹,CMSIS和STM32Fxxx_HAL_Driver文件通过拷贝STM32Cube固件包中的Drivers文件夹来获取,SYSTEM可以通过正点原子例程文件中获取

打开STM32Fxxx_HAL_Driver文件夹,保留Inc和Src文件夹(HAL库源码),其余删除

打开CMSIS文件夹,保留Device和Include文件夹,其余删除

2.2、Projects文件夹

在Projects文件夹中新建MDK-ARM文件夹,用于存放MDK工程文件

2.3、User文件夹

在User文件夹中添加stm32f4xx_hal_conf.h,stm32f4xx_it.c,stm32f4xx_it.h文件,可以从STM32CubeF4固件包\en.stm32cubef4_v1-26-0_v1.26.0\STM32Cube_FW_F4_V1.26.0\Projects\STM32F4-Discovery\Templates的Inc和Src中获取,也可以从正点原子新建工程实验中获取

三、新建工程框架

1、新建工程

打开Keil5,选择新建工程

2、保存工程

选择刚才创建的文件夹中的MDK-ARM,命名后点击保存

3、选择主控型号

选择对应的芯片型号,点击OK

点击Cancel

4、删除文件夹

打开文件夹中的MDK-ARM,删除Listings和Objects文件夹

四、添加文件

1、设置工程名和分组名

点击分组管理图标,设置工程名为Template,分组名为Startup,User,Drivers/SYSTEM,Drivers/STM32F4xx_HAL_Driver,Readme,点击OK

2、添加启动文件

打开分组管理,选择Startup分组,点击Add Files

回到Template目录,打开Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/arm,文件类型选择.s,选择对应的芯片型号,点击Add

3、添加User源码

选择User分组,点击Add Files,回到Template目录,打开User,选择stm32f4xx_it.c,点击Add

继续打开Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates,添加system_stm32f4xx.c文件

4、添加SYSTEM源码

选择Drivers/SYSTEM分组,点击Add Files,回到Template目录,打开Drivers/SYSTEM,分别添加对应的delay.c,sys.c,usart.c

5、添加STM32F4xx_HAL_Driver源码

选择Drivers/STM32F4xx_HAL_Driver分组,点击Add Files,回到Template目录,打开Drivers/STM32F4xx_HAL_Driver/Src,添加如下文件(HAL库所需最少文件)

这里要注意:一定要点击OK,点击关闭不会保存!!!

6、取消只读权限

由于官方固件包设置了只读权限,所以文件图标会出现黄色小钥匙,需要取消文件夹的只读权限

打开文件夹中的Drivers,对CMSIS和STM32F4xx_HAL_Driver文件夹右键,选择属性,取消只读选项

完成设置后的分组

五、魔术棒设置

1、Target选项卡

打开魔术棒,修改外部高速晶振为8MHz,编译器为AC5

AC5和AC6编译器对比

2、Output选项卡

点击Output,勾选创建hex文件

点击Select Folder for Objects,修改编译输出文件的路径为Template\Output

3、Listing选项卡

点击Listing,点击Select Folder for Listings,修改编译输出文件的路径为Template\Output

4、C/C++选项卡

点击C/C++,设置全局宏定义为USE_HAL_DRIVER,STM32F407xx,优化等级为Level 0,勾选C99

设置头文件包含路径如下图

5、Debug选项卡

点击Debug,设置下载器,按照自己的下载器型号来选择

点击Settings,选择当前下载器ATK-HSWL-CMSIS-DAP(有多少个下载器就会显示多少个),下载调试接口模式为SW,速率设置为最大值10MHz

6、Utilities选项卡

点击Utilities,确认勾选Use Debug Driver

点击Settings,勾选Reset and Run

设置完成点击OK

六、添加主函数,并编写代码

1、创建main.c

在User工程文件夹下右键,选择新建文件

选择.c文件类型,命名为main,点击右下角的…将文件添加到User文件夹下

点击分组管理,点击上移将main.c移动至第一行,点击OK保存

2、编写main.c并进行编译

复制以下代码到main.c

#include "./SYSTEM/sys/sys.h"
#include "./SYSTEM/usart/usart.h"
#include "./SYSTEM/delay/delay.h"

void led_init(void);

int main(void)
{
    HAL_Init();                         /* 初始化HAL库 */
    sys_stm32_clock_init(336, 8, 2, 7); /* 设置时钟,168Mhz */
    delay_init(168);                    /* 延时初始化 */
    led_init();                         /* 初始化LED */
    
    while(1)
    {
        HAL_GPIO_WritePin(GPIOF,GPIO_PIN_9,GPIO_PIN_RESET);     /* LED0 亮 */
        HAL_GPIO_WritePin(GPIOF,GPIO_PIN_10,GPIO_PIN_SET);      /* LED1 灭 */
        delay_ms(500);
        HAL_GPIO_WritePin(GPIOF,GPIO_PIN_9,GPIO_PIN_SET);       /* LED0 灭 */
        HAL_GPIO_WritePin(GPIOF,GPIO_PIN_10,GPIO_PIN_RESET);    /* LED1 亮 */
        delay_ms(500);
    }
}

void led_init(void)
{
    GPIO_InitTypeDef gpio_init_struct;
    
    __HAL_RCC_GPIOF_CLK_ENABLE();                       /* LED0,LED1时钟使能 */

    gpio_init_struct.Pin = GPIO_PIN_9;                  /* LED0引脚 */
    gpio_init_struct.Mode = GPIO_MODE_OUTPUT_PP;        /* 推挽输出 */
    gpio_init_struct.Pull = GPIO_PULLUP;                /* 上拉 */
    gpio_init_struct.Speed = GPIO_SPEED_FREQ_HIGH;      /* 高速 */
    HAL_GPIO_Init(GPIOF, &gpio_init_struct);            /* 初始化LED0引脚 */

    gpio_init_struct.Pin = GPIO_PIN_10;                 /* LED1引脚 */
    HAL_GPIO_Init(GPIOF, &gpio_init_struct);            /* 初始化LED1引脚 */

    HAL_GPIO_WritePin(GPIOF, GPIO_PIN_9, GPIO_PIN_SET); /* LED0 灭 */
    HAL_GPIO_WritePin(GPIOF, GPIO_PIN_10, GPIO_PIN_SET);/* LED1 灭 */
}

点击全编译按钮

编译完成后显示零错误零警告,工程模板创建完毕!!!

七、VScode配置【可选】

1、载入Keil工程

安装并启动扩展组件Keil Assistant

点击添加工程,选择MDK-ARM项目工程,点击Open

注意右下角弹出的提示(是否切换工作区),点击OK

勾选信任工程文件,点击Yes

2、转换编码格式

打开main.c,选择编码格式,点击通过编码重新打开

选择GB2312

选择编码格式,点击通过编码保存

选择UTF-8,同理将delay、sys、usart文件和对应的头文件转换为UTF-8即可

作者:HZU_Puzzle

物联沃分享整理
物联沃-IOTWORD物联网 » STM32·HAL库·新建工程模板【一步到位】

发表回复