0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

stm32 hal adc 看门狗

分享:

在STM32 HAL库中,ADC看门狗(Analog Watchdog,简称AWD)用于监控ADC转换结果是否超出预设的阈值范围。当检测到异常时,可以触发中断或事件,常用于检测电压异常(如过压/欠压)。以下是配置步骤和代码示例:


配置步骤

  1. 初始化ADC
    使用CubeMX或代码配置ADC参数(分辨率、通道、采样时间等)。

  2. 设置看门狗阈值

    • 高阈值(High Threshold):允许的最大值。
    • 低阈值(Low Threshold):允许的最小值。
    • 监测通道:选择需要监控的ADC通道。
  3. 使能看门狗中断
    在ADC初始化后启用看门狗中断。

  4. 启动ADC
    启动ADC转换(轮询模式或中断模式)。

  5. 处理中断
    在中断回调函数中处理阈值超限事件。


代码示例

// 1. 定义ADC句柄和阈值
ADC_HandleTypeDef hadc1;
uint32_t AWD_HighThreshold = 3000;  // 12位ADC,最大值4095
uint32_t AWD_LowThreshold = 1000;

// 2. 配置ADC看门狗参数
void ADC_AWD_Init(void) {
  // 设置看门狗阈值
  hadc1.Instance->HTR = AWD_HighThreshold;  // 高阈值
  hadc1.Instance->LTR = AWD_LowThreshold;   // 低阈值

  // 设置监测的通道(例如通道0)
  hadc1.Instance->CR1 |= ADC_CR1_AWDCH_0;   // 通道0对应AWDCH[4:0]=00000

  // 使能看门狗并选择单通道监测模式
  hadc1.Instance->CR1 |= ADC_CR1_AWDSGL |  // 单通道模式
                        ADC_CR1_AWDEN;     // 使能看门狗
}

// 3. 启用看门狗中断
void ADC_StartWithAWD(void) {
  // 使能看门狗中断
  hadc1.Instance->CR1 |= ADC_CR1_AWDIE;

  // 启动ADC中断模式
  HAL_ADC_Start_IT(&hadc1);
}

// 4. 中断回调函数
void HAL_ADC_LevelOutOfWindowCallback(ADC_HandleTypeDef *hadc) {
  if (hadc == &hadc1) {
    // 处理阈值超限事件,例如记录错误或触发保护
    printf("ADC值超出范围!\r\n");
  }
}

// 5. 主函数中调用初始化
int main(void) {
  HAL_Init();
  SystemClock_Config();
  MX_ADC1_Init();      // CubeMX生成的ADC初始化
  ADC_AWD_Init();      // 配置看门狗
  ADC_StartWithAWD();  // 启动ADC并开启看门狗

  while (1) {
    // 主循环其他逻辑
  }
}

关键函数和寄存器

  • 寄存器配置

    • HTRLTR:高/低阈值寄存器。
    • CR1.AWDCH[4:0]:选择监控的通道。
    • CR1.AWDSGL:单通道监测模式。
    • CR1.AWDEN:使能看门狗。
    • CR1.AWDIE:使能看门狗中断。
  • HAL库函数

    • HAL_ADC_Start_IT():启动ADC中断模式。
    • HAL_ADC_LevelOutOfWindowCallback():阈值超限时的回调函数。

注意事项

  1. 阈值范围:根据ADC分辨率(如12位对应0-4095)设置合理阈值。
  2. 中断优先级:在CubeMX中配置NVIC,确保ADC中断已启用。
  3. 多通道监控:若需监控多个通道,需关闭AWDSGL并配置AWDEN,但需手动切换通道。
  4. 清除中断标志:HAL库会自动清除中断标志,但自定义中断处理时需手动清除ADC_SR.AWD

通过上述配置,ADC看门狗可实时监测信号异常,适用于电池管理、传感器安全检测等场景。

stm32看门狗的特点是什么

stm32有两个看门狗,独立看门狗和窗口看门狗,其实两者的功能是类似的,只是喂狗的限制时间不同。

2021-07-22 11:08:33

STM32芯片如何使用片内参考电压实现模拟看门狗

STM32芯片的ADC模块往往都支持模拟看门狗功能,即可以对单个或多个通道开启模拟转换值的监测。当模拟通道ADC值超出设定的阈值时可以产生模拟看门狗事件并可触发看门狗中断。【注:下面截图或数据都是基于STM32L4系列芯片的,其它STM32系列与其类似。】

2020-08-29 16:16:30

基于STM32、FreeRTOS 实现硬件看门狗+软件看门狗监测多任务的方法

基于STM32、FreeRTOS实现硬件看门狗+软件看门狗监测多任务的方法

2020-03-12 10:11:44

STM32中的独立看门狗和窗口看门狗

一、前言 在早期的MCU中是没有看门狗这种东西的,所以产品就很容易出现死机,跑飞的情况。为了避免这种情况的出现,后期的MCU都集成了看门狗的功能。但是目前看门狗发展到今天基本上分为两大类:独立看门狗

2022-12-22 16:58:20

STM32中的独立看门狗和窗口看门狗是什么

在早期的MCU中是没有看门狗这种东西的,所以产品就很容易出现死机,跑飞的情况。为了避免这种情况的出现,后期的MCU都集成了看门狗的功能。但是目前看门狗发展到今天基本上分为两大类:独立看门狗和窗口看门狗

2023-02-20 17:47:07

STM32中的独立看门狗和窗口看门狗

在早期的MCU中是没有看门狗这种东西的,所以产品就很容易出现死机,跑飞的情况。为了避免这种情况的出现,后期的MCU都集成了看门狗的功能。但是目前看门狗发展到今天基本上分为两大类:独立看门狗和窗口看门狗

2023-01-30 14:38:17

STM32独立看门狗详解

本文将介绍STM32看门狗中的独立看门狗,并通过实例来喂狗、体验喂狗与不喂狗的区别。

2023-05-01 09:06:00

HAL库是如何实现ADC从而去模拟看门狗

怎样通过STM32CubeMX进行简单配置生成HAL库?HAL库是如何实现ADC从而去模拟看门狗的?

tiantian55 2021-08-20 07:22:01

STM32 ADC模拟看门狗过程实现

我们在做ADC应用时,有些场合需要精确测量出待测信号的数据,有时可能并不关心ADC结果多准确,只要满足某个范围即可,这时我们就可以考虑使用STM32ADC看门狗功能了。 STM32 ADC基本上都

2023-07-13 10:28:11

STM32看门狗原理和示例代码

看门狗基础:STM32微控制器上的看门狗主要有两种类型:独立看门狗(IWDG)和窗口看门狗(WWDG),这两者都是用于监控系统运行状态的机制,但它们在实现和应用上有一些区别:独立看门狗(IWDG

2023-12-01 08:00:54

详解独立看门狗的实现原理

这里以大家熟悉的STM32为例给大家讲解一下独立看门狗的配置以及工作过程。STM32F10xxx内置两个看门狗:独立看门狗和窗口看门狗,提供了更高的安全性、时间的精确性和使用的灵活性。

2022-12-22 17:01:43

什么是模拟看门狗?模拟看门狗有什么用处?

看门狗大家应该再熟悉不过了,一旦忘记喂狗就会导致单片机复位,而在大部分stm32中都存在两种类型的看门狗,Independent watchdog (IWDG)独立看门狗和Window watchdog (WWDG)窗口看门狗

2023-11-22 09:40:29

独立看门狗(IWDG)的基础知识

  STM32F10xxx系列内置两个看门狗(独立看门狗和窗口看门狗),提供了更高的安全性、时间的精确性和使用的灵活性。两个看门狗设备(独立看门狗和窗口看门狗)可用来检测和解决由软件错误引起的故障;当计数器达到给定的超时值时,触发一个中断(仅适用于窗口型看门狗)或产生系统复位。

2022-10-19 17:10:34

独立看门狗的一点经验

stm32基本都内置两种看门狗(另外还有外置的看门狗芯片),窗口看门狗和独立看门狗,两种看门狗的使用方法和应用场景各不相同

2023-05-24 16:00:18

STM32 ADC模拟看门狗应用演示过程

我们在做ADC应用时,有些场合需要精确测量出待测信号的数据,有时可能并不关心ADC结果多准确,只要满足某个范围即可,这时我们就可以考虑使用STM32ADC看门狗功能了。

2023-07-08 14:30:11

如何去使用基于HAL库的STM32独立看门狗(IWDG)呢

窗口看门狗与独立开门有何区别?如何去使用基于HAL库的STM32独立看门狗(IWDG)呢?

dsdfshf 2021-11-08 09:20:08

STM32CubeMX配置ADC模拟看门狗实现掉电保存——基于(STM32G070+STM32CubeMX+HAL库+ADC模拟看门狗) 精选资料分享

实验目的:通过STM32CubeMX进行简单配置生成HAL库实现ADC模拟看门狗,以达到单片机掉电保存Flash。一、STM32CubeMX配置如下:其中两个边界电压分别配置了3880和1509,当

tiantian55 2021-08-02 06:05:38

STM32F1_ WDG看门狗(独立+窗口)

STM32F1_WDG看门狗(独立+窗口)

2020-04-08 10:44:49

什么是看门狗,工业路由器看门狗技术的功能优势

工业路由器大多都会配备看门狗技术,它是保证工业路由器传输过程中连续24小时不宕机的重要保护技术,那么,什么是看门狗呢?▍看门狗功能看门狗,又叫watchdog,从本质上来说就是一个定时器电路,一般有

2023-03-27 10:16:19

关于独立看门狗的一点经验

stm32基本都内置两种看门狗(另外还有外置的看门狗芯片),窗口看门狗和独立看门狗,两种看门狗的使用方法和应用场景各不相同,今天主要讲讲最常用的独立看门狗(工作这么多年,没见谁用过窗口看门狗,这种估计在时序严格的场合会用上)。

2023-05-09 11:18:05

MCU独立看门狗和窗口看门狗的区别

早期的MCU没有看门狗,就容易引起有些产品死机了不能重启工作。为了避免这个问题,后期的MCU在内部集成了看门狗的功能。

2023-03-03 09:18:29

STM32有两个看门狗,独立看门狗和窗口看门狗

窗口看门狗的上窗口就是配置寄存器WWDG->CFR里设定的W[6:0];下窗口是固定的0x40;当窗口看门狗的计数器在上窗口值之外,或是低于下窗口值都会产生复位。

2020-06-15 09:02:58

使用STM32ADC看门狗测量出待测信号

我们在做ADC应用时,有些场合需要精确测量出待测信号的数据,有时可能并不关心ADC结果多准确,只要满足某个范围即可,这时我们就可以考虑使用STM32ADC看门狗功能了。 STM32 ADC基本上都

2023-07-17 10:31:16

如何实现模拟看门狗

作者:逸珺 转自:STM32 对于看门狗大家或许不陌生,但对于模拟看门狗有的朋友可能就不甚了解了。本文来聊聊模拟看门狗,旨在梳理相应的概念,理解模拟看门狗原理、与常规看门狗的异同点以及工程应用价值

2020-10-23 14:51:21

MCU如何集成看门狗的功能

一、前言 在早期的MCU中是没有看门狗这种东西的,所以产品就很容易出现死机,跑飞的情况。为了避免这种情况的出现,后期的MCU都集成了看门狗的功能。但是目前看门狗发展到今天基本上分为两大类:独立看门狗

2023-06-22 09:09:00

软件看门狗和硬件看门狗的区别

软件看门狗和硬件看门狗都是用于监控系统崩溃的工具,它们的作用是在系统出现故障或异常情况时自动恢复系统。  软件看门狗是一种程序,运行在操作系统中,通过定时检测系统是否正常运行来判断系统是否崩溃。如果

2024-04-16 15:10:41

STM32单片机看门狗的配置方法

SATM32单片机的看门狗有独立看门狗和窗口看门狗之分,这两者的工作原理却完全不同,今天来看一下他们的具体区别和配置方法。

2023-06-22 09:07:00

浅谈STM8S_008_WDG独立看门狗和窗口看门狗

STM8S_008_WDG独立看门狗和窗口看门狗

2020-03-20 09:39:03

STM32是如何用HAL库打开和关闭窗口看门狗

STM32是如何用HAL库打开和关闭窗口看门狗的?怎样去编写其代码程序?

木頭瓶子 2021-09-16 07:29:43

看门狗的配置与函数

前言: 今天我们来学习看门狗的配置与函数,看门狗可以有效解决程序的跑飞,在使用过程中比较常见,是防止芯片故障的有效外设,我们一起来学习下HALSTM32CubeMX的独立看门狗,窗口看门狗

klysa 2021-07-30 06:13:09

加载更多
相关标签