焦点+明星公众号,是的,令人兴奋的内容作者:strongHuang微信公众号:strongshuang因为STM32标准外设库停止了更多,导致许多开发人员转向HAL,但有些读者可能更困惑,HAL和LL可以这两个库混在一起吗? 1.标准外围设备库已停止。
许多学习STM32的朋友都依赖于以前的标准外设库(StdPeriph_Lib)。
我想告诉您一个事实,即标准外围设备库已停止很长时间了。
支持标准外设库的STM32,只有相对较旧的系列:F0,F1,F2,F3,F4,L1。
我看了一眼。
STM32标准外设库的最新更新是2016年11月的F4系列。
标准外围设备库地址:https://www.st.com/en/embedded-software/stm32-standard-peripheral-libraries.html(公用号码不支持外部链接,请将该链接复制到浏览器中以打开)这将在以后发布。
没有针对L0,L4,L5,F7,H7,G0,G4,MP1等的标准外设库。
因此,STM32CubeHAL的使用将成为未来的主流。
这里有一个问题:我应该使用HAL还是LL开发?两者可以一起发展吗?进一步阅读:关于STM32的四种类型的嵌入式软件库STM32Cube LL之所以能够高效的原因其次,HAL和LL库可以混合吗?这个问题的答案是:不建议一起使用。
当然,此问题分为以下情况:相同的外围设备和不同的外围设备一起使用HAL和LL库。
1.不同的外围设备混合使用HAL和LL库这里提到的不同外围设备将不同的外围设备混合使用HAL和LL库。
例如:UART使用HAL库,SPI使用LL库。
在这种情况下,一般来说:问题不大。
因为官方从信息或STM32CubeMX工具配置上都没有反对这种方法。
尽管没有明确声明不允许执行此操作,但不建议在实际项目中使用。
出于这个原因,我无需多说,具有项目经验的朋友会理解。
这不利于代码迁移,管理和其他任务。
2.混合使用相同外设的HAL和LL库这是本文的重点。
在这种情况下,官方不建议将它们混合使用。
如果混合使用,将出现一系列问题:底层冲突,结构混乱,管理不便等。
LL库驱动程序是独立的,HAL包含驱动程序包。
以STM32F4的UART传递函数为例。
LL库位于stm32f4xx_ll_usart.h中:而HAL是在stm32f4xx_hal_uart.c中定义的:从中可以看出LL仅需要包括头文件。
HAL必须包含bsp软件包。
如果您使用LL库项目而要使用HAL库,则需要将bsp软件包添加到项目中。
HAL句柄对于LL,使用HAL库时,将有一个额外的句柄,例如UART1:UART_HandleTypeDef huart1;如果是LL库的项目,则由于缺少句柄而无法直接调用HAL接口。
中断请求的处理HAL和LL中断请求的IRQ方法实际上是不同的,并且混合后很容易出错。
这是一个简单的例子,对底线有深刻了解的朋友应该知道,在很多地方不建议将它们混合使用。
当然,这不是绝对的(不能混用),我想说:作为最后的选择,请谨慎使用。
------------结束------------推荐阅读:Cortex-M内核的MPU编程器是什么?如何选择开源协议?线程,进程,多线程,多进程和多任务遵循微信公众号“ strongerHuang”,回复“ 1024”。
在后台查看更多内容,请在“按照规定加入技术交流小组。
长按可转到图片中包含的官方帐户。
点击“阅读原件”查看更多分享。
欢迎分享,收藏,喜欢和观看。
免责声明:本文内容经21ic授权后发布,版权归原作者所有。
该平台仅提供信息存储服务。
本文仅代表作者的个人观点,并不代表该平台的立场。
如有任何疑问,请与我们联系,谢谢!