embedded - 什么是模拟看门狗?

标签 embedded stm32 watchdog

我引用维基百科:

A watchdog timer (WDT; sometimes called a computer operating properly or COP timer, or simply a watchdog) is an electronic timer that is used to detect and recover from computer malfunctions.

在使用STM32F429I-Discovery时,我遇到了一个术语[在“stm32f4xx.h”]中,它使用寄存器来禁用看门狗:

#define  ADC_CR1_AWDIE    ((uint32_t)0x00000040)    //Analog Watchdog interrupt enable

在这里,我无法理解模拟看门狗

如果可能的话,

#define  ADC_CR1_JAWDEN    ((uint32_t)0x00400000)    //Analog watchdog enable on injected channels

这里的注入(inject) channel 是什么?

最佳答案

看门狗定时器可以被认为是两个独立的电路,一个定时器电路和一个看门狗电路。定时器电路仅计算耗时。看门狗电路主动监视定时器,以查看是否已经过了一定的时间而没有被软件复位。如果是这样,软件将不再运行,看门狗通常会执行自动功能,例如重置处理器。看门狗只需要在初始化时被告知要监视多少时间,然后它就会处理其余的操作,而无需额外的软件交互。

模拟看门狗以类似的方式运行。只是它不是监视定时器,而是监视模拟输入 channel 。在初始化时,您告诉看门狗要监视哪些模拟阈值。如果模拟输入上的转换值超过这些阈值之一,它将触发一个中断,以便您处理信号样本。这意味着您不必编写代码来连续轮询模拟输入并检查其电平。这一切都是由模拟看门狗电路在后台自主处理的。

注入(inject) channel 可以被视为高优先级转换 channel 。如果常规模拟输入正在执行转换,并且在注入(inject) channel 上触发了转换(通过定时器或因为在连续转换模式下编程),则常规 channel 上的转换将停止并等待,同时注入(inject) channel 在完成其自身转换之前进行转换。如果您有必须实时响应的模拟输入,这非常有用。

这是一个application note (由于某种奇怪的原因,ST 的网站上似乎没有提供),其中给出了一些使用各种 ADC 功能的示例。这是 another explanation您的问题涉及的两个功能。

关于embedded - 什么是模拟看门狗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25154845/

相关文章:

c - Linux 在崩溃时自动重启应用程序 - 守护进程

c - 在 ARM Cortex-M3 微 Controller 中使用 UART 的 Printf 输出

gcc - 用于连接微 Controller 和 AT 调制解调器的 C 库

c - 对 extern int stm32 的 undefined reference

c - 为什么无法在关键部分调用 freeRTOS API?

debugging - 如何使用 OpenOCD 同时与两 block STM32 板通信?

c - 如何使用 mbedtls_pk_verify 验证签名

linux - 如何使用 Yocto 将文件部署到/boot 分区

vb.net - 如何取消/超时函数/子而不是代码行循环? (vb.net 或 Visual basic)

java - 如何创建一个定时看门狗来保护方法执行计数