【1】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文件夹,CMSISSTM32Fxxx_HAL_Driver文件通过拷贝STM32Cube固件包中的Drivers文件夹来获取,SYSTEM可以通过正点原子例程文件中获取

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

打开CMSIS文件夹,保留DeviceInclude文件夹,其余删除

2.2、Projects文件夹

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

2.3、User文件夹

User文件夹中添加stm32f4xx_hal_conf.hstm32f4xx_it.cstm32f4xx_it.h文件,可以从STM32CubeF4固件包\en.stm32cubef4_v1-26-0_v1.26.0\STM32Cube_FW_F4_V1.26.0\Projects\STM32F4-Discovery\TemplatesIncSrc中获取,也可以从正点原子新建工程实验中获取

三、新建工程框架

1、新建工程

打开Keil5,选择新建工程

2、保存工程

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

3、选择主控型号

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

点击Cancel

4、删除文件夹

打开文件夹中的MDK-ARM,删除ListingsObjects文件夹

四、添加文件

1、设置工程名和分组名

点击分组管理图标,设置工程名为Template,分组名为StartupUserDrivers/SYSTEMDrivers/STM32F4xx_HAL_DriverReadme,点击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.csys.cusart.c

5、添加STM32F4xx_HAL_Driver源码

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

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

6、取消只读权限

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

打开文件夹中的Drivers,对CMSISSTM32F4xx_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即可

  • 34
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
针对于stm32f4xx芯片开发使用的hal版本 /** ****************************************************************************** * @file stm32f4xx_hal.h * @author MCD Application Team * @version V1.4.2 * @date 10-November-2015 * @brief This file contains all the functions prototypes for the HAL * module driver. ****************************************************************************** * @attention * * © COPYRIGHT(c) 2015 STMicroelectronics * * Redistribution and use in source and binary forms, with or without modification, * are permitted provided that the following conditions are met: * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * 3. Neither the name of STMicroelectronics nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * ****************************************************************************** */
stm32f4hal库工程模板是为了方便使用STM32F4系列微控制器的HAL(Hardware Abstraction Layer)而提供的一个项目起始模板STM32F4系列微控制器在嵌入式系统开发中具有广泛应用,HAL库为用户提供了一套抽象的硬件驱动接口,简化了开发过程,降低了学习和开发的难度。 stm32f4hal库工程模板通常包括以下几个重要部分: 1. 头文件和源文件:这些文件包含了使用HAL库所需的函数和宏定义。用户可以根据自己的需求调用相应的函数,完成对芯片内置外设的配置和控制。 2. 程序入口文件(main.c):这个文件是项目的入口,包含了主函数(main),可以在这个函数中初始化外设、配置中断、执行任务等。 3. 配置文件:这些文件包含了微控制器的各种配置选项,比如时钟配置、中断配置、GPIO配置等。用户可以根据自己的硬件环境和需求进行相应的配置。 4. 驱动文件:这些文件是HAL库的底层驱动文件,提供了对各种外设的底层操作接口,包括GPIO、USART、SPI、I2C等。用户可以根据需要选择性地使用这些驱动文件。 使用stm32f4hal库工程模板可以大大简化项目的搭建和开发过程,用户只需关注自己的业务逻辑,而不必过多关注底层硬件的具体实现。同时,HAL库还提供了很多示例代码和文档,对于新手来说是一个很好的学习和入门平台。 总之,stm32f4hal库工程模板是一个便于开发人员快速搭建STM32F4系列微控制器项目的起始模板,通过引入HAL库和预先配置好的工程结构,帮助开发者更快捷、高效地进行嵌入式系统开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HZU_Puzzle

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值