STM32F429第一篇之新建一个HAL库模板工程

前言

本文主要的参考资料为正点原子的 <STM32F429开发指南——HAL库版本>。

更新顺序:

  • 20201026——添加下载线连接。
  • 20210203——更新新版本的内核头文件。

新建文件夹

  1. 新建一个名称Template的文件夹。
  2. 在Template文件下,新建CORE,HALLB,OBJ,USER四个文件夹。当然,以上5个文件夹是正点原子推荐的分类方法,可以根据个人的实际需要修改。如下图所示:
    在这里插入图片描述

新建工程

  1. 新建项目:打开keil->Project->New uVision Project.
    在这里插入图片描述

  2. 将目录定位到刚刚新建的USER 中。文件名填写Template。点击保存。
    在这里插入图片描述

  3. 选择芯片型号。本人使用的STM32F429IGT6,此处选择。点击确定
    在这里插入图片描述

  4. 出现下方这个选项,直接点击取消即可。
    在这里插入图片描述
    5.此时,USER 文件夹中的如下图所示,可以将ListingsObjects文件夹删除。
    在这里插入图片描述
    删除后如下图所示:
    在这里插入图片描述

官方硬件支持包

  1. 下载STM32CubeF4固件包。可以直接百度下载最新版。目前官网地址为:https://www.st.com/en/embedded-software/stm32cubef4.html#get-software。
    在这里插入图片描述
    解压后
    在这里插入图片描述

  2. 首先,定位到 \Drivers\STM32F4xx_HAL_Driver 文件夹下。 如下图所示,其中Inc文件中放置的是头文件,Src文件夹中放置的c文件。chm文件为HAL库的说明文档,可以深入研究。
    在这里插入图片描述

  3. 我们将Inc文件夹Src文件夹复制到工程中建立的HALLIB文件夹下。如下图所示。
    在这里插入图片描述

  4. 定位到 \Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm 。将其中的startup_stm32f410rx.s 复制到 CORE 文件夹下。如下图所示。
    在这里插入图片描述

  5. 定位到 \Drivers\CMSIS\Include 文件夹。将其中的 cmsis_armcc.h,core_cm4.h,core_cmFunc.h,core_cmInstr.h,core_cmSimd.h 五个头文件复制到 CORE文件夹。如下图所示:
    在这里插入图片描述

  6. 定位到 \Drivers\CMSIS\Device\ST\STM32F4xx\Include 文件夹。将其中的 stm32f4xx.h,stm32f429xx.h,system_stm32f4xx.h 文件复制到USER文件夹中。

在这里插入图片描述

  1. 定位到 \Projects\STM32F429I-Discovery\Templates 文件夹。如下图所示:
    在这里插入图片描述

  2. 打开 第7步 中的 Inc文件夹 ,将其中所有头文件 复制到 USER文件夹 中,如下图所示。
    在这里插入图片描述

  3. 打开 第7步 中的 Src 文件夹,且将其中所有的c文件复制到 USER 文件夹中。如下图所示。

在这里插入图片描述
10 将 正点原子 提供的 SYSTEM文件夹 复制进工程中。随便进入正点原子的历程中,即可找到该文件夹,复制完毕如下图所示。
在这里插入图片描述

配置Keil

  1. 右击 工程Target 1,点击 Manage Project Items…,如下图所示:

在这里插入图片描述
2. 将 Project Targets: 名称修改为Template,且在Groups中 新建 USER,SYSTEM,CORE,HALLIB四个组。如下图所示:
在这里插入图片描述

  1. 向HALLIB组中添加文件。选中HALLIB,点击Add Files… 。将**\HALLIB\Src**中所有文件添加到该组中。如下图所示。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

这里可以只选择用到的外设对应文件。但是,也可以偷懒将所有文件添加进来。所有文件都添加的坏处是:编译时间增加。 这里面有三个文件是在STM32F429中是用不到的,可以删除。分别为:

  • stm32f4xx_hal_dsi.c
  • stm32f4xx_hal_lptim.c
  • stm32f4xx_hal_msp_template.c

注意:
除了以上3个文件需要删除,还有几个文件必须删除。此处在正点原子文档上没有说明,为:

  • stm32f4xx_hal_timebase_tim_template.c:工程中若添加此文件,则会与delay.c文件冲突,调用delay_ms()函数时会陷入死循环。
  1. 对应添加剩下几组的文件,添加结果分别如下图所示:

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

需要注意的是,默认添加的都是c文件。CORE文件夹中的文件包含s文件和头文件,此时在添加时,需要修改文件类型为All files(*.*),如下图所示:
在这里插入图片描述
注意:

在新版本中的内核中没有这几个文档。用以下几个文档代替。

在这里插入图片描述
这几个都是必要头文件,缺一不可。

  1. 点击 确定 按钮,添加完成。
    在这里插入图片描述
  2. 设置头文件路径。如下图所示顺序,添加所有头文件所在文件夹。
    在这里插入图片描述
    在这里插入图片描述

添加结果如下图所示:

在这里插入图片描述

  1. 添加全局宏定义表示符。可以直接复制 USE_HAL_DRIVER,STM32F429xx 到下图中。
    在这里插入图片描述

  2. 修改编译文件存放目录。

在这里插入图片描述
在这里插入图片描述

编译验证

  1. 将 main.c 文件中用以下程序代替。
#include "sys.h"
#include "delay.h"
#include "usart.h"

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(360,25,2,8);   //设置时钟,180Mhz

    __HAL_RCC_GPIOB_CLK_ENABLE();           //开启GPIOB时钟

    GPIO_Initure.Pin=GPIO_PIN_0|GPIO_PIN_1; //PB1,0
    GPIO_Initure.Mode=GPIO_MODE_OUTPUT_PP;  //推挽输出
    GPIO_Initure.Pull=GPIO_PULLUP;          //上拉
    GPIO_Initure.Speed=GPIO_SPEED_HIGH;     //高速
    HAL_GPIO_Init(GPIOB,&GPIO_Initure);

    while(1)
    {
        HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_RESET);	//PB0置0
        HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_SET);	//PB1置1
        Delay(0x7FFFFF);
        HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_SET);	//PB0置1
        HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_RESET);	//PB1置0
        Delay(0x7FFFFF);
    }
}



  1. 点击编译按钮,编译整个工程,如下图所示:
    在这里插入图片描述
    结果如下图,0警告和0错误。
    在这里插入图片描述

下载线连接

在ARM使用过程中,首推的下载方式为SWD,该模式只需4根连接线即可。我们首先看开发板的电路图:
在这里插入图片描述
通过上图可知,我们只需连接以下4根线:

  • VDD(电源线)
  • GND(地线)
  • SWDIO(数据线)
  • SWCLK(时钟线)

则可以选择4个管脚为1、20、7、9,实际连接线如下图所示:

在这里插入图片描述
注意:

  • 并不是说使用SWD模式就必须只连接该4条线,只需将keil下载模式设置正确,即使用杜邦线或者是正点原子提供的排插将20根线全部连接上,同样可以使用SWD模式。此4根线的连接方式,只是为了更好的理解SWD模式占用的连接线比较少!

下载验证

  1. 按照以下四张图 设置下载参数。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  1. 点击 LOAD 按钮,下载程序,如下图所示。

在这里插入图片描述
3. 设置成功,两个LED灯交替闪烁。

在这里插入图片描述

在这里插入图片描述

  • 9
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值