移植前准备
- HAL库工程(可用STM32CubeMX直接生成)
- 正点原子SYSTEM文件夹(任意一个例程里面复制出来就行,但记住一定要是HAL库例程)
- 平台为keil5
- STM32开发板(我这里用的是正点原子的探索者,MCU为F4系列)
工程创建
我们在用STM32CubeMX创建工程代码的时候有一点需要注意,在Cube中不要去使能USART1,因为在SYSTEM文件的usart.c中已经把USART1进行了初始化,这里再去使能一次不仅会失败而且重新引入usart.h和usart.c与SYSTEM文件中的文件名相同而冲突,最后报错。
其他一切正常,工程创建完毕后将 SYSTEM 文件夹粘贴至与Cube同一目录下,也就是这里。
c文件以及头文件的引入
代码生成后我们打开keil5工程文件,正常情况下打开工程文件后项目栏只有三个文件夹,分别是 Application/User , Drivers/STM32F4xx_HAL_Driver 和 Drivers/CMSIS 如下图
接下来我们单击“魔法棒”右边的图标,也就是File extensions
进入下一个界面将SYSTEM文件夹中的 .c 文件都包含进来
当然 .h的包含则是在 “魔法棒” 的 C/C++ 选项卡中,这里注意选到最后一级文件夹即可,也就是含有 .h 文件的文件夹
至此,所有相关文件都引入完成。
使能串口
很多朋友在完成以上基本步骤后以为已经结束了,便迫不及待地去点编译,于是报了一大堆错
这时候就觉得束手无策了,但其实是还缺少了两个步骤,因为我们当时在配置Cube的时候是没有使能usart的,所以自然是不会帮你使能有关HAL库函数的,同时也没有引入相关 .c文件,这就需要我们认为地去完成这两个步骤。
.c文件的包含
跟之前的 .c文件引入方法相同找到 Drivers/STM32F4xx_HAL_Driver/Src路径下把 stm32f4xx_hal_uart.c和 stm32f4xx_hal_usart.c包含进来即可
使能有关功能
这就需要找到 stm32f4xx_hal_conf.h这个文件,进去可以看到有许多HAL库外设的使能,如果有在 STM32CubeMX中使能的外设这里会自动加上使能,如果没有这里就仍是注释状态。这边需要我们手动使能一下串口和定时器外设
结束
完成以上步骤之后,再进行一次编译,就能开心收获两个鸭蛋啦,本次移植也算圆满完成。