打印
[其他ST产品]

能否将 HAL库和 LL 库与 FreeRTOS 一起使用

[复制链接]
324|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lilaiju|  楼主 | 2025-5-21 11:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
使用 STM32CubeIDE 时遇到了问题。使用 FreeRTOS 生成项目,用 了 LL 代码,
但是当我为 TIMx 设置时基源时,会生成一堆 HAL 代码。
编译不通过,咋办?

使用特权

评论回复
沙发
laocuo1142| | 2025-5-21 15:45 | 只看该作者
检查 CubeMX 配置中的代码生成选项是否强制使用了 HAL。

使用特权

评论回复
板凳
flycamelaaa| | 2025-5-21 15:46 | 只看该作者
强制使用 LL 库替代 HAL,检查 "MCU Settings" 中是否启用了 LL 库(如 USE_FULL_LL_DRIVER)。在 main.c 的 /* USER CODE BEGIN Includes */ 部分手动添加 LL 头文件。

使用特权

评论回复
地板
flycamelaaa| | 2025-5-21 18:00 | 只看该作者
手动替换生成的 HAL 代码为 LL。

使用特权

评论回复
5
stormwind123| | 2025-5-21 20:00 | 只看该作者
清理并重建项目。

使用特权

评论回复
6
公羊子丹| | 2025-5-22 07:35 | 只看该作者
HAL 和 LL 混用是可以的,但得注意不要在同一个外设上混用,不然容易出问题。

使用特权

评论回复
7
周半梅| | 2025-5-22 07:36 | 只看该作者
STM32CubeMX 默认配置定时器的时候一般都会生成 HAL 代码,你可以手动删掉或者改成 LL 初始化。

使用特权

评论回复
8
帛灿灿| | 2025-5-22 07:37 | 只看该作者
如果只是定时器有问题,建议把 CubeMX 的 TIM 配置为 “Do Not Generate Initialization Code”,然后自己写 LL 初始化代码。

使用特权

评论回复
9
童雨竹| | 2025-5-22 07:37 | 只看该作者
我也遇到过类似情况,最后是只用 LL 初始化,FreeRTOS 配合用 systick,避免和 HAL 冲突。

使用特权

评论回复
10
万图| | 2025-5-22 07:38 | 只看该作者
HAL 默认会初始化 systick,如果你用 LL 写了定时器,FreeRTOS 的时间基准也要手动指定一下。

使用特权

评论回复
11
Wordsworth| | 2025-5-22 07:39 | 只看该作者
可以考虑只用 HAL 做系统初始化,具体业务逻辑用 LL 写,这样比较清晰,编译也不会冲突。

使用特权

评论回复
12
Bblythe| | 2025-5-22 07:39 | 只看该作者
我是直接禁用 HAL 的中断处理函数,统一改成 LL 的方式来处理,省心多了。

使用特权

评论回复
13
Pulitzer| | 2025-5-22 07:41 | 只看该作者
如果只是想测试,直接用CubeMX生成+板子连SD卡模块,基本能跑通基本的f_open/f_read。

使用特权

评论回复
14
Uriah| | 2025-5-22 07:42 | 只看该作者
你试试在 .ioc 文件中关闭 TIM 的自动配置,然后只保留 FreeRTOS 和其他必要模块,应该会干净很多。

使用特权

评论回复
15
Clyde011| | 2025-5-22 07:43 | 只看该作者
混用没问题,关键是要掌握生成代码的位置和方式,有时候自己写比自动生成还省事儿。

使用特权

评论回复
16
gaonaiweng| | 2025-5-31 18:23 | 只看该作者
使用STM32CubeIDE时,最好先生成无外设初始化的FreeRTOS框架,再加你的LL代码。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

17

帖子

0

粉丝