STM32G4版HAL库工程文件从零创建全教程

1.首先从st官方下载到源码的库函数(如下图)

stm32官方g4的库函数包
这里我默认大家都有了。
没有的话去官方下载https://www.st.com.cn/zh/embedded-software/stm32cube-mcu-mpu-packages.html

2.创建一个自己的工程文件,文件下添加如下的文件


文件名我命名为myproject_st

3.我们开始移植st官方的文件

跟着如下的步骤走:

  • 将CMSIS移植到自己的工程下

    打开Driver

    点击官方的CMSIS

    直接将include复制进自己创建的CMSIS里面

  • 再来看与官方Include同一路径下的Device

    点击Device

    点击ST。

    点击STM32G4xx。

    再点击里面的Include

    将里面的所有内容复制进刚才上面以及弄好的CMSIS里面的Include
    +再在自己的CMSIS文件下创建一个Source文件

    然后继续将上面与Include同一路径下的Source进行操作(Driver->Device->ST->STM32G4xx->Source)

    点击Source。

    点击Templates

    先将system文件复制进自己的Source

    继续将arm里面的内容复制进我们的Source文件夹里面。

    由于我们使用的是STM32G431这个系列,我们就会用到这个汇编文件待会

  • 将st官方的HAL库驱动移植过来
    打开Driver就会看到下面的东西

    继续点击

    将上图红色方框的Inc与Src复制到我们原本创建的文件夹下面的LIB

  • 此时我们该移植的文件已经完成

    打开keil5软件进行配置

  • 创建一个新工程

    点击new project

    放到我们自己创建的文件下的USER文件夹


    选择对应的芯片(我使用的是STM32G431RBT6)

    右击选择Manage Project Items

    添加一个project项目名,然后里面的内容和我们自己文件夹下面的对应。

    先添加几个必要的库(注意,我这里的gpio文件只有stm32g4xx_hal_gpio.c,像其他系列会有gpio_ex.c,如果有的话也要一起添加进去),这几个库对应总的hal库以及gpio,时钟复位以及时钟配置。
  • 对于f1可以不用pwr那个.c文件,但g4系列就需要,要不然会报错未找到 HAL_PWR_DisableBkUpAccess和 HAL_PWR_EnableBkUpAccess

    在CMSIS中添加对应的系统文件和启动文件(和自己的芯片匹配)

    然后创建一个新的文件main.c保存在USER文件夹下面

    然后选择Add Existing file…这个选项

    将已经存在的main.c保存进去

    如上图所示

    此时还不能识别到这些文件的头文件,所以叫自己手动添加路径。


    首先我们需要在Define那里填USE_HAL_DRIVER,STM32G431xx
    每个芯片的这个地方会不一样

    然后我们需要做的是头文件路径,由于此时我们只有库函数的头文件,所以只需要将库函数的头文件添加进去,之后我们的硬件驱动我们会写在HARDWARE文件夹下面,在HARDWARE下创建新的Inc和Src,此时的Inc路径也要放进去

  • 对config文件重新改写

    在我们自己添加好的LIB下面的Inc找到如上的文件,将template删掉,然后变成stm32g4xx_hal_conf.h
  • 现在编译出来就不会报错

    中断文件添加

    与cubemx配置后的代码对比我们会发现还有中断文件没有写进去

    按照我下面的顺序先在st官方给的包里面开始,然后找到对应文件
    请添加图片描述
    请添加图片描述
    这里需要找到和你开发板对应的东型号
    请添加图片描述
    请添加图片描述
    这里我们选择串口,但随便选择什么都可以,你只需要将/* USER CODE BEGIN 1 */下面的代码删除掉即可,我们只需要他基础的一些中断,其他的中断我们自己写,下面我会写到。

    继续点击下去
    请添加图片描述

    请添加图片描述
    请添加图片描述
    还有对应的中断.h文件(这里不截屏写出来了)移植到我们的自己的工程文件下的HARDWARE的Inc和Src

    将以BEGIN1下面的内容删除掉请添加图片描述
    然后编译

    没有问题。

    作者:ldfmq

    物联沃分享整理
    物联沃-IOTWORD物联网 » STM32G4版HAL库工程文件从零创建全教程

    发表回复