介绍
STM32Cube是意法半导体(STMicroelectronics)的一项原创计划,旨在通过减少开发工作量、时间和成本来显著提高开发者的生产力。STM32Cube覆盖了STM32产品系列。
STM32Cube包括:
• STM32CubeMX,一个图形化的软件配置工具,它允许使用图形向导生成C初始化代码。
• 一个全面的嵌入式软件平台,按系列提供(例如STM32CubeN6用于STM32N6设备)
– STM32Cube HAL,STM32的抽象层嵌入式软件,确保了在STM32产品系列中的最大可移植性。HAL API适用于所有外设。
– 低层API(LL),提供了一个快速、轻量级的专家导向层,比HAL更接近硬件。LL API仅适用于一组外设。
– 一系列一致的中间件组件,如USB、H.264视频编码器、图像信号处理库、Azure® RTOS、OpenBootloader、外部内存管理器和加载器。
– 所有嵌入式软件工具,附带一套完整的示例。
HAL驱动层提供了一套简单、通用的多实例API(应用程序编程接口),用于与上层(应用程序、库和协议栈)交互。HAL驱动API分为两类:通用API,为所有STM32系列提供通用和通用功能;扩展API,包括特定和定制功能,适用于特定的线路或部件编号。HAL驱动包括一套完整的现成API,简化了用户应用程序的实现。例如,通信外设包含API来初始化和配置外设、管理轮询模式下的数据传输、处理中断或DMA以及管理通信错误。HAL驱动是面向功能而不是面向外设的。例如,定时器API被分为几个类别,如基本定时器、捕获和脉宽调制(PWM)。HAL驱动层通过检查所有函数的输入值来实现运行时故障检测。这种动态检查增强了固件的健壮性。运行时检测也适用于用户应用程序开发和调试。
LL驱动提供基于STM32外设可用功能的硬件服务。这些服务准确反映了硬件能力,并提供了必须按照产品线参考手册中描述的编程模型调用的原子操作。因此,LL服务不是基于独立进程的,不需要任何额外的内存资源来保存它们的状态、计数器或数据指针。所有操作都是通过改变相关外设寄存器的内容来执行的。与HAL不同,对于那些优化访问不是关键特性,或者需要大量软件配置和/或复杂上层协议栈的外设,不提供LL API。
HAL和LL是互补的,并覆盖了广泛的应用需求:
• HAL提供了高级和面向功能的API,具有高可移植性。这些API将MCU和外设的复杂性隐藏起来,不让最终用户看到。
• LL提供了寄存器级别的低级API,具有更好的优化但可移植性较差。这些API需要对MCU和外设规格有深入的了解。
HAL和LL驱动的源代码是用严格的ANSI-C开发的,使其独立于开发工具。它使用Coverity静态分析工具进行检查。它有完整的文档。
这份用户手册的结构如下:
• HAL驱动程序概述
• 低层驱动程序概述
• HAL和LL驱动程序的共存
• 每个外设驱动程序的详细描述:配置结构、函数以及如何使用给定的API构建您的应用程序