从代码层面分析STM32 标准库和HAL库的差异

本文对比了STM32单片机开发中HAL库和标准库的使用,通过LED灯程序示例展示了两者在端口操作、时钟使能、GPIO初始化及中断处理上的差异。HAL库倾向于函数合并,简化代码编写,而标准库函数更为独立,便于调试。两种方式各有优缺点,开发者可根据项目需求和个人喜好选择。

  如果用过STM32系列单片机的朋友会比较清楚,一般在开发STM32单片机程序的时候首先要考虑选用那种方式来写代码。常见的有三种方式,寄存器版、标准库版、HAL库版。现在选用后两种的比较多,选择寄存器开发的可能比较少了。而后两种方式到底选用那种好呢?现在都是公说公有理,婆说婆有理,每个人的判断标准都不同。今天我不探讨这两种方式的优缺点,单纯的从代码的角度去分析对比这两种方式写代码的相同点和差异。

  为了更有对比性,我选择了功能一模一样的LED灯程序,一个是用标准库写的,一个是HAL库写的。
在这里插入图片描述
  看到这个文件名字,我想大多数人都比较熟悉了恶,我这里就不多做介绍,直接开始从代码的角度出去,去比较。
在这里插入图片描述
  左边的是HAL库,右边的是标准库,端口的初始化暂时先不看,直接看对IO口的操作。可以看出HAL库对端口置1和置0时,调用的是同一个函数,只是函数的参数不同。右边的标准库调用的是两个不同的函数,但是参数是一样的。下面直接对比一下端口设置的库函数。

在这里插入图片描述
  这两个版本的函数本质上操作的还是寄存器,不过HAL库操作的只是BSRR寄存器,而标准库端口置1的时候操作的是BSRR寄存器,端口清0的时候操作的是BRR寄存器。下面看看BSRR和BRR寄存器的区别。

在这里插入图片描述

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值