先说说使用HAL的优点和缺点 先说缺点 1移植比较麻烦,二次开发如果有源文件会比较容易,没有的话 二次开发完全抓瞎 但是也有解决的办法, 参考我的上一篇文章HAL库工程快速跟换不同芯片 2快速增加功能,原本板子有GPIO,UART,然后又想增加IIC的时候,就适合用HAL库,直接配置好,自动生成代码,就不用自己重新配置中断,...
ST提供的标准库、HAL库和LL库各有其优势和特点,如果是移植很久前的项目,大概率要使用标准库。如果新开发项目,使用STM32CubeMX就必须使用HAL库和LL库了。个人建议,现在最好是使用HAL库+LL库进行开发,因为这是官方主推的库,并且CubeMX确实是个很好用的工具,而里面只有HAL库和LL库。HAL库开发迅速,LL库开发稳定,...
可以说HAL库就是用来取代之前的标准外设库的。相比标准外设库,STM32Cube HAL库表现出更高的抽象整合水平,HAL API集中关注各外设的公共函数功能,这样便于定义一套通用的用户友好的API函数接口,从而可以轻松实现从一个STM32产品移植到另一个不同的STM32系列产品。HAL库是ST未来主推的库,从前年开始ST新出的芯片已经没...
HAL库:Hardware Abstraction Layer 全系列兼容,ST目前主推的库,具有强兼容性、易移植性,但效率较低。 LL库:Low Layer 全系列兼容,与HAL库捆绑发布,轻量级、效率高,但不匹配部分复杂外设。 三种库比较: 1.3MCU固件包 STM32微控制器各个产品系列都有独立的MCU固件包,HAL库属于MCU固件包的一部分。 MCU固件包文件结...
HAL库中断处理机制 之前使用标准外设库开发时,中断程序(函数)由我们自己实现。 而HAL库的中断处理函数是按照HAL处理机制来实现,如USART1,统一由HAL_UART_IRQHandler来进行处理,如下图: 其它大部分外设(TIM、SPI、CAN...)中断都类似,HAL进行统一处理。
现在,从底层开始分析HAL库的文件结构。 首先是cmsis开头的cmsis_armcc.h、cmsis_armclang.h、cmsis_compiler.h和cmsis_gcc.h四个文件,这四个文件用于兼容不同的编译器,并为core_cm7.h文件提供一些编译符号和汇编级的内核接口。位置:STM32Cube_FW_H7_V1.3.0\Drivers\CMSIS\Include\ ...
二、HAL 库简介 2.1 什么是 HAL 库 HAL 库是 ST 公司为 STM32 微控制器开发的一套硬件抽象层库,它对底层硬件寄存器进行了封装,提供了一系列的函数接口,开发者可以通过调用这些函数来实现对硬件的控制。HAL 库的设计理念是提供一种简单、高效、可移植的开发方式,减少开发者的开发时间和工作量。
04 LL库 LL库可以独立于HAL库,也可以和HAL库混合使用。某种程度上说:LL库是对原来标准库移植到Cube下的新的实现,LL库更接近硬件层,是支持所有外设的。使用ST官方的是桌面软件STMCubeMX可以根据项目需求直接配置后生成外设库文件程序,其中引用的是HAL库和LL库。使用STMCubeMX减少开发周期,但是对于用惯了标准库...
1、stm32f4xx.h主要包含STM32同系列芯片的不同具体型号的定义,是否使用HAL库等的定义,接着,其会根据定义的芯片信号包含具体的芯片型号的头文件: #if defined(STM32F405xx) 紧接着,其会包含stm32f4xx_hal.h。 2、stm32f4xx_hal.h:stm32f4xx_hal.c/h 主要实现HAL库的初始化、系统滴答相关函数、及CPU的...
模块化的 HAL 库是趋势,低效的短板会被硬件的增强所弥补。 当然底层的基本原理是必须要懂的,HAL 库也不是万能的,结合对底层的理解相信一定会让你的开发水准大大提高。 HAL库与标准库的区别 1 句柄 在STM32的标准库中,假设我们要初始化一个外设(这里以 USART 为例) 我们首先要初始化他们的各个寄存器。