大家是,我是贤弟!
以下内容是贤弟学习单片机的笔记,仅当作个人学习知识过程的总结。
STM32的开发可以通过不同的库来实现,主要包括基于寄存器的开发、基于标准库(SPL)的开发和基于HAL库的开发。以下是这三种开发方式的不同之处:
1. **基于寄存器的开发**:
- 这是最底层的开发方式,开发者需要直接操作STM32的寄存器来实现功能。
- 这种方式类似于51单片机的开发,执行效率最高,但因为STM32结构复杂、寄存器众多,所以不推荐使用,尤其是在开发时需要反复查询手册,非常不方便。
2. **基于标准库(SPL)的开发**:
- 标准库是在寄存器的基础上进行了一次简单封装,主要是面向过程的嵌入式系统开发人员。
- 库将抽象的寄存器定义成可读的字串,极大提高了代码的阅读性和开发速度。
- 由于是上层封装,执行效率没有直接基于寄存器开发那么高,但比HAL库要高。
- 标准库提供了通用的功能,如输入输出、内存管理等,但可能缺乏对特定硬件的直接支持,在进行底层操作时可能需要额外的编程工作。
3. **基于HAL库的开发**:
- HAL库是ST公司目前主推的开发方式,全称为Hardware Abstraction Layer(硬件抽象层)。
- HAL库提供了对硬件的抽象接口,简化了硬件操作,并提供了更直接的硬件访问接口。
- 它具有很好的移植性,不同型号的STM32芯片可以使用相同的HAL库函数,只要使用的是相同的外设,程序基本可以完全复制粘贴。
- HAL库通过图形化的配置功能,可以直接生成整个使用HAL库的工程文件,非常方便,但这也导致了它的执行效率低于标准库,因为封装得太严重,使得用户很难接触底层。
- HAL库针对特定硬件平台,不具备通用性,可能会增加代码的复杂性,特别是在需要跨平台开发时。
总结来说,基于寄存器的开发是最接近硬件的,执行效率最高,但开发难度大;标准库提供了较好的封装,易于理解和使用,但执行效率低于寄存器开发;HAL库则提供了更好的移植性和易用性,但执行效率最低,且对底层的控制不如前两者直接。开发者可以根据项目需求和个人偏好选择合适的开发方式。
领取专属 10元无门槛券
私享最新 技术干货