久芯网

正在用ADC模拟看门狗,不知道如何对回调函数判断

avatar 封刀岁月不为峥嵘 提问时间: 2023-06-30 07:17:02 / 已解决

void HAL_ADC_LevelOutOfWindowCallback(ADC_HandleTypeDef *hadc)

对于这个函数,我使用了两个看门狗,发现看门狗2也会调用这个函数,明明已经有void HAL_ADC_LevelOutOfWindow2Callback(ADC_HandleTypeDef *hadc)函数

了,所以寻思加个判断。hadc->State==HAL_ADC_STATE_AWD1,这样貌似不行,网上也没找到,该怎么办

3个回答
  • avatar xmshao
    最佳答案
    回答时间: 2023-06-30 07:33:53

    看了下手册,你说的L431的确只有1个ADC模块,3个看门狗。 不过,还是可以识别的。 不同看门狗涉及不同的中断请求标志位, 你根据看门狗中断标志位即可判断了。 所以你要是 早说型号 我就会这样回复你了。

  • avatar xmshao
    回答时间: 2023-06-30 07:56:46

    你们这帮人为何总是不告知具体芯片型号。 一般来讲,一个模块只能启用一个看门狗。 我们可以通过hadc->intance来判断是来自哪个ADC模块的看门狗事件. 比方我这里把ADC1和ADC2都开启了看门狗及中断。 void HAL_ADC_LevelOutOfWindowCallback(ADC_HandleTypeDef* hadc){ if(hadc->Instance == ADC1) adc1_wdg_cnt++; else adc2_wdg_cnt++; }

  • avatar 封刀岁月不为峥嵘
    回答时间: 2023-06-30 08:17:49
    xmshao 发表于 2023-6-5 15:51
    你们这帮人为何总是不告知具体芯片型号。

    谢谢大佬,我用的是 STM32L431RCT6。 这款芯片只有一个ADC,但是这个ADC下面给了三个看门狗事件,可以分别监控多个通道, 如果是按照你说的那样,判断标志是通过ADC来判断,那么三个看门狗应该是同一个ADC,所以还是无法判断是那个看门狗进入的回调函数

会员中心 微信客服
客服
回到顶部