标题: 关于STM8/STM32库函数与寄存器开发选择问题调查 [打印本页]

作者: 余生不负    时间: 2020-3-19 13:27
标题: 关于STM8/STM32库函数与寄存器开发选择问题调查
虽然库函数开发简单方便,但是听说高手都是用寄存器开发不知道有没有这样的人?
作者: jamiliang    时间: 2020-3-20 01:07
一般看情况,MCU挖掘到极限,需要使用寄存器
注重开发效率,使用库函数
作者: hubj627    时间: 2020-3-20 11:28
从来没有听过高手都是用寄存器开发。但是我周围认识的搞开发的基本上都是把底层操作封装起来,通过函数指针交由上层决定。比如对于串口的操作,应用层只需要一个注册函数接口,执行功能打开串口/接收数据回调函数/发送完成回调函数。整个项目分为外围硬件、平台、框架、上层应用。思路清晰条理分明。
作者: hubj627    时间: 2020-3-20 12:09
相反经常遇到一些学生或新来的过分强调寄存器的高效性,自觉地看了一下原子的寄存器就厉害了也要用寄存器。看了他们写的代码简直不忍直视,这里延时那里while的,就一个串口发送函数竟然要等所有的数据发送完了才结束才能进行下一个操作,再或者就是寄存器+ucos操作的真不知该怎么喷。
作者: 罗程峰8200    时间: 2020-3-22 23:56
开发中 最后不要用while这类硬延时函数,你一用while其他都石化了 只能进出中断,哪里来的效率?除非只有几us的延时将就用下可以
作者: 181206506    时间: 2020-3-27 22:37
如果你是新手,好好玩下寄存器,否则后面会遇到很多问题。等你熟练后,用库,或者用别人的库改成自己的库。提高效率,看的清爽。
作者: Hephaestus    时间: 2021-8-26 18:20
库也分什么库,对于STM32来说,StdPeriph库和LL库就很不错,没发现效率比寄存器低的情况,相反开发效率不知道比寄存器方式高到哪里去了。HAL库就不行,仔细跟进去,发现写的跟屎一样,效率极其低下。
作者: bbk2000    时间: 2021-10-3 17:10
高手,就是不一样。
作者: hqsmpp    时间: 2022-2-17 13:29
我现在51都用库开发了
作者: Hjc12345678    时间: 2022-2-19 20:52
初学看寄存器,实战用库
作者: nanhaixiaodeng    时间: 2022-10-12 13:23
這問題應該沒什麼好糾結的  從了解STM32的過程看 寄存器與標準庫都要學習 便於了解MCU的底層原理與良好的編程習慣,HAL庫是發展趨勢,必須要學的
作者: TTQ001    时间: 2023-4-10 10:12
这取决于项目和时间要求。
作者: hange_v    时间: 2023-4-10 14:34
Hephaestus 发表于 2021-8-26 18:20
库也分什么库,对于STM32来说,StdPeriph库和LL库就很不错,没发现效率比寄存器低的情况,相反开发效率不知 ...

是滴,我只用标准库和LL库,除非没有标准库或外设没有LL库了采用HAL
作者: 草本之处    时间: 2023-4-10 15:26
现在就在学,我觉得用库比寄存器好得多,程序不用死等待,节省时间和提高单片机运行效率
作者: zhuls    时间: 2023-10-26 14:21
真是吃太多、撑着了。。。
这有什么好调查的?有人开法拉利去买菜,也有人骑共享单车去买菜,还有人走路去买菜。
工具而已,并没有什么优劣之分,有差别的只是各人的思维能力强不强、逻辑顺溜不顺溜。
咋不说还有人用汇编在写代码?知识爆发时代,多少都要了解一点,再依项目去选择。
用库函数是省事,用寄存器也不见的费劲,主要看个人的能力。
且看一段文字:
「凌厉刚猛,无坚不摧,弱冠前以之与河朔群雄争锋。」
「紫薇软剑,三十岁前所用,误伤义士不祥,悔恨无已,乃弃之深谷。」
「重剑无锋,大巧不工。四十岁前恃之横行天下。」
「四十岁之后不滞于物,草木竹石均可为剑。自此精进,渐入无剑胜有剑之境。」

当前适合自己的才是最好的!


作者: 圣博朗西斯    时间: 2023-10-27 10:03
库版本真心没有寄存器好用,得改变一个寄存器位得半天
作者: ppcbug    时间: 2023-10-27 10:26
其实 寄存器 也好,库函数也好, HAL 也好 , 关键就是一个 【移植】。
如果你只用一个型号的MCU , 那么 寄存器,HAL 都很好用。
如果代码打算移植其他MCU用,那几乎没选择空间。

ROM极小的MCU可能被迫选寄存器,不在此列。
作者: 哦豁~    时间: 2023-11-20 11:59
对于ARM内核的32位机,标准库,HAL库,LL库和寄存器操作,我都在用。我会根据项目情况而来选择,因为它们有各自的优劣势。
1. HAL库目前用得最多。因为大部分项目多很常规,不会太压榨芯片性能。它最大优点在于非常方便移植和开发效率。我用芯片牌子非常杂,所以会考虑移植的问题。当然它在效率上是有点不如其他,比如一句寄存器操作,它也会直接搞个函数来调用,另外会有很多标志的读写。但只要合理利用,不至于效率稀烂;
2. LL库和寄存器操作用得其次。这个对于一些对效率效率有一定要求的,会用这两个。在移植的情况上,LL库会比寄存器操作好一些;
3. 标准库用得最少了。一些国产芯片厂做的库只有标准库。要么用标准库,要么用寄存器操作,所以偶尔会用标准库。实际LL库一定程度,更接近底层,LL库更像是标准库(最古老的库)的一次优化;

PS:有些项目我还会AL库,LL库 ,寄存器操作都一起上。它们虽然是互相独立的,但不是互斥的;

它们各有所长,各有所短,没有一无是处的。所以合理利用就好,存在就是合理的。
作者: qinlu123    时间: 2025-3-28 16:25
初始化用库,运行起来库和寄存器交叉使用
作者: rundstedt    时间: 2025-3-28 16:42
Hephaestus 发表于 2021-8-26 18:20
库也分什么库,对于STM32来说,StdPeriph库和LL库就很不错,没发现效率比寄存器低的情况,相反开发效率不知 ...

是滴,我只用标准库和LL库,除非没有标准库或外设没有LL库了采用HAL。
作者: shiwei@zhang    时间: 2025-5-19 09:42
可以学习一下寄存器
作者: Hephaestus    时间: 2025-6-2 23:20
草本之处 发表于 2023-4-10 15:26
现在就在学,我觉得用库比寄存器好得多,程序不用死等待,节省时间和提高单片机运行效率

库也是死等!轮询systick本质上跟死等一样也是死等,只有上了RTOS用osDelay才不是死等。
作者: 1763333333    时间: 2025-6-9 08:59
库函数是对寄存器的封装开发步骤简单难度低效率高,寄存器开发执行效率高一般用于对芯片底层及其熟悉的开发者
作者: 1763333333    时间: 2025-6-9 10:49
库适合新手,寄存器开发适合深究高技术开发者




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1