一、HAL结构
HAL的作用是将基础的寄存器读写操作抽象掉,使程序员只需要关心对芯片模块的行为级操作。stm32的cube包以类似面向对象的思想来进行设计,每一个芯片模块都被抽象成一个类,它的私有成员用以辅助算法的实现,公有成员被用作一个方法供外部调用。
我开发板的芯片型号是stm32f10x系列,基础的芯片结构如下:
这时官网上下载的cube包里hal内容:
对比之后发现几乎所有的模块都已经被包含进HAL层。
二、HAL的初始化
HAL层被调用前要先运行初始化函数HAL_init(),它包含在针对HAL自身的全局操作操作的源文件hal.c里。
HAL全局结构
由于Hal_init函数不长,就直接上原型了:
HAL_StatusTypeDef HAL_Init(void)
{
/* Configure Flash prefetch */
#if (PREFETCH_ENABLE != 0)</