目录
六、库函数介绍、工程代码结构以及编译过程
1. 库函数介绍
HAL库
LL库
标准固件库
寄存器编程
2. 工程代码结构
3. 编译过程
六、库函数介绍、工程代码结构以及编译过程
1. 库函数介绍
HAL库
HAL:Harduare Abstraction Layer 硬件抽象层
HAL库是ST为STM32最新推出的抽象层嵌入式软件,可以更好的确保跨STM32产品的最大可移植性。HAL使用了比较大的Flash和SRAM。
在工程文件中,驱动文件
提前封装好函数,编程时直接调用即可。
LL库
LL:Low Layer 底层
与HAL库相比LL库更加接近底层。该库完全独立实现,可完全抛开HAL库,只用LL库编程完成。在使用STM32CubeMX生成项目时,直接选LL库即可。如果使用了复杂的外设,例如USB,则会调用HAL库混合使用,编译后的LL库体积只有HAL库的33%。
标准固件库
旧版本的库函数
寄存器编程
原始底层编程
目前以HAL库为主进行编程。
2. 工程代码结构
打开官方液晶显示工程可以看到包含了以下3个大文件:
(1)
应用层 包括了
主函数、
中断函数、
启动函数、
中间层函数。
(2)
底层驱动
包括了HAL底层驱动代码。
(3)
底层驱动包括了芯片系统底层代码
。
关于底层
打开测试代码文件,可以看到以下5个文件夹:
- Drivers 包含了两个文件,其中 CMSIS 为 “芯片系统底层代码文件”,STM32G4xx_HAL_Driver 为 “HAL库函数文件”。
- Inc
- MDK_ARM
- Src
3. 编译过程
第一步:将 .c 文件编译和 .s 文件汇编,生成 .o 对象文件。
第二步:将 .o 对象文件 与 内存映射规范文件 通过连接器 生成 可执行映像文件。其中 .axf 文件最为重要。
第三步:通过 闪存编程器 将 可执行映像文件 下载到芯片的Flash中。
总体编译过程如下:
将CT117E-M4竞赛板连接到电脑,通过Keil MDK下载看看是否如上所说:
可以看到,编译下载过程正如上面所说。