feiante 发表于 2015-9-21 16:12:18

大家有用stm32cube的HAL库做ADC的模拟看门狗吗

本帖最后由 feiante 于 2015-9-21 16:28 编辑

今天打算试用下ADC的模拟看门狗的功能,使用的板子是stm32f051,模拟看门狗的设置如下:
/**Configure the analog watchdog
    */
AnalogWDGConfig.WatchdogMode = ADC_ANALOGWATCHDOG_SINGLE_REG;
AnalogWDGConfig.Channel = ADC_CHANNEL_3;
AnalogWDGConfig.ITMode = ENABLE;
AnalogWDGConfig.HighThreshold = 3000;
AnalogWDGConfig.LowThreshold = 1000;
HAL_ADC_AnalogWDGConfig(&hadc, &AnalogWDGConfig);


其中断函数void HAL_ADC_LevelOutOfWindowCallback(ADC_HandleTypeDef* hadc)能够进入,
但是如何判断ADW的状态呢,比如超过了HighThreshold值:3000,ADW为1,就点亮一个灯,如果没有超过了,即ADW为0,就熄灭灯

我在中断服务程序是这样:
void HAL_ADC_LevelOutOfWindowCallback(ADC_HandleTypeDef* hadc)
{
        if (HAL_ADC_STATE_AWD1)
        {
                HAL_GPIO_WritePin(GPIOC, GPIO_PIN_8, GPIO_PIN_SET);
        }
}

但是当没有超出范围时,就不能检测到。

发表于 2015-9-21 17:56:59

这样只能在超出范围加反转了。每次超出范围反转一下IO口。还有就是通过外部程序读取对应的标志位或者寄存器,判断当前是否溢出。

你好我好大家好! 发表于 2015-9-21 18:03:21

问题好奇怪

feiante 发表于 2015-9-22 08:32:11

本来我是想用读状态的函数,但是好像使用不对,不知道怎么用了,呵呵

发表于 2015-9-22 11:29:59

慢慢解决,先尝试读取寄存器。
页: [1]
查看完整版本: 大家有用stm32cube的HAL库做ADC的模拟看门狗吗