STM32学习日志(3)—HAL库的结构与使用

目录

1.  HAL库的整体结构

1.1 文件夹结构

1.2 工程树结构

2. HAL库的函数原理

2.1 单个功能的文件内容

2.2 函数调用层级


1.  HAL库的整体结构

宏观上来看HAL库从底层到上层可由下图来呈现:

 从上述不难看出来HAL库主要用于操纵寄存器,芯片驱动以及功能驱动。

1.1 文件夹结构

        以下为我基于H563板子创建的工程项目,每个文件夹都有不同的含义:

各文件夹功能
文件夹功能
Core存放内核代码
Debug存放着与仿真器调试相关的文件
Drivers存放着HAL库和相关的驱动程序文件
icode(并未出现)存放着用户自建的板级硬件驱动程序
Middlewares(并未出现)存放着与“中间件”相关的驱动程序文件
USB_DEVICE(并未出现)c存放着USB从设备的驱动程序文件

 其中还有几个例如 .project表示cubeide工程的启动文件,.ioc为cubemx图形界面的启动文件,在此并未显示。

1.2 工程树结构

实际不难发现工程树结构与上述文件夹结构相同。各个部分下面将详细讲解

1) Core文件:里面包括Inc、Src、Startup三大部分,分别用来装.h文件、.C文件、以及会变启动文件。其中sys开头的这些文件主要是最底层的内核级文件。main.c为程序主函数。

 2) Drivers

 

 3)Debug

4)icode

 建议:之后每次再添加新外设新功能时候,都在相应文件夹下建立 .c/.h文件。

2. HAL库的函数原理

2.1 单个功能的文件内容

这里可以看下面这篇大佬的文章:

GPIO相关函数解析:https://blog.csdn.net/weixin_44793491/article/details/107603084

 while (1)
  {
    /* USER CODE END WHILE */
	  HAL_GPIO_TogglePin(GPIOB, LED_BLUE_Pin);
    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}

TogglePin为翻转电平在这里,LED_BLUE_Pin为蓝灯所在的引脚,即执行该语句红灯应该闪烁。

while (1)
  {
	  HAL_GPIO_WritePin(LED_RED_GPIO_Port, LED_RED_Pin, GPIO_PIN_RESET);
	  HAL_Delay(1000);
	  HAL_GPIO_WritePin(LED_RED_GPIO_Port, LED_RED_Pin, GPIO_PIN_SET);
	  HAL_Delay(1000);
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }

2.2 函数调用层级

 选中变量名等右键选择open Declaration即可跳转声明处。或者快捷键chontrol+点击也可以

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值