stm32单片机教程 用STM32只会库函数,不会用寄存器,有影响吗?
用STM32只会库函数,不会用寄存器,有影响吗?
不会配置STM32的寄存器,而会使用官方的库函数是不影响使用STM32单片机的。STM32单片机在编程时即可以使用配置寄存器的方式,又可以使用库函数的方式,这两种方式都是可以操作STM32单片机的。
熟悉51单片机的朋友,都知道在编写程序时,需要配置51单片机的寄存器。单片机具有很多的片上资源,而片上资源要正常工作,就需要配置相应的寄存器。比如单片机的定时器资源,在配置定时器相关的寄存器时就是配置定时器的工作方式、位数、是否使用定时中断、配置初始值等。
而到了STM32单片机,厂家直接提供了官方库函数。这些库函数的作用其实就是将寄存器的配置过程封装了起来,用户在编程的时候不需要直接和寄存器打交道,而只需要调用相应的库函数就可以。这样就可以将配置寄存器的过程分离开来,实现了硬件层面和软件层面的简单分离,其实就是驱动的作用。
STM32还有HAL库,即使是使用库函数编程,还是建议研究一下寄存器。
所以,不管使用库函数,还是直接配置寄存器都是可以操作单片机的。
以上就是这个问题的回答,感谢留言、评论、转发。更多电子设计、硬件设计、单片机等内容请关注本头条号:玩转嵌入式。感谢大家。
stm32单片机编程用库函数好还是寄存器好?
这个问题从两方面来说:如果希望快速开发出来项目的话,用库函数开发;如果希望学精、学透单片机原理的话,用寄存器开发。
一、从开发时间快慢来说,用库函数
现在公司开发一个项目的话,都会对时间进度有很高的要求,一般都会要求快速高效的把产品做出来,而不管你用那种方式,只要保证产品的质量就行。在这种情况下,就必须找一种能够快速开发的途径,而库函数正是基于这种原因创建的。芯片公司为了帮助产品工程师降低开发难度、加快开发进度,推出了各种库函数,这些库函数都是由专业程序设计人员编写的,无论从代码的稳定性、规范性、正确性方面来说,都是经过芯片厂家反复验证的,完全可以直接拿来就用。
当然,用库函数有一定的缺陷,例如会导致代码量增大,影响程序运行速度等,但是现在stm32单片机的程序空间一般都足够大,并且每一系列里面都有pin-to-pin的型号可以互换,如果程序空间不够,直接替换另一个管脚兼容的,程序空间更大的即可,程序直接移植过来,几乎不用修改。
二、从原理性学习来说,用寄存器
对于想要学习单片机的工作原理,想真正弄清楚stm32的内部结构,工作过程,底层配置这些功能的人员来说,当然是选用寄存器来开发了。
用寄存器开发,可以直接接触到最底层的,并且用寄存器可以减少代码量,提高程序运行速度。
stm32是用hal库,还是标准库?懂行的介绍一下?
标准库函数则是ST以前推出的,包括寄存器版本和库函数版本。寄存器版本使用较麻烦,每个设置都要去查看芯片datasheet,好处是可以让你熟悉芯片的寄存器配置。库函数是基于寄存器版本进行二次封装后
推出的,它的优势就是寄存器版本的劣势,方便了使用,不再需要手动去配置寄存器,使用更方便了。但是它的劣势就是HAL的优势,就是每次修改MCU功能,都需要手动去修改功能,而且自己修改也不能
保证正确性,程序代码在不同MCU之间的移植性不强。
HAL库,HAL是Hardware Abstraction Layer的缩写,中文名称是:硬件抽象层,HAL库工程一般使用Cube软件来生成工程。HAL库是ST公司为STM32的MCU最新推出的抽象层嵌入式软件,
更方便的实现跨STM32产品的最大可移植性。优势就是不需要开发工程师再关注所用MCU型号,只需要专注所以要的功能软件开发工作。而且是未来主推的方向,正在不断的推出更新。
建议平时用的时候将自动更新关闭,否则会出现之前调试好的代码因为更新导致不能正常工作。设置方法点Cube软件的help,然后选择手动更新,详细见配图。
以我和公司工程师研发经历来看,最开始的时候都使用标准库函数,后来发现ST推出HAL库以后,慢慢都转到HAL库的开发。它的优势在于不同芯片间软件代码的移植性非常强,而且用Cube软件生成
的工程规定了自己的代码放置位置,如果不按规定写,重新用Cube生成工程时自己的代码会被覆盖,进一步加强了代码的移植性。
另外,如果需要修改MCU的功能,比如新添加GPIO或者串口,采用标准库函数的时候,需要复制其他串口的初始化代码,然后手动修改。而采用HAL库则不需要,只需要在Cube添加设置,然后生成即可,
Cube自动帮你把初始化代码生成。
综上所述,建议新手直接使用HAL库,这样更容易上手,更快的开发出所需要的软件功能。将繁琐的寄存器配置工作,交给Cube软件即可,这也符合未来开发的主流思想。
如何在stm32里写自己库函数?
库函数也就是STM32研发人员把一个个文件封装组合起来的,本质上和用户自己的程序并没有什么区别,所以网上的教程才有库函数版本和寄存器版本,寄存器版本的教程学会了,自己把不同模块封装起来,其实也就成了自己的库。
如何学习stm32的固件库函数?
别急,一步一步来。从GPIO开始,做各个实验,慢慢去熟悉STM32的各个片内外设。固件库手册只是对STM32的寄存器的管理。好比你让某个GPIO端口输出啥数据,你可能需要*(volatileunsingnedlong*)addr=xxxx,其中addr是某个寄存器的地址,xxxx是要写入这个寄存器的值。使用固件库的话就是GPIO_Write(GPIOA,XXXX)了,这个就是固件库的好处,它能让让开发人员不用关心STM32的各个寄存器是干啥的,只要直接调用固件库的函数就能完成相应的功能,很容易上手,能够大大的加快开发进度。我觉得最好的方法就是去分析固件库源码,这个需要你有一点C语言功底,如果是从51单片机转过来,也没有什么经验的话可能有些吃力。STM32的固件库都是用结构体来管理这些寄存器的,所以你得熟悉结构体、熟悉结构体指针,枚举型等等,这样才能让你明白STM32的固件库到底是怎么回事。
stm32单片机教程 stm32常用库函数 stm32库函数手册中文
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。