用STM32只会库函数,不会用寄存器,有影响吗?

梦痕无忌


你好,看了已有的回答,多是认为没有影响,我和他们持相反的立场,我认为肯定有影响。下面我以下两个方面进行论述:

疑难问题定位需要知道寄存器细节

HAL库函数是ST开发的,也是人写出来的代码,既然是代码,那就有存在BUG的可能,而且像这些经过ST调试过的代码,更可能隐藏深层问题,这些都需要通过修改寄存器配置来调试定位。

对公司负责,更是对自己负责

也许你是找FAE来现场支持,把问题解决了,但决不能对问题的根因云里雾里,一知半解,作为合格的员工,需要对问题有深入的思考,这不仅是对公司负责,更是对自己负责,只能这样你的技术才能提高一个层次,越来越进步。当然这不是要求你对CPU的所有寄存器都了解,但是要能看懂寄存器,会用寄存器,这是作为一位技术人员的基本素养。

总的来讲,这不需要你精通,但一定要会,如果不会使用寄存器对工作有影响是必然的,希望我的回答能帮到你:)


子充


不会配置STM32的寄存器,而会使用官方的库函数是不影响使用STM32单片机的。STM32单片机在编程时即可以使用配置寄存器的方式,又可以使用库函数的方式,这两种方式都是可以操作STM32单片机的。

熟悉51单片机的朋友,都知道在编写程序时,需要配置51单片机的寄存器。单片机具有很多的片上资源,而片上资源要正常工作,就需要配置相应的寄存器。比如单片机的定时器资源,在配置定时器相关的寄存器时就是配置定时器的工作方式、位数、是否使用定时中断、配置初始值等。

而到了STM32单片机,厂家直接提供了官方库函数。这些库函数的作用其实就是将寄存器的配置过程封装了起来,用户在编程的时候不需要直接和寄存器打交道,而只需要调用相应的库函数就可以。这样就可以将配置寄存器的过程分离开来,实现了硬件层面和软件层面的简单分离,其实就是驱动的作用。

STM32还有HAL库,即使是使用库函数编程,还是建议研究一下寄存器。

所以,不管使用库函数,还是直接配置寄存器都是可以操作单片机的。

以上就是这个问题的回答,感谢留言、评论、转发。更多电子设计、硬件设计、单片机等内容请关注本头条号:玩转嵌入式。感谢大家。

玩转嵌入式


用STM32来做产品开发只会库函数,却不会操作寄存器,在大多数的项目中基本不会有什么影响的,用库函数写出来的效果和用寄存器写出来的效果完全一样。但是在某些情况下还是有一点点影响的。如果有精力的话,我建议两种方式都学一下。

为什么要用库函数?

有了库函数以后,会让我们的开发效率大大提高。这一点非常重要,毕竟公司做项目的时间是非常有限的,如果要去研究寄存器的使用,那真是费时又费力,STM32芯片的数据手册动辄上千页,这么多的寄存器要去吃透它,在时间上面肯定不允许。

作为工程师来说,我们当然希望操作越简单越好了,如果是傻瓜式的操作那更好。试想一下做上位机应用开发的同事,他们在需要什么功能的情况下就去找相应的接口就好了。库函数的操作就相当于这些接口的操作,它让我们不需要去了解硬件的机制,只要根据功能去找到相应的操作函数就好了,这真是一件美差,何乐而不为呢。

为了让工程师们获得傻瓜式操作的体验,ST公司甚至推出了HAL库,直接在CUBEMX软件界面一顿快速操作就能生成相应的代码,这简直就是神器,工程师们都要偷着乐了,上班又有更多偷闲的时间了。

所以,我认为采用库函数来操作的方式是完全有必要的,因为这不但加快了产品的研发的速度,还能极大的解放工程师的时间,让他们可以花更多心思在更有意义的事情上面。

有了库函数还需要学习寄存器的操作吗?

作为一个从事底层软件开发的人,我认为还是有必要更加了解硬件的。就像练武一样,光懂得套路还不行,如果要想达到实战的目的,你还必要学习杀人技。现在的武术上不了擂台,我看都是沦落于套路之中了吧。

用了库函数的缺点就是,代码量会增大,库函数会把所有情况都考虑到函数里面,没有一击即中的效果,有时会造成代码的冗余,在程序空间吃紧的时候,你还是得乖乖优化成寄存器的方式。对于一些实时性要求极其严格的场合,直接操作寄存器无疑是更好的选择。

不过不需要也不建议刚开始学习STM32单片机的时候就使用寄存器的方式,可以先尝试使用库函数的方式来操作。这样子入门会更快。等到调试的时候也会跳到寄存器内部,到时候再对着数据手册来分析也可以对寄存器有更好的了解。

操作寄存器就等于学习功夫的心法,如果你把STM32的寄存器都掌握得很好了,那你再去学习别的单片机的时候那就是小菜一碟了。

以上就是我的介绍,大概的给你普及了相关的知识,很多东西还没有细说,如果觉得不过瘾,可以关注我,我们一起交流探讨。

我是一名科技爱好者,有着多年的智能硬件开发经验,力求用浅显易懂的语言来解答隐晦难懂的一些技术问题,欢迎大家点赞和关注我。


智能硬件分析


使用STM32只会库函数,不会寄存器,并不影响产品开发。

STM32系列专为要求高性能、低成本、低功耗的嵌入式应用设计的ARM Cortex®-M0,M0+,M3, M4和M7内核。在实际产品开发中,成熟的芯片方案商都会提供库函数版本和寄存器版本两个版本。最常见的是两个版本混合,底层使用寄存器,中上层使用库函数。

如果你只是想快速完成开发任务,建议你直接调用库函数。如你还想和硬件打交道,建议你适当使用寄存器。安全高效的开发规则是,能用库函数的必须要用库函数,使用寄存器的必须要符合厂商Spec.。

很多产品团队都对成员进行分组分工,例如一般划分为驱动、系统、应用三类人员,基本上只有驱动组和系统组才允许操作寄存器,应用组只能使用已封装好的API。这样做最大的好处,安全且高效。

总的来说,只会库函数而不会寄存器,并不影响开发。因为有芯片方案商已为你做好必需的工作,或者是团队内驱动或系统组也可以为你做好必需的工作。


嵌入式宏思微想


用库函数当然可以,用寄存器也可以,根据个人情况选择,有人觉得标准库太大,会使用HAL库甚至LL库,不管采用哪个,还是要通过寄存器了解外设的工作方式的。我个人使用C++封装的寄存器方式,感觉比较方便。


whq7992


看开发周期了,时间紧就用库函数,方便啊,能提早交货要求高就直接操作寄存器,时间还是很重要滴。两者中间找找平衡就行了。


逝水流年染轻尘


STM32的话问题不大


茶风林丶


难保证以后不用别的单片机


好咯阿二


当然可以,stm32的库函数是官方编写的,能想到的他们都给你想到了。寄存器变成可以在学习其他芯片的时候用


谁也不能阻止我犯规


这个和只会C不会汇编可不可以开发单片机一个道理


分享到:


相關文章: