• STM32F4 ADC1 模拟看门狗【库函数操作】


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

    Technorati 标记: STM32F4,ADC,Watchdog,模拟看门狗
  • 相关阅读:
    simpleDateFormat日期格式转换
    repo总结
    jrtplib使用注意事项
    iOS Crash获取闪回日志和上传server
    Android自己定义组件系列【5】——高级实践(1)
    TimesTen更改CacheGroup管理用户ORACLE结束和TT结束password【TimesTen操作和维修基地】
    Cordova探险系列(三)
    libpomelo 增加编译静态库cocos2d-x xcode 工程
    flex4 一些项目使用的技术
    2015华为德州扑克入境摘要——软体project
  • 原文地址:https://www.cnblogs.com/zyqgold/p/3098687.html
Copyright © 2020-2023  润新知