-1

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

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

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 库的示例代码?

提前致谢!

4

1 回答 1

0

你写了一些处理程序。但

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

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

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

于 2020-03-16T15:51:59.023 回答