ADC的模拟看门狗用于检查电压是否越界。他又上下两个边界,可分别在寄存器ADC_HTR和ADC_LTR中设置。库函数是使用ADC_AnalogWatchdogThresholdsConfig设置的,无论是常规通道还是注入通道,都非常简单。
当模拟看门狗检测到电压高于上限或者低于下限时将会产生看门狗中断。捕获这个中断,可以做出一些应对措施。
数据手册上特别之处的一个东西:模拟看门狗说使用的比较数据与ADC_CR2寄存器中设置的数据对齐方式无关。看门狗比较是在数据对齐之前完成的。先进行看门狗比较,再将数据放入ADC_DR数据寄存器。
在ST的库中,只有简单的三个与看门狗相关的函数:
void ADC_AnalogWatchdogCmd(ADC_TypeDef* ADCx, uint32_t ADC_AnalogWatchdog);
void ADC_AnalogWatchdogThresholdsConfig(ADC_TypeDef* ADCx, uint16_t HighThreshold,uint16_t LowThreshold);
void ADC_AnalogWatchdogSingleChannelConfig(ADC_TypeDef* ADCx, uint8_t ADC_Channel);
使用ADC_AnalogWatchdogThresholdsConfig设置触发看门狗的上下限
使用ADC_AnalogWatchdogSingleChannelConfig配置要使用模拟看门狗的通道
配置完成后使用ADC_AnalogWatchdogCmd启动模拟看门狗。
我写的函数很简单,就这么三行。将模拟看门狗加在ADC1的CH1上。代码如下:
void ADC_WatchdogConfig(void)
{
ADC_AnalogWatchdogSingleChannelConfig(ADC1,ADC_Channel_0);
ADC_AnalogWatchdogThresholdsConfig(ADC1,1500,0xFFF);
ADC_AnalogWatchdogCmd(ADC1,ADC_AnalogWatchdog_SingleRegEnable);
}
NVIC中初始化模拟看门狗:
void NVIC_Config(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置中断优先级分组
NVIC_InitStructure.NVIC_IRQChannel = ADC_IRQn;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x01;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x00;
NVIC_Init(&NVIC_InitStructure);
}
捕获看门狗中断:
void ADC_IRQHandler(void)
{
ADC_ITConfig(ADC1,ADC_IT_AWD,DISABLE);
if(SET == ADC_GetFlagStatus(ADC1,ADC_FLAG_AWD))
{
ADC_ClearFlag(ADC1,ADC_FLAG_AWD);
ADC_ClearITPendingBit(ADC1,ADC_IT_AWD);
printf("ADC AWD is happened.\r\n");
}
ADC_ITConfig(ADC1,ADC_IT_AWD,ENABLE);
}
当然,最后别忘了打开ADC的中断:
ADC_ITConfig(ADC1,ADC_IT_AWD,ENABLE);
上一篇:STM32F4 RTC
下一篇:STM32F4 随机数发生器RNG
推荐阅读最新更新时间:2024-03-16 15:26
设计资源 培训 开发板 精华推荐
- 是德科技有奖问答活动之一,A4WP无线充电测试的示波器方案,答题闯关赢好礼!
- 新用户限时福利:e络盟商城迎新季,全场包邮+打折~买一只电阻也包邮!
- 提交物联网应用创意,赢万用表、蓝牙耳机、小米排插、京东卡等好礼!
- Littelfuse|一个芯片实现过压、过流、短路和浪涌保护
- EEWORLD十周年为你而任性——上百块ST开发板团购盛宴开始啦!49元包邮,发帖还返现
- 新用户限时福利:e络盟商城迎新季,全场包邮+打折~买一只电阻也包邮!
- 感谢有你,感恩龙年,EEWORLD陪你一起“闹”龙年!
- 2018开“芯”学:Mentor两场知识有奖问答邀你新年充电
- 【泰克注册观看有礼】 PCI-SIG 前主席解析:PCI Express5.0测试方案和测量挑战