STM32HAL库初始

初识HAL库

CMSIS标准

CMSIS(Cortex Microcontrolller Software Interface Standart)微控制器软件接口标准,是由ARM和其他芯片厂商共同开发的一套标准。这个标准把软件分为3层。

  • 用户代码层(用户自己写的代码)
  • CMSIS层(就是一个包,不同芯片厂家可能不一样,ST公司是STM32Cube包)
  • 硬件层
    其中HAL库就在CMSIS层。
    在这里插入图片描述

HAL库

针对STM32开发,有如下几种开发方式。

  • 直接操作寄存器(执行效率高,但是开发太慢)
  • 使用标准外设库(目前官方不更新了,对于F7及其之后的系列不支持)
  • HAL库(官方主推,兼容性好,有时会调用LL库,效率可能稍慢一点)
  • LL库(直接操作底层,执行效率比HAL库高一点,与HAL库一起发布。但是不能匹配复杂外设)

STM32Cube固件包介绍

固件包获取

  • ST官网搜索STM32Cube固件包
  • 正点原子等论坛下载

STM32Cube固件包简介

下载来的固件包如下图所示,其中只有3个文件夹需要关心,其他都不需要管。
在这里插入图片描述

Drives

Drives包含以下3个文件。
在这里插入图片描述

  • BSP 存放官方开发板的板级支持包。对于我们来说,里面的东西完全可以按照自己的板子写。

  • CMSIS 用于存放符合CMSIS的组件,包括DSP库,Cortex-M内核及其设备文件,微控制器启动文件,专用头文件,专用系统文件等。CMSIS标准规定了CMSIS文件夹中有以下功能。
    在这里插入图片描述
    在这里插入图片描述
    CMSIS中包含以上文件,重要的是Device和Include这两个。
    device中我们主要需要以下文件。
    在这里插入图片描述
    include文件夹下面需要这些文件,这些文件都是为了程序编译不报错,无需深究。只有第五个文件需要依据你的单片机内核的不同而改变,这里使用的是M3内核单片机,选择core_cm3.h。
    在这里插入图片描述

  • STM32F4xx_HAL_Driver 存放F4单片机系列的HAL库,如果是STM32F1xx_HAL_Driver 存放F1单片机系列的HAL库.这里面存放这HAL库源码。此处由于下载的不同会有区别。其中inc,src里面的Legacy存放的是补充的源文件/头文件。因为只有一些芯片才有这些功能。

  • 在这里插入图片描述

Middlewares

中间层存放ST公司或其他第三方库。包括ST的USB,STemWin和第三方的RTOS,LWIP等库。
在这里插入图片描述

Projects

主要是官方工程,可以看看。

HAL库结构框架

HAL库文件介绍

在这里插入图片描述

HAL库API函数和变量命名规则

在这里插入图片描述

HAL库寄存器位操作相关宏定义

在这里插入图片描述

HAL库回调函数

在这里插入图片描述
初步了解HAL库的一些规则,有利于我们看懂和使用HAL库。

HAL库使用

HAL库使用需要文件

HAL库使用需要以下文件
在这里插入图片描述
以上文件再CMSIS中分别处于这些层
在这里插入图片描述

HAL库配置文件(STM32f1xx_hal_config.h)

  • 裁剪HAL库外设驱动源码,有以下两个方法。
    1.在STM32f1xx_hal_config.h中存在以下宏定义,如果不使用相关外设,直接屏蔽掉即可。屏蔽掉之后程序就不会编译相关外设驱动。
    在这里插入图片描述
    2.不将HAL库中全部的外设驱动都加入文件中,只加入需要的文件即可。
    在这里插入图片描述
  • 设置外部高速晶振频率
  • 设置时钟之前,需要先知道你的开发板自己的时钟大小,在芯片开发手册上有这些参数。
    -在这里插入图片描述
    在这里插入图片描述
  • 设置外部低速晶振频率
  • 在这里插入图片描述

STM32f1xx_hal.c

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值