一:什么是hal库?为什么用hal库?
hal:Hardware abstraction layer,即硬件抽象层。一开始看到这个解释很懵逼,通俗点说就是ST公司为了方便开发者实现不同硬件平台的程序迁移而推出的一种替代标准库的新一代的开发标准。将硬件抽象化,忽略不同硬件平台的接口细节,将内核和硬件电路完全的独立出来。对于相同内核的平台,在进行程序迁移的时候,只需要改动与硬件相关的程序即可,大大节省了开发的时间。
标准库:第一次接触标准库还是在本科阶段,那时候还在上51的单片机课程,相比于面向寄存器,标准库采用封装好的库函数的编程思路是如此的直观简洁,再也不用记那么多的寄存器和操作指令,那时候很天真的认为这就是最好嵌入式开发方式了,最近这段时间看了hal库惊叹世间竟有比标准库更方便的开发方式,配合ST推出的CubeMX(后面有介绍)开发的效率更高了。
对比:其实hal库和标准库的实现思路都是采用库函数实现,只不过hal库实现了明确的区分,硬件相关的函数你们在一起(基本上需要自己来写),内核相关的函数归为一类(这部分借助CubeMX基本可以直接生成,很赞!),一方面适合移植,一方面大大节省了程序开发的时间,尤其是一些繁琐的初始化工作;标准库可就不会有那么明显的区分,也不能借助CubeMX进行初始化操作,所以一开始的配置过程比较耗费时间(copy再修改还是挺快的,嘿嘿~~&#