我如何在adc stm32低级(LL)库中使用中断?

问题描述 投票:-1回答:1

我正在使用STM32CubeMX为ADC生成低级库。到目前为止,我正在使用的代码在轮询模式下使用adc正常工作。但是,我想改进程序并调用中断服务程序(ISR)。

我不确定如何使程序进入ISR。目前,我试图将我的ISR代码写在stm32l4xx_it.c文件中,如下所示:

void ADC1_IRQHandler(void)
{
  /* USER CODE BEGIN ADC1_IRQn 0 */
    uint8_t i;
    if(LL_ADC_IsActiveFlag_EOC(ADC1))
    {
        adc_value[i] = LL_ADC_REG_ReadConversionData12(ADC1);
        i ++;
        LL_ADC_ClearFlag_EOC(ADC1);
    }
    else if(LL_ADC_IsActiveFlag_EOS(ADC1))
    {
        i = 0;
        LL_ADC_ClearFlag_EOS(ADC1);
    }
  /* USER CODE END ADC1_IRQn 0 */
  /* USER CODE BEGIN ADC1_IRQn 1 */
  /* USER CODE END ADC1_IRQn 1 */
}

但是,程序从不进入此例程。是否有人对此有经验?还是使用stm LL库的示例代码?

谢谢!

c stm32 interrupt adc low-level-api
1个回答
0
投票

您写了一些处理程序。但是

  1. 您需要配置ADC在发生顺序,转换或错误时触发中断。

  2. 您需要在NVIC控制器中启用此中断。

确保处理程序名称与您的启动代码中的弱名称相匹配(来自.s文件)

© www.soinside.com 2019 - 2024. All rights reserved.