硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3897|回复: 0
收起左侧

[HAL学习笔记] HAL库源文件stm32h7xx_hal_comp.c学习笔记,开启自带运放和比较器的研究(2018-09-13 V1.0)

[复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106771
QQ
发表于 2018-9-13 03:33:26 | 显示全部楼层 |阅读模式
说明:
H7自带两个比较器,且输出也可以通过GPIO配置出来。


==============================================================================
                                                                  ##### 比较器规格特性  #####
==============================================================================  


1、比较器的输入输入使用的参考引脚或者内部参考源

1.png

2、比较器的输出电平(高电平或低电平)可以通过函数HAL_COMP_GetOutputLevel()获取。比较器的输出也可以发给其他定时器和GPIO引脚使用。

3、窗口模式例化(就是初始化)

4、比较器的输出有中断触发能力,比较器1连接到EXTI20,而比较器2连接到EXTI21。同时支持从停机和睡眠模式唤醒。

5、两个比较器只有一个中断,通过宏定义区分 __HAL_COMP_COMP1_EXTI_GET_FLAG() 和 __HAL_COMP_COMP2_EXTI_GET_FLAG()

==============================================================================
                                                                  ##### 驱动如何使用  #####
==============================================================================  


1、函数HAL_COMP_MspInit()用于初始化函数底层

2、函数HAL_GPIO_Init()配置比较器的正向和反向输入,比较器的输出引脚也可以通过函数HAL_GPIO_Init()配置。
如果需要比较器输出使能EXTI中断,也是通过函数HAL_GPIO_Init()配置,然后函数HAL_NVIC_EnableIRQ。

3、函数HAL_COMP_Init配置比较器
(1)选择同相输入
(2)选择反向输入
(3)选择hysteresis滞后
(4)选择blanking source
(5)选择输出极性
(6)选择电源模式
(7)选择窗口模式

4、作为兼容性考虑,函数HAL_COMP_Init内部会调用__HAL_RCC_SYSCFG_CLK_ENABLE。

但是建议用户在函数HAL_COMP_MspInit里面调用函数__HAL_RCC_SYSCFG_CLK_ENABLE,同时函数__HAL_RCC_COMP12_CLK_ENABLE是必须要调用的。

如果运行中要重新配置,可以直接调用函数HAL_COMP_Init重新配置即可。

5、比较器启动函数可以调用HAL_COMP_Start() 和 HAL_COMP_Start_IT()。对应的停止函数是HAL_COMP_Stop() 和 HAL_COMP_Stop_IT()

注意,每个中断后要重新调用函数HAL_COMP_Start_IT(),否则中断处于禁能状态。

6、函数HAL_COMP_GetOutputLevel() 和 HAL_COMP_TriggerCallback()用于管理比较器输出

7、函数HAL_COMP_DeInit用于复位初始化

8、出于安全考虑,比较器配置可以通过函数HAL_COMP_Lock()锁住,解锁的唯一方法是硬件复位。


函数比较少:
  1. /* Initialization and de-initialization functions  **********************************/
  2. HAL_StatusTypeDef HAL_COMP_Init(COMP_HandleTypeDef *hcomp);
  3. HAL_StatusTypeDef HAL_COMP_DeInit (COMP_HandleTypeDef *hcomp);
  4. void              HAL_COMP_MspInit(COMP_HandleTypeDef *hcomp);
  5. void              HAL_COMP_MspDeInit(COMP_HandleTypeDef *hcomp);
  6. /**
  7.   * @}
  8.   */

  9. /* IO operation functions  *****************************************************/
  10. /** @addtogroup COMP_Exported_Functions_Group2
  11.   * @{
  12.   */
  13. HAL_StatusTypeDef HAL_COMP_Start(COMP_HandleTypeDef *hcomp);
  14. HAL_StatusTypeDef HAL_COMP_Stop(COMP_HandleTypeDef *hcomp);
  15. HAL_StatusTypeDef HAL_COMP_Start_IT(COMP_HandleTypeDef *hcomp);
  16. HAL_StatusTypeDef HAL_COMP_Stop_IT(COMP_HandleTypeDef *hcomp);
  17. void              HAL_COMP_IRQHandler(COMP_HandleTypeDef *hcomp);

  18. /**
  19.   * @}
  20.   */

  21. /* Peripheral Control functions  ************************************************/
  22. /** @addtogroup COMP_Exported_Functions_Group3
  23.   * @{
  24.   */
  25. HAL_StatusTypeDef HAL_COMP_Lock(COMP_HandleTypeDef *hcomp);
  26. uint32_t          HAL_COMP_GetOutputLevel(COMP_HandleTypeDef *hcomp);
  27. /* Callback in Interrupt mode */
  28. void              HAL_COMP_TriggerCallback(COMP_HandleTypeDef *hcomp);
  29. /**
  30.   * @}
  31.   */

  32. /* Peripheral State functions  **************************************************/
  33. /** @addtogroup COMP_Exported_Functions_Group4
  34.   * @{
  35.   */
  36. HAL_COMP_StateTypeDef HAL_COMP_GetState(COMP_HandleTypeDef *hcomp);
复制代码














回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-5 21:15 , Processed in 0.170472 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表