STM32CubeL4架构预览:
整个架构包含三个等级。Level0、Level1、Level2。
LEVEL0:
从Level0开始,它包含板级支持包(BSP),硬件抽象层(HAL LL)、基本外设使用例程。
一、板级支持包(BSP):这个层提供了在硬件板上的硬件组件的应用接口。包含了两个部分:
1.组件:这是对板子上的外部设备的驱动程序。可以适用于任何板。
2.BSP驱动:它允许将组件驱动连接到特定的板子,并且提供一系列用户友好的函数接口。这类函数的名称一般都是以BSP_FUNCT_Action()的规则命名。比如BSP_LED_Init().BSP_LED_On().
板级支持包是以模块化的架构为基础的。这使得我们可以通过使用底层级别例程让其运行在任意的硬件平台上。
二、硬件抽象层(HAL)和low Layer(LL):
HAL驱动为高层提供了可移植性高的API。好处是它隐藏了单片机和外围设备的复杂性。
它提供了非常广泛的例程API,每一个例程都简化了具体的应用。比如。对于外围的通信硬件(I2C,UART),可以直接提供给用户初始化和配置外围设备的函数,控制传输信号,中断,或是DMA的过程。
HAL driver 的API被分为两个类别:
1.通用的API:对于所有的STM32系列芯片,它提供了通用的函数功能。
2.扩展的API:提供特殊或者用户自定义的函数,用于一些特殊的系列。
Low Layer底层API提供了寄存器级别的API函数。虽然性能好但是其可移植性底。对LL层的使用,需要使用者对单片机内部功能和外围设备具有很好的掌握。
Low Layer drivers 的设计初衷是提供更轻量型、专家级的层,这样会要比HAL层更加接近硬件。与HAL层相反,LL层的API并不提供可以对外围设备直接操作的途径。
LL driver特性:
1.通过对结构体中的特定参数来初始化外围设备的主要特性。
2.函数会通过用复位值(0)来初始化数据结构体来和其他领域通信。
3.可对外围设备反初始化(即外围设备的寄存器重新加载它们的最初默认值)
4.有内敛函数可直接操作寄存器
5.LL层是完全独立于HAL层的,具有较高的可靠性 。即使没有HAL drivers支持,也可单独使用。
6.能够完全覆盖所支持的外围硬件特性。
三、基本外设使用例程;
该层包含的例程是通过使用HAL层或者LL层或是BSP的API在STM32平台上编译通过的。
LEVEL1:
该层被分为两个层:1.中间设备组件(Middleware components)、2.基于中间设备组件的例程(Example based onthemiddleware components)
一、中间设备组件(Middleware components)
中间设备是一系列库函数,包含了USB主机、设备库、STMTouchSensing、StemWin。FreeRTOS and FatFS。通过调用相应的特征API可以使得在该层的组件水平交互。如果需要垂直交互,即和底层交互,可通过特殊的回调和静态宏指令,这些指令已经在库系统的调用接口实现好了的。比如,文件系统模块(FATFs)实现了磁盘IO驱动到SD卡驱动或是USB大容量存储的途径。
1. USB主机和设备库:
2. StemWin图形Stack
3. FreeRTOS
4. Fat文件系统
5. STM32触摸感应库
LEVEL2:
这一层包含这以中间设备层为基础抽象出来的图形描述和全局实时操作。