Как использовать прерывания с низкоуровневыми (LL) библиотеками ad c stm32? - PullRequest
0 голосов
/ 16 марта 2020

Я использую STM32CubeMX для создания низкоуровневой библиотеки для объявления c. Код, который я использую до сих пор, работает нормально, используя объявление c в режиме опроса. Однако я хотел бы улучшить свою программу и вызвать процедуру обработки прерывания (ISR).

Я не совсем уверен, как сделать программу go для 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?

Заранее спасибо!

1 Ответ

0 голосов
/ 16 марта 2020

Вы написали какой-то обработчик. Но

  1. Вам необходимо настроить AD C для запуска прерывания при возникновении последовательности, преобразования или ошибки.

  2. Необходимо включить это прерывание в контроллере NVI C.

Убедитесь, что имя обработчика соответствует слабому в вашем коде запуска (из файла .s)

...