|
STM32G474xx HAL用户手册
|
COMP HAL模块驱动程序。该文件提供了用于管理COMP外设以下功能的固件函数:+ 初始化和去初始化函数+ 外设控制函数+ 外设状态函数。 更多...
#include "stm32g4xx_hal.h"COMP HAL模块驱动程序。该文件提供了用于管理COMP外设以下功能的固件函数:+ 初始化和去初始化函数+ 外设控制函数+ 外设状态函数。
版权所有 (c) 2019 STMicroelectronics。保留所有权利。
本软件根据LICENSE文件中规定的条款进行许可,该文件位于本软件组件的根目录中。如果本软件没有随附LICENSE文件,则按"原样"提供。
==============================================================================
##### COMP外设特性 #####
==============================================================================
[..]
STM32G4xx器件系列集成了七个模拟比较器实例:
COMP1、COMP2、COMP3、COMP4、COMP5、COMP6和COMP7。
(#) 比较器的负输入(反相输入)和正输入(非反相输入)
可以设置为内部参考或GPIO引脚
(参考手册中的GPIO列表)。
(#) 比较器输出电平可通过HAL_COMP_GetOutputLevel()获取,
并可重定向到其他外设:GPIO引脚(比较器的Alternate Functions模式),
定时器。
(参考手册中的GPIO列表)。
(#) 比较器具有通过EXTI控制器的中断能力,
支持从睡眠和停止模式唤醒。
从相应的IRQ处理程序中,可以使用宏__HAL_COMP_COMPx_EXTI_GET_FLAG()
检索正确的中断源。
##### 如何使用本驱动程序 #####
==============================================================================
[..]
本驱动程序提供了用于配置和编程STM32G4xx器件比较器实例的函数。
要使用比较器,请执行以下步骤:
(#) 通过实现HAL_COMP_MspInit()初始化COMP底层资源:
(++) 使用HAL_GPIO_Init()将连接到比较器正负输入的GPIO配置为模拟模式。
(++) 如需要,使用HAL_GPIO_Init()将连接到比较器输出的GPIO配置为Alternate Function模式。
(++) 如需要,使用HAL_GPIO_Init()函数配置EXTI线为中断模式并选择所需的灵敏度来启用COMP中断,
然后使用HAL_NVIC_EnableIRQ()函数启用比较器中断向量。
(#) 使用HAL_COMP_Init()函数配置比较器:
(++) 选择负输入(反相输入)
(++) 选择正输入(非反相输入)
(++) 选择滞后特性
(++) 选择消隐源
(++) 选择输出极性
-@@- HAL_COMP_Init()内部调用__HAL_RCC_SYSCFG_CLK_ENABLE()
以使能比较器的内部控制时钟。
然而,这是一种传统策略。在未来的STM32系列中,
COMP时钟使能必须在"HAL_COMP_MspInit()"中由用户实现。
因此,为了兼容性,建议在"HAL_COMP_MspInit()"中实现__HAL_RCC_SYSCFG_CLK_ENABLE()。
(#) 可以通过再次调用HAL_COMP_Init()函数并使用新的输入结构参数值
动态重新配置比较器。
(#) 使用HAL_COMP_Start()函数使能比较器。
(#) 使用HAL_COMP_TriggerCallback()或HAL_COMP_GetOutputLevel()函数
管理比较器输出(事件和输出电平)。
(#) 使用HAL_COMP_Stop()函数禁用比较器。
(#) 使用HAL_COMP_DeInit()函数去初始化比较器。
(#) 为了安全起见,可以使用HAL_COMP_Lock()函数锁定比较器配置。
唯一解锁比较器的方法是设备硬件复位。
*** 回调注册 ***
=============================================
[..]
编译标志USE_HAL_COMP_REGISTER_CALLBACKS设置为1时,
允许用户动态配置驱动程序回调。
使用函数HAL_COMP_RegisterCallback()
注册中断回调。
[..]
函数HAL_COMP_RegisterCallback()允许注册以下回调:
(+) TriggerCallback : COMP触发回调。
(+) MspInitCallback : Msp初始化回调。
(+) MspDeInitCallback : Msp去初始化回调。
此函数接受HAL外设句柄、回调ID和用户回调函数指针作为参数。
[..]
使用函数HAL_COMP_UnRegisterCallback将回调重置为默认的弱函数。
[..]
HAL_COMP_UnRegisterCallback接受HAL外设句柄和回调ID作为参数。
此函数允许重置以下回调:
(+) TriggerCallback : COMP触发回调。
(+) MspInitCallback : Msp初始化回调。
(+) MspDeInitCallback : Msp去初始化回调。
[..]
默认情况下,在HAL_COMP_Init()之后且状态为HAL_COMP_STATE_RESET时,
所有回调都设置为相应的弱函数:
例如HAL_COMP_TriggerCallback()。
MspInit和MspDeInit函数为例外,它们仅在这些回调为null(在事先未注册)时
在HAL_COMP_Init()/HAL_COMP_DeInit()中被重置为传统弱函数。
[..]
如果MspInit或MspDeInit不为null,则HAL_COMP_Init()/HAL_COMP_DeInit()
无论状态如何都会保留并使用用户的MspInit/MspDeInit回调(事先注册的)。
[..]
回调只能在HAL_COMP_STATE_READY状态下注册/注销。
MspInit/MspDeInit函数例外,它们可以在HAL_COMP_STATE_READY或HAL_COMP_STATE_RESET状态下注册/注销,
因此在Init/DeInit期间可以使用已注册的用户MspInit/DeInit回调。
[..]
然后,用户首先使用HAL_COMP_RegisterCallback()注册MspInit/MspDeInit用户回调,
然后再调用HAL_COMP_DeInit()或HAL_COMP_Init()函数。
[..]
当编译标志USE_HAL_COMP_REGISTER_CALLBACKS设置为0或未定义时,
回调注册功能不可用,所有回调都设置为相应的弱函数。
定义于文件 stm32g4xx_hal_comp.c。
1.7.6.1