2016 - 2024

感恩一路有你

stm32hal库视频教程正点原子 hal库和固件库有什么区别?

浏览量:1895 时间:2021-04-06 04:39:15 作者:admin

hal库和固件库有什么区别?

ST 先后提供了两套固件库:标准库和 HAL 库。 STM32 芯片面市之初只提供了丰富全面的

标准库,大大便利了用户程序开发,为广大开发板所推崇,同时也为 ST 积累了大量标准库用

户。有过 STM32 基础的同学想必对标准库非常熟悉。我们正点原子目前的所有 STM32F1 开发

板以及探索者 STM32F407 开发板都是采用的标准库。 目前网络学习资料和源码,绝大多数都

是采用的标准库。

大约到 2014 年左右, ST 在标准库的基础上又推出了 HAL 库。 实际上, HAL 库和标准库

本质上是一样的,都是提供底层硬件操作 API,而且在使用上也是大同小异。有过标准库基础

的同学对 HAL 库的使用也很容易入手。 个人认为 ST 官方之所以这几年大力推广 HAL 库,是

因为 HAL 的结构更加容易整合 STM32Cube,而 STM32CubeMX 是 ST 这几年极力推荐的程序

生成开发工具。所以这两年新出的 STM32 芯片, ST 直接只提供 HAL 库。在新型的 STM32 芯

片中,用 HAL 库逐步淘汰标准库。

那么有很多同学不禁要问,我们是使用 HAL 库还是标准库好呢? 这里我们想说的是, HAL库和

标准库都非常强大,对于目前标准库支持的芯片采用标准库开发也非常方便实用,而且目

前网络资料和程序大部分都是讲解的标准库。大家不需要纠结自己学的是 HAL 库还是标准库,

无论使用哪种库,只要理解了 STM32 本质,任何库都是一种工具,使用起来都非常方便。 学

会了一种库,另外一种库也非常容易上手,程序开发思路转变也非常容易。 如果你是一个 STM32

熟手,长期从事 STM32 开发,那么有必要对标准库和 HAL 库都有一定的了解,这样才能在项

目开发中得心应手游刃有余。

为什么我学了几天STM32感觉一脸茫然?

本人学过51,工作后学的stm32。 开始学的是正点原子的板子(当时也狠心买了寄存器版和固件库版的书[流泪][流泪][流泪]贵死了),但是不知道为什么 有点听得糊里糊涂的,各种外设寄存器,时钟锁相环ahb,apb那些。后来网上找课程对比一下 果断转去野火。野火的教程很详细 细节做到位,通俗易懂。 前期听着野火的教程配合着原子教程交叉学习 ,搞得差不多就可以各取所需了。以上是我的学习过程。一起努力加油吧。

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单片机是用正点原子的mini版好还是精英版好呢?

如果是初学者,那么那些复杂的功能暂时都不会用到。

初学者主要学习系统时钟配置,GPIO配置与控制,常用的外设如串口、SPI,看门狗用法,定时器,ADC用法等。就是一个比较简单的项目所需要的功能,有了这些基础,再慢慢提升扩展。

STM32提供了免费的STM32CubeIDE集成开发环境,内嵌了可视化的STM32CubeMX初始化工具,上手非常容易。通过解读其初始化代码,也有助于快速理解相关功能寄存器的配置和使用方法。

可参考我的专题,有详细解说STM32的功能与用法。

本人初学stm32,看上正点原子的教程搜了一下发现他有探索者STM32F407ZGT6和战舰STM32F103ZET6两种开发板?

两者区别还是蛮大的,一个是M4的内核,一个是M3 的内核,要是手头经济不是很紧张,可以考虑使用F4的,毕竟F103上面有的F407上面都有,但F407有的,F103就不一定了。也就是说F407具有更全面的外设接口,功能也更多,两者相比之下当然选择F407最好。

当然从另一个角度来说,F103几乎是STM系列的代表了,F103系列的使用者最多,网上资源丰富,非常适合初学者入门,对于F407来说,初学者的入门会慢上一些,毕竟F407功能更全,也意味着更复杂。

所以我的建议是根据你自身的情况作出选择:

要是你急需入门,之前没有一定的单片机基础,你现在要做的项目功能比较简单,不涉及网络方面的,就建议你上手F103。

要是你有过其他单片机的基础了,现在时间充裕,想更全面的提高自己的技能,就建议选F407的。

stm32hal库视频教程正点原子 stm32正点原子官网 stm32f407hal库正点原子

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。