斯文人 发表于 2019-9-27 17:47:13

STM32103VB 问题

STM32VB的ADC中断入口函数就只有一个ADC_IRQHandler,想问一下,怎么区分到底是哪个ADC发生的中断

toofree 发表于 2019-9-27 19:37:58

在void ADCx_IRQHandler(void)函数中增加两条
HAL_ADC_IRQHandler(&AdcHandle);
HAL_ADC_IRQHandler(&AdcHandle1);
在有中断到来的时候,两条函数都执行,进去查看是哪个中断来的,就去处理哪个中断。


AdcHandle,AdcHandle1自己定义,对应上相应的ADC号


看一下HAL_ADC_IRQHandler()的原型,分为三个if,说明总共有三种中断源


每个if下都会有一条,“HAL_ADC_ConvXXXXXCallback()”的函数,这条默认是个弱函数,编译的时候可以使用用户自定义的函数来代替。


在用户程序中写的HAL_ADC_ConvCpltCallback(),具体要做什么工作,自己定。



发表于 2019-9-28 08:54:47

楼主这个要根据配置进行判断,比如单通道,那么产生中断后就是最后一次配置的ADCx,如果时多通道,顺序就是配置的AD采集通道,ad......adn

cy2005abc 发表于 2019-9-28 08:58:28

学习了

zhao.zhao 发表于 2019-9-28 11:02:50

楼上说的很清楚了
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)
{
    if(hadc->Instance == ADC1)
    {
      
    }   
}

斯文人 发表于 2019-9-30 13:26:45

toofree 发表于 2019-9-27 19:37
在void ADCx_IRQHandler(void)函数中增加两条
HAL_ADC_IRQHandler(&AdcHandle);
HAL_ADC_IRQHandler(&AdcHa ...

我用的说标准库{:2_27:}

toofree 发表于 2019-10-1 00:40:28

斯文人 发表于 2019-9-30 13:26
我用的说标准库

标准库更好办,放屁不用脱几条裤子,看看样例程序就明白了
页: [1]
查看完整版本: STM32103VB 问题