STM32G4版HAL库工程文件从零创建全教程
1.首先从st官方下载到源码的库函数(如下图)
这里我默认大家都有了。
没有的话去官方下载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路径也要放进去

在我们自己添加好的LIB下面的Inc找到如上的文件,将template删掉,然后变成stm32g4xx_hal_conf.h
现在编译出来就不会报错
中断文件添加
与cubemx配置后的代码对比我们会发现还有中断文件没有写进去
按照我下面的顺序先在st官方给的包里面开始,然后找到对应文件
这里需要找到和你开发板对应的东型号
这里我们选择串口,但随便选择什么都可以,你只需要将/* USER CODE BEGIN 1 */下面的代码删除掉即可,我们只需要他基础的一些中断,其他的中断我们自己写,下面我会写到。
继续点击下去
还有对应的中断.h文件(这里不截屏写出来了)移植到我们的自己的工程文件下的HARDWARE的Inc和Src
将以BEGIN1下面的内容删除掉
然后编译
没有问题。
作者:ldfmq