大家有用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);
}
}
但是当没有超出范围时,就不能检测到。
这样只能在超出范围加反转了。每次超出范围反转一下IO口。还有就是通过外部程序读取对应的标志位或者寄存器,判断当前是否溢出。 问题好奇怪 本来我是想用读状态的函数,但是好像使用不对,不知道怎么用了,呵呵 慢慢解决,先尝试读取寄存器。
页:
[1]