你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

大家都是怎么学HAL库函数的啊?  

[复制链接]
星辰一方 提问时间:2015-2-14 20:47 /
看了一天HAL的库函数使用说明,感觉晕晕的,主要是那个什么handle,没搞明白到底这个怎么个运行流程,是不是学这个HAL要有一些C++的基础啊?哪位有经验可以指点下么?先谢了!

DM00105879_F4.pdf

下载

4.48 MB, 下载次数: 11019, 下载积分: ST金币 -1

1 收藏 5 评论66 发布时间:2015-2-14 20:47

举报

66个回答
任风吹吹 回答时间:2016-8-11 12:20:33
本帖最后由 任风吹吹 于 2016-8-11 12:26 编辑
任风吹吹 发表于 2016-8-11 11:52
标准库是标准的C语言思想,即提供外设接口,应用调用对应的接口就可以了,而HAL向面向对象的思想靠拢,学过 ...

HAL库是将数据整合了下,变成句柄,但数据和功能还是分离的,数据与功能的关联点是在接口函数的第一个参数一般为句柄,然后再就是中断回调到weak函数,用户需要用到这个回调时就自己重载这个回调函数,这个就是HAL的一般情况,但严格来说,这还不是真正的面向对象,真正的面向对象比如C++,是将数据与功能一起封装在对象内,weak就相当于虚函数,在实例化时需要重载。OOP的操作都是以对象开头的,而HAL还是以接口开始,只不过在第一个参数传入句柄数据而已,两者结果一样,但后者HAL还是数据与功能分离的,不像对象,HAL严格来说,相比原来的标准库应该算是半对象化了。

以上是个人理解,非喜勿喷!
MouseCat 回答时间:2015-2-15 08:59:38
HAL效率会更高么?代码会不会更占空间?
任风吹吹 回答时间:2016-8-11 11:52:33
本帖最后由 任风吹吹 于 2016-8-11 11:57 编辑

标准库是标准的C语言思想,即提供外设接口,应用调用对应的接口就可以了,而HAL向面向对象的思想靠拢,学过C++的人更容易理解,HAL更抽象化,也提供接口,但基本上接口的第一个参数都是指向设备句柄,这个设备句柄指的就是这个外设控制块的指针,懂C++的人都比较好理解,倒是那些一直习惯了C语言这种流程式语言的人一时在思想上不容易转化,有时候老是会问,为什么这么设计?这样设计有什么好处?好处当然是有,应该是更加抽象化了,掌握到关键时可以不必过多了解底层的工作过程也可以写应用。缺点是底层增加了处理的复杂度,可能生成的代码量和执行效率相对来说可能会下降些,在对于小容量如F0系列时,这个可能比较敏感,但若是F4以上的话基本可以忽略,这个就可以自己看着办了。这里不妨说一下,百闻不如一试,到底增加了多少代码量,自己动手去比较一下不就知道了,说不准压根就没增加多少这都是可能的,万事不是绝对的。

此外,还有最最重要的一点就是:
ST官方在极力推广HAL库,目前已经出了STM32CubeMx软件,可以从图形化直接生成初始化代码,进一步让应用与底层分离,这让用户在不必过多了解外设细节的情况下使用外设成为现实。

以上,萝卜白菜,各有所爱,大家看着办!
feel-376797 回答时间:2015-2-14 21:15:59
C++的基础 要的,弄块开发板练练
lkl0305 回答时间:2015-2-14 21:39:14
正在学习
Jimmy1987 回答时间:2015-2-14 22:17:35
资料很好。很有用的
alvin_ 回答时间:2015-2-15 07:25:42
啃…………
_ilikerome_ 回答时间:2015-2-15 08:32:53
这个多练练不就行了。熟能生巧。
党国特派员 回答时间:2015-2-15 09:02:43
hal有英文参考资料好好看下。 blank.png blank.png blank.png blank.png blank.png blank.png blank.png blank.png blank.png blank.png
星辰一方 回答时间:2015-2-15 10:30:30
_ilikerome_ 发表于 2015-2-15 08:32
这个多练练不就行了。熟能生巧。

资料有限,没理清楚这个库的结构是怎样的
星辰一方 回答时间:2015-2-15 10:30:47
MouseCat 发表于 2015-2-15 08:59
HAL效率会更高么?代码会不会更占空间?

我也同有此疑问……
星辰一方 回答时间:2015-2-15 10:31:42
党国特派员 发表于 2015-2-15 09:02
hal有英文参考资料好好看下。

问题就在英文资料这,我上面附件就是官方英文的说明,只是没看太懂这个库的使用流程……
wyxy163@126.com 回答时间:2015-2-15 10:53:49
提示: 作者被禁止或删除 内容自动屏蔽
小丁 回答时间:2015-2-15 12:55:19
看看官方提供的例程
syzby 回答时间:2015-2-15 17:58:20
每一个外设都有一个设备控制块,就是一个复杂的数据结构.调用这个设备时需要用到设备控制块.指向这个设备控制块指向这个结构的指针就叫设备句柄
syzby 回答时间:2015-2-15 18:07:52
.指向这个设备控制块结构的指针就叫设备句柄(handle)
12345下一页

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版