目录

六、库函数介绍、工程代码结构以及编译过程

1. 库函数介绍

HAL库

LL库

标准固件库

寄存器编程

2. 工程代码结构

3. 编译过程


六、库函数介绍、工程代码结构以及编译过程

1. 库函数介绍

HAL库

HAL:Harduare Abstraction Layer 硬件抽象层

HAL库是ST为STM32最新推出的抽象层嵌入式软件,可以更好的确保跨STM32产品的最大可移植性。HAL使用了比较大的Flash和SRAM。

在工程文件中,驱动文件

F103系统架构_stm32

提前封装好函数,编程时直接调用即可。

F103系统架构_stm32_02

LL库

LL:Low Layer 底层

与HAL库相比LL库更加接近底层。该库完全独立实现,可完全抛开HAL库,只用LL库编程完成。在使用STM32CubeMX生成项目时,直接选LL库即可。如果使用了复杂的外设,例如USB,则会调用HAL库混合使用,编译后的LL库体积只有HAL库的33%。

标准固件库

旧版本的库函数

寄存器编程

原始底层编程

目前以HAL库为主进行编程。 

2. 工程代码结构

打开官方液晶显示工程可以看到包含了以下3个大文件:

F103系统架构_库函数_03

(1)

F103系统架构_编译过程_04

应用层 包括了

F103系统架构_F103系统架构_05

主函数、

F103系统架构_库函数_06

中断函数、

F103系统架构_stm32_07

启动函数、 

F103系统架构_物联网_08

中间层函数。

(2)

F103系统架构_F103系统架构_09

底层驱动

包括了HAL底层驱动代码。

(3)

F103系统架构_库函数_10

底层驱动包括了芯片系统底层代码

F103系统架构_F103系统架构_11


关于底层

打开测试代码文件,可以看到以下5个文件夹:

F103系统架构_编译过程_12

  • Drivers 包含了两个文件,其中 CMSIS 为 “芯片系统底层代码文件”,STM32G4xx_HAL_Driver 为 “HAL库函数文件”。
  • Inc
  • MDK_ARM
  • Src

3. 编译过程

第一步:将 .c 文件编译和 .s 文件汇编,生成 .o 对象文件。

F103系统架构_库函数_13

第二步:将 .o 对象文件 与 内存映射规范文件 通过连接器 生成 可执行映像文件。其中 .axf 文件最为重要。

F103系统架构_stm32_14

 第三步:通过 闪存编程器 将 可执行映像文件 下载到芯片的Flash中。

F103系统架构_编译过程_15

 总体编译过程如下:

F103系统架构_库函数_16

将CT117E-M4竞赛板连接到电脑,通过Keil MDK下载看看是否如上所说:

F103系统架构_F103系统架构_17

可以看到,编译下载过程正如上面所说。