硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1762|回复: 9
收起左侧

STM32封装的HAL库有没有什么不好用的地方?

[复制链接]

69

主题

175

回帖

382

积分

高级会员

积分
382
发表于 2024-7-16 15:50:38 | 显示全部楼层 |阅读模式
大家都用HAL库吗?有没有吐槽的点?或者遇到什么bug?好用吗?
回复

使用道具 举报

4

主题

1459

回帖

1471

积分

至尊会员

积分
1471
发表于 2024-7-16 16:01:52 | 显示全部楼层
还好
回复

使用道具 举报

69

主题

175

回帖

382

积分

高级会员

积分
382
 楼主| 发表于 2024-7-16 16:05:21 | 显示全部楼层
如果在RTOS里使用,有没有什么注意的点?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117530
QQ
发表于 2024-7-17 09:07:43 | 显示全部楼层
HAL库的坑很多,得一点一点踩。

之前整理了很多,不过他们官方也修改了不少。
回复

使用道具 举报

4

主题

1459

回帖

1471

积分

至尊会员

积分
1471
发表于 2024-7-17 11:37:14 | 显示全部楼层
RTOS里面,看你怎么使用外设。  一般来说做成服务,单一线程操控一个外设,其它线程通过队列、事件等线程同步手段与其交互,就没有问题!
回复

使用道具 举报

3

主题

295

回帖

304

积分

高级会员

积分
304
发表于 2024-7-17 13:35:54 | 显示全部楼层
新手碰到bug需要查源码打断点,有的时候还得看参考手册一步一步查,比较麻烦,用熟了倒是没啥
回复

使用道具 举报

356

主题

2180

回帖

3253

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3253
发表于 2024-7-17 15:57:13 | 显示全部楼层
本帖最后由 caicaptain2 于 2024-7-17 16:01 编辑

HAL库提供了常用外设的多种使用方式,但是模式不够全面。比如F4系列至今不支持串口的超时中断模式,得自己修改。定时器和ADC等外设的触发+DMA非常灵活,HAL也没有全面覆盖。
而且使用HAL库的时候,外设的初始化、启动、执行、读取有固定的顺序和对应的函数,要参照例程来,不能按自己的想法来。比如HAL的中断函数的处理就非常啰嗦。
回复

使用道具 举报

13

主题

121

回帖

160

积分

初级会员

积分
160
发表于 2024-7-18 15:00:56 | 显示全部楼层
运行效率低,但是做快速开发挺好的
回复

使用道具 举报

69

主题

175

回帖

382

积分

高级会员

积分
382
 楼主| 发表于 2024-8-13 11:15:01 | 显示全部楼层
morning_enr6U 发表于 2024-7-17 11:37
RTOS里面,看你怎么使用外设。  一般来说做成服务,单一线程操控一个外设,其它线程通过队列、事件等线程同 ...

我看到外设封装查询模式例如串口发送,里面使用systick来做超时判断,开启了systick的中断,如果使用了RTOS,会有什么影响?是不是要改代码?
回复

使用道具 举报

4

主题

1459

回帖

1471

积分

至尊会员

积分
1471
发表于 2024-8-13 11:21:23 | 显示全部楼层
本帖最后由 morning_enr6U 于 2024-8-13 11:22 编辑
lindahnu 发表于 2024-8-13 11:15
我看到外设封装查询模式例如串口发送,里面使用systick来做超时判断,开启了systick的中断,如果使用了RT ...

HAL 的Tick,都改用Timer了, 不用systick了。 ST的CubeMx都默认整了一个TIM6,伺候HAL库里面用的Tick。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-12 22:17 , Processed in 0.055144 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表