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

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

[复制链接]
星辰一方 提问时间:2015-2-14 20:47 /
阅读主题, 点击返回1楼
收藏 5 评论66 发布时间:2015-2-14 20:47
66个回答
woodrowwang 回答时间:2016-8-11 05:35:58
不错,很好的文档
任风吹吹 回答时间:2016-8-11 11:52:33
本帖最后由 任风吹吹 于 2016-8-11 11:57 编辑

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

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

以上,萝卜白菜,各有所爱,大家看着办!
任风吹吹 回答时间: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严格来说,相比原来的标准库应该算是半对象化了。

以上是个人理解,非喜勿喷!
beebird 回答时间:2016-9-18 22:16:36
楼上讲的很好
忘记一切Q 回答时间:2016-9-23 13:31:00
听说不大好
anywill 回答时间:2016-10-2 04:22:52
53楼讲的很好,个人觉得mbed才是王道
mark0668 回答时间:2016-10-2 11:20:00
谢谢分享
mark0668 回答时间:2016-10-2 11:20:18
谢谢分享
myfocus-2048857 回答时间:2016-10-11 10:05:45
pure english ! 楼主 牛人 !

我一般的习惯是:
先尽量 找 分中文的看,碰到 不解的地方,在参考 原著...
轻描&淡写 回答时间:2016-11-7 12:01:16
先谢谢楼主的文件~

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版