如何在 CubeMX STM32 中使用 LL(低级)驱动程序?

Posted

技术标签:

【中文标题】如何在 CubeMX STM32 中使用 LL(低级)驱动程序?【英文标题】:How to use LL (low level) drivers in CubeMX STM32? 【发布时间】:2018-06-06 22:57:26 【问题描述】:

我正在使用 STM32CubeMX 为 STM32F103 微控制器创建一个空白项目。使用 HAL 驱动程序(默认),我得到了一个快速运行的示例,但我想尝试使用 LL(低级)驱动程序而不是 HAL。

当我转到 CubeMX 中的项目 > 设置 > 高级设置时,我看到列出的外围设备,每个外围设备旁边都有一个下拉菜单,只有一个选项,HAL。根据文档,这是我可以为每个外围设备选择 LL 或 HAL 的地方。

如何在 STM32CubeMX 中启用 LL 驱动程序?

详细信息:我在 Ubuntu (16.04) 上全新安装了 STM32CubeMX (4.23.0),并为 STM32F103C8 微控制器创建了一个新项目(这是在“Blue Pill”板上)。我使用的是 SW4STM32 IDE,除了我必须在配置文件中选择 STLink V2 而不是 V2.1 之外,其他所有东西或多或少都是开箱即用的。

【问题讨论】:

改用裸寄存器。忘记那些 ll 库。您不需要启用任何东西。只需使用 ll 函数。 STM32CubeMX 手册中的此信息不适用于 F0 系列。我能够为 STM32F030F4P6(另一种便宜的 MCU)生成 LL 驱动程序。 查看最后一次 Cube 更新,LL 对 F1 的支持现已启用 【参考方案1】:

来自高级设置下的项目经理 从驱动程序选择器中,您可以将所有外围设备的 HAL 更改为 LL

【讨论】:

虽然不是每个外围设备都列在那里。例如,外部中断驱动程序未列出,因此不能设置为“LL”,即使驱动程序文件夹中存在stm32g4xx_ll_exti.h【参考方案2】:

目前 (STM32CubeMX v4.23.0) LL 驱动程序仅针对 L1、L4、F2、F4、F7 系列生成。请参阅章节 6.2 使用低层驱动程序生成 STM32Cube 代码 对于 STM32L1、STM32L4、STM32L4+、STM32F2、STM32F4 和 STM32F7 系列, STM32CubeMX 允许基于以下任一方法生成外设初始化代码 外围 HAL 驱动程序或外围低层 (LL) 驱动程序。

http://www.st.com/content/ccc/resource/technical/document/user_manual/10/c5/1a/43/3a/70/43/7d/DM00104712.pdf/files/DM00104712.pdf/jcr:content/translations/en.DM00104712.pdf

【讨论】:

随着最后的 Cube 更新,ST 也为 F1 系列带来了 LL 库支持。 至少在 4.25.1 中,我还可以为 L0 系列 MCU 生成 LL 初始化。

以上是关于如何在 CubeMX STM32 中使用 LL(低级)驱动程序?的主要内容,如果未能解决你的问题,请参考以下文章

STM32低功耗串口接受数据异常

STM32低功耗串口接受数据异常

STM32 HAL库和LL库的区别

STM32 Cubemx Printf重定向

STM32LL库系列教程——通用定时器PWM实验

11-CubeMx+Keil+Proteus仿真STM32 -串口单字节通信