在STM32 HAL库中,ADC看门狗(Analog Watchdog,简称AWD)用于监控ADC转换结果是否超出预设的阈值范围。当检测到异常时,可以触发中断或事件,常用于检测电压异常(如过压/欠压)。以下是配置步骤和代码示例:
配置步骤
-
初始化ADC
使用CubeMX或代码配置ADC参数(分辨率、通道、采样时间等)。 -
设置看门狗阈值
- 高阈值(High Threshold):允许的最大值。
- 低阈值(Low Threshold):允许的最小值。
- 监测通道:选择需要监控的ADC通道。
-
使能看门狗中断
在ADC初始化后启用看门狗中断。 -
启动ADC
启动ADC转换(轮询模式或中断模式)。 -
处理中断
在中断回调函数中处理阈值超限事件。
代码示例
// 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) {
// 主循环其他逻辑
}
}
关键函数和寄存器
-
寄存器配置:
HTR和LTR:高/低阈值寄存器。CR1.AWDCH[4:0]:选择监控的通道。CR1.AWDSGL:单通道监测模式。CR1.AWDEN:使能看门狗。CR1.AWDIE:使能看门狗中断。
-
HAL库函数:
HAL_ADC_Start_IT():启动ADC中断模式。HAL_ADC_LevelOutOfWindowCallback():阈值超限时的回调函数。
注意事项
- 阈值范围:根据ADC分辨率(如12位对应0-4095)设置合理阈值。
- 中断优先级:在CubeMX中配置NVIC,确保ADC中断已启用。
- 多通道监控:若需监控多个通道,需关闭
AWDSGL并配置AWDEN,但需手动切换通道。 - 清除中断标志:HAL库会自动清除中断标志,但自定义中断处理时需手动清除
ADC_SR.AWD。
通过上述配置,ADC看门狗可实时监测信号异常,适用于电池管理、传感器安全检测等场景。
STM32芯片如何使用片内参考电压实现模拟看门狗
STM32芯片的ADC模块往往都支持模拟看门狗功能,即可以对单个或多个通道开启模拟转换值的监测。当模拟通道ADC值超出设定的阈值时可以产生模拟看门狗事件并可触发看门狗中断。【注:下面截图或数据都是基于STM32L4系列芯片的,其它STM32系列与其类似。】
2020-08-29 16:16:30
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
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 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
什么是看门狗,工业路由器看门狗技术的功能优势
工业路由器大多都会配备看门狗技术,它是保证工业路由器传输过程中连续24小时不宕机的重要保护技术,那么,什么是看门狗呢?▍看门狗功能看门狗,又叫watchdog,从本质上来说就是一个定时器电路,一般有
2023-03-27 10:16:19
关于独立看门狗的一点经验
stm32基本都内置两种看门狗(另外还有外置的看门狗芯片),窗口看门狗和独立看门狗,两种看门狗的使用方法和应用场景各不相同,今天主要讲讲最常用的独立看门狗(工作这么多年,没见谁用过窗口看门狗,这种估计在时序严格的场合会用上)。
2023-05-09 11:18:05
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
看门狗的配置与函数
前言: 今天我们来学习看门狗的配置与函数,看门狗可以有效解决程序的跑飞,在使用过程中比较常见,是防止芯片故障的有效外设,我们一起来学习下HAL库STM32CubeMX的独立看门狗,窗口看门狗
klysa
2021-07-30 06:13:09