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软件,可以从图形化直接生成初始化代码,进一步让应用与底层分离,这让用户在不必过多了解外设细节的情况下使用外设成为现实。

以上,萝卜白菜,各有所爱,大家看着办!:lol

任风吹吹 发表于 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严格来说,相比原来的标准库应该算是半对象化了。

以上是个人理解,非喜勿喷!:lol

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 ! 楼主 牛人 !

我一般的习惯是:
先尽量 找 分中文的看,碰到 不解的地方,在参考 原著...:loveliness:

轻描&淡写 发表于 2016-11-7 12:01:16

先谢谢楼主的文件~
页: 1 2 3 4 5 [6] 7
查看完整版本: 大家都是怎么学HAL库函数的啊?