您的位置 首页 电源

STM32单片机的模仿看门狗的库函数设置

STM32单片机的模拟看门狗的库函数设置-ADC的模拟看门狗用于检查电压是否越界。他又上下两个边界,可分别在寄存器ADC_HTR和ADC_LTR中设置。库函数是使用ADC_AnalogWatchdogThresholdsConfig设置的,无论是常规通道还是注入通道,都非常简单。 当模拟看门狗检测到电压高于上限或者低于下限时将会产生看门狗中断。捕获这个中断,可以做出一些应对措施。 数据手册上特别之处的一个东西:模拟看门狗说使用的比较数据与ADC_CR2寄存器中设置的数据对齐方式无关。

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);

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/dianyuan/347730.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部