STM32F1 HAL库笔记2_HAL 系统驱动程序

1、HAL 固件驱动程序 API 

1.1、如何使用此驱动程序

        通用 HAL 驱动程序包含一组通用的 API,PPP 外设驱动程序可以使用这些 API 来开始使用 HAL。HAL 包含两个 API 类别: • 常见的 HAL API • 服务 HAL API

 1.2、初始化和去初始化函数

        本节提供的功能:

        • 初始化闪存接口、NVIC 分配和初始时钟配置。它还会在需要超时时初始化 systick,并在启用时初始化备份域。

        • 去初始化 HAL 的公共部分。

        • 将时基源配置为具有 1ms 时基和专用的 Tick 中断优先级。

        – 默认情况下,SysTick 计时器用作时基源,但用户最终可以实现他正确的时基源(例如通用计时器或其他时间源),请记住,时基持续时间应保持 1 毫秒,因为PPP_TIMEOUT_VALUEs是以毫秒为基础定义和处理的。

        – 时基配置函数 HAL_InitTick()在程序开始时由 HAL_Init()自动调用,或在 clock 配置的任何时间由 HAL_RCC_ClockConfig()自动调用。

        – 时基源配置为以固定的时间间隔生成中断。如果从外设 ISR 进程调用 HAL_Delay() ,则必须小心,Tick 中断行必须具有比外设中断更高的优先级(数值较低)。否则,调用方 ISR 进程将被阻止。

        ― 影响时基配置的函数被声明为 __weak 以便在用户文件中有其他实现的情况下进行覆盖。        

        本节包含以下 API:

HAL_Init()
HAL_DeInit()
HAL_MspInit()
HAL_MspDeInit()
HAL_InitTick()

1.3、HAL 控制功能

        本节提供的功能:

        • 提供以毫秒为单位的时钟周期值

        • 提供以毫秒为单位的阻塞延迟

        • 暂停时基源中断

        • 恢复时基源中断

        • 获取 HAL API 驱动程序版本

        • 获取设备标识符

        • 获取设备修订标识符

        • 在睡眠模式下启用/禁用调试模块

        • 在停止模式下启用/禁用调试模块

        • 在待机模式下启用/禁用调试模块

        本节包含以下 API:

HAL_IncTick()
HAL_GetTick()
HAL_GetTickPrio()
HAL_SetTickFreq()
HAL_GetTickFreq()
HAL_Delay()
HAL_SuspendTick()
HAL_ResumeTick()
HAL_GetHalVersion()
HAL_GetREVID()
HAL_GetDEVID()
HAL_GetUIDw0()
HAL_GetUIDw1()
HAL_GetUIDw2()
HAL_DBGMCU_EnableDBGSleepMode()
HAL_DBGMCU_DisableDBGSleepMode()
HAL_DBGMCU_EnableDBGStopMode()
HAL_DBGMCU_DisableDBGStopMode()
HAL_DBGMCU_EnableDBGStandbyMode()
HAL_DBGMCU_DisableDBGStandbyMode()

1.4、功能详细说明

HAL_Init

函数名称: HAL_StatusTypeDef HAL_Init(void) 
函数说明: 该函数用于初始化HAL Library;它必须是要在主程序中执行的第一条指令(在调用任何其他 HAL 函数之前),它会执行以下操作:配置 Flash 预取。
返回值:   HAL:状态
说明:     SysTick 用作 HAL_Delay()函数的时基,应用程序需要确保 SysTick 时基始终设置为 1 毫秒才能进行正确的 HAL 操作。

HAL_DeInit

函数名称: HAL_StatusTypeDef HAL_DeInit(void) 
函数描述: 此函数取消初始化 HAL 的公共部分并停止 systick。
返回值:   HAL:状态 
备注:     此函数是可选的

HAL_MspInit

函数名称: void HAL_MspInit(void)
函数说明: 初始化 MSP
返回值:   无

HAL_MspDeInit

函数名称: void HAL_MspDeInit(void) 
函数描述: 去初始化MSP
返回值:   无

HAL_InitTick

函数名称: HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority)
函数说明: 该函数用于配置时基的来源。
参数:	  TickPriority:时钟周期中断优先级。
返回值:   HAL: 状态 
备注: • 此函数在 HAL_Init()复位后在程序开始时自动调用,或在 HAL_RCC_ClockConfig()重新配置时钟时随时自动调用。
      • 在默认实现中,SysTick 计时器是时基的来源。它用于以固定的时间间隔生成中断。如果从外设 ISR 进程调用 HAL_Delay(),则必须小心,SysTick 中断必须具有比外设中断更高的优先级(数值较低)。否则,调用方 ISR 进程将被阻止。该函数被声明为 __weak 以在用户文件中有其他实现的情况下被覆盖。

HAL_IncTick

函数名称: void HAL_IncTick(void)
函数说明: 调用此函数以递增用作应用程序时基的全局变量 “uwTick”。
返回值:   无
注释:    • 在默认实现中,此变量在 SysTick ISR 中每 1 毫秒递增一次。
          • 此函数被声明为 __weak 以在用户文件中存在其他实现时被覆盖。

HAL_Delay

函数名称: void HAL_Delay(uint32_t delay) 
函数说明: 此函数根据变量递增提供最小延迟(以毫秒为单位)。
参数:     Delay:指定延迟时间长度(以毫秒为单位)。
返回值:  无
注释: • 在默认实现中,SysTick 计时器是时基的来源。它用于以 uwTick 递增的固定时间间隔生成中断。
      • 此函数被声明为 __weak 以在用户文件中存在其他实现时被覆盖。

HAL_GetTick

函数名称: uint32_t HAL_GetTick(void)
函数描述: 提供以毫秒为单位的刻度值。
返回值:   tick: 值 
备注:    此函数被声明为 __weak,以便在用户文件中的其他实现的情况下被覆盖。

HAL_GetTickPrio

函数名称: uint32_t HAL_GetTickPrio(void)
函数说明: 此函数返回 tick 优先级。
返回值:   tick: priority

HAL_SetTickFreq

函数名称: HAL_StatusTypeDef HAL_SetTickFreq(HAL_TickFreqTypeDef 频率)
函数描述: 设置新的时钟周期频率
返回值:  状态:

HAL_GetTickFreq

函数名称: HAL_TickFreqTypeDef HAL_GetTickFreq(void) 
函数描述: 返回时钟周期频率。
返回值:  tick:以 Hz 为单位的周期 

HAL_SuspendTick

函数名称: void HAL_SuspendTick(void) 
函数描述: 暂停 Tick 增量。
返回值:   无:
注释: • 在默认实现中,SysTick 计时器是时基的来源。它用于以固定的时间间隔生成中断。一旦 HAL_SuspendTick()被调用,SysTick 中断将被禁用,因此 Tick 增量被暂停。
		• 此函数被声明为 __weak 以在用户文件中存在其他实现时被覆盖。

HAL_ResumeTick

函数名称: void HAL_ResumeTick(void) 
函数说明: 恢复 Tick 增量。
返回值:  无
注释: • 在默认实现中,SysTick 计时器是时基的来源。它用于以固定的时间间隔生成中断。一旦 HAL_ResumeTick()被调用,SysTick 中断将被启用,因此 Tick 增量恢复。
		• 此函数被声明为 __weak 以在用户文件中存在其他实现时被覆盖。

HAL_GetHalVersion

函数名称: uint32_t HAL_GetHalVersion(void) 
函数描述: 返回 HAL 修订版。
返回值: • 版本:0xXYZR(每个小数点为 8 位,R 代表 RC)

HAL_GetREVID

函数名称: uint32_t HAL_GetREVID(void) 
函数描述: 返回设备修订标识符。
返回值: • 设备:修订标识符 

HAL_GetDEVID 

函数名称: uint32_t HAL_GetDEVID(void) 
函数描述: 返回设备标识符。
返回值: • 设备:标识符 

HAL_GetUIDw0 

函数名称: uint32_t HAL_GetUIDw0(void) 
函数说明: 返回唯一设备标识符的第一个字(基于 96 位的 UID) 
返回值: • 设备:标识符 

HAL_GetUIDw1

函数名称: uint32_t HAL_GetUIDw1(void) 
函数说明: 返回唯一设备标识符的第二个字(基于 96 位的 UID) 
返回值: • 设备: 标识符 

HAL_GetUIDw2

函数名称: uint32_t HAL_GetUIDw2(void) 
函数说明: 返回唯一设备标识符的第三个字(基于 96 位的 UID) 
返回值: • 设备:标识符 

HAL_DBGMCU_EnableDBGSleepMode 

函数名称: void HAL_DBGMCU_EnableDBGSleepMode(void) 
函数描述: 在 SLEEP 模式下启用调试模块。
返回值: • 无

HAL_DBGMCU_DisableDBGSleepMode

函数名称: void HAL_DBGMCU_DisableDBGSleepMode(void) 
函数说明: 在睡眠模式下禁用调试模块  
注意:在器件 STM32F10xx8 和 STM32F10xxB、STM32F101xC/D/E 和 STM32F103xC/D/E、STM32F101xF/G 和 STM32F103xF/G STM32F10xx4 和 STM32F10xx6 调试寄存器 DBGMCU_IDCODE 和 DBGMCU_CR只能在调试模式下访问(在正常模式下用户软件无法访问)。
返回值: • 无

HAL_DBGMCU_EnableDBGStopMode

函数名称: void HAL_DBGMCU_EnableDBGStopMode(void) 
函数说明: 在停止模式下启用调试模块 
注意:在设备 STM32F10xx8 和 STM32F10xxB、STM32F101xC/D/E 和 STM32F103xC/D/E、STM32F101xF/G 和 STM32F103xF/G STM32F10xx4 和 STM32F10xx6 调试寄存器 DBGMCU_IDCODE 和 DBGMCU_CR 只能在调试模式下访问(在正常模式下用户软件无法访问)。
返回值: • 无

HAL_DBGMCU_DisableDBGStopMode 

函数名称: void HAL_DBGMCU_DisableDBGStopMode(void) 
函数说明: 在停止模式下禁用调试模块 
注意:在设备 STM32F10xx8 和 STM32F10xxB、STM32F101xC/D/E 和 STM32F103xC/D/E 上,STM32F101xF/G 和 STM32F103xF/G STM32F10xx4 和 STM32F10xx6 调试寄存器 DBGMCU_IDCODE 和 DBGMCU_CR 只能在调试模式下访问(在正常模式下用户软件无法访问)。
返回值: • 无

HAL_DBGMCU_EnableDBGStandbyMode

函数名称: void HAL_DBGMCU_EnableDBGStandbyMode(void) 
功能描述: 在待机模式下启用调试模块 
注意:在器件 STM32F10xx8 和 STM32F10xxB、STM32F101xC/D/E 和 STM32F103xC/D/E、STM32F101xF/G 和 STM32F103xF/G STM32F10xx4 和 STM32F10xx6 调试寄存器 DBGMCU_IDCODE 和 DBGMCU_CR 只能在调试模式下访问(用户无法访问)软件处于正常模式)。
返回值: • 无

HAL_DBGMCU_DisableDBGStandbyMode 

函数名称: void HAL_DBGMCU_DisableDBGStandbyMode(void) 
函数说明: 在待机模式下禁用调试模块 
注意:在设备 STM32F10xx8 和 STM32F10xxB、STM32F101xC/D/E 和 STM32F103xC/D/E、STM32F101xF/G 和 STM32F103xF/G STM32F10xx4 和 STM32F10xx6 调试寄存器 DBGMCU_IDCODE 和 DBGMCU_CR 只能在调试模式下访问(在正常模式下用户软件无法访问)。
返回值: • 无

2、HAL 固件驱动程序定义

2.1、 在调试模式下冻结和解冻外设

__HAL_DBGMCU_FREEZE_TIM2
__HAL_DBGMCU_UNFREEZE_TIM2
__HAL_DBGMCU_FREEZE_TIM3
__HAL_DBGMCU_UNFREEZE_TIM3
__HAL_DBGMCU_FREEZE_TIM4
__HAL_DBGMCU_UNFREEZE_TIM4
__HAL_DBGMCU_FREEZE_TIM5
__HAL_DBGMCU_UNFREEZE_TIM5
__HAL_DBGMCU_FREEZE_TIM6
__HAL_DBGMCU_UNFREEZE_TIM6
__HAL_DBGMCU_FREEZE_TIM7
__HAL_DBGMCU_UNFREEZE_TIM7
__HAL_DBGMCU_FREEZE_WWDG
__HAL_DBGMCU_UNFREEZE_WWDG
__HAL_DBGMCU_FREEZE_IWDG
__HAL_DBGMCU_UNFREEZE_IWDG
__HAL_DBGMCU_FREEZE_I2C1_TIMEOUT
__HAL_DBGMCU_UNFREEZE_I2C1_TIMEOUT
__HAL_DBGMCU_FREEZE_I2C2_TIMEOUT
__HAL_DBGMCU_UNFREEZE_I2C2_TIMEOUT
__HAL_DBGMCU_FREEZE_CAN1
__HAL_DBGMCU_UNFREEZE_CAN1
__HAL_DBGMCU_FREEZE_CAN2
__HAL_DBGMCU_UNFREEZE_CAN2
__HAL_DBGMCU_FREEZE_TIM1
__HAL_DBGMCU_UNFREEZE_TIM1
__HAL_DBGMCU_FREEZE_TIM9
__HAL_DBGMCU_UNFREEZE_TIM9
__HAL_DBGMCU_FREEZE_TIM10
__HAL_DBGMCU_UNFREEZE_TIM10
__HAL_DBGMCU_FREEZE_TIM11
__HAL_DBGMCU_UNFREEZE_TIM11

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值