HAL封装中有如下特点(自己总结的):
特定外设要设置的参数组成一个结构体;
特定外设所有寄存器组成一个结构体;
地址基本都是通过宏来定义的,定义了各外设的起始地址,也就是对应寄存器结构体的地址,因为结构体里定义的是32位的地址,所以直接通过寄存器结构体指针->即可访问各寄存器。
实现过程基本都是:先根据要设置的数据赋值给参数结构体,之后根据这些参数来设置寄存器结构体。
最终的目的,都是将特定数据赋值给对应的寄存器。只不过用结构体实现了封装。
各端口的引脚定义:
从最低位为1,一直到最高位为1,分别对应着每一个引脚。
嵌入式的分层思想:
软件封装,抛去操作系统不说,裸机开发可分为以下三层:
1、寄存器层面的封装;
2、特定硬件层面的封装;
3、业务层面的使用;
以最简单的点亮LED为例说明。
寄存器层面就是指实现了特定GPIO的设置,可以对特定引脚进行一些操作,这一步主要是把芯片操作给封装起来。
特定硬件层面就是根据具体的外设以及其连接方式,实现其功能,比如点亮和熄灭LED,实现特定外设所有可能的操作。也就是说,把电路板调通。
业务层面就是根据业务,需要灯点亮还是熄灭,到这一步,更多的就是要处理业务逻辑了。