硬汉嵌入式论坛

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

Cubemx软件生成的HAL库代码和安富莱提供的HAL库代码对比

[复制链接]

2

主题

18

回帖

24

积分

新手上路

积分
24
发表于 2024-11-23 14:47:13 | 显示全部楼层 |阅读模式
本帖最后由 gjl 于 2024-11-23 14:49 编辑

我发现安富莱提供的最新代码虽然也是基于HAL库的,但是与cubemx生成的代码框架还是不一样。


例如,下一图是cubemx生成的DMA中断回调函数。 他里面的一个总的HAL_DMA_IRQHandler函数完成了对DMA各种中断的细分判断,例如half 传输完成中断和 full 传输完成中断,错误传输中断的判断。 然后给出了各自的callback函数。
所以我们用户不需要自己写 关于half 传输完成中断和 full 传输完成 判断的代码,只需要调用各自细分中断发生时调用的函数即可。

cubemx生成的DMA中断ISR函数

cubemx生成的DMA中断ISR函数

2.png
而安富莱提供的代码,是自己写的 half 传输完成中断和 full 传输完成 判断的代码,然后再去做各个中断对应的事情。
3.png



那么我们在开发的时候,这就带来了一些困扰。

因为现在ST官方的趋势是不是在基于cubemx的图形化功能完成对各个外设驱动代码的配置,然后用户只需关注应用层代码开发即可。

所以我们如果想要参考安富莱提供的一些优秀例程的话,想要移植到基于cubemx生成的代码里面的,就会有一定的错误风险与麻烦。

请问如何对待这种现象呢?




回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2024-11-24 10:23:13 | 显示全部楼层
我们那个中断里面直接寄存器操作了,这个中断里面占用时间短,且高效,仅实现了用到的功能即可。

大家手册使用的话,直接用CubeMX配置好的即可,方便省事。待项目有需求,需要高效的中断处理,可以再改。
回复

使用道具 举报

11

主题

702

回帖

735

积分

金牌会员

积分
735
发表于 2024-11-25 09:18:03 | 显示全部楼层
不矛盾。如果仅仅是初始化的程序,用CUBEMX没问题。如果中断处理或者需要高效率执行,可以改为寄存器。
串口中断或者SPI,用HAL库,效率低。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-12 03:45 , Processed in 0.061384 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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