petrdynin

Mik32+ADC+Timer16_IRQ

Sep 17th, 2025 (edited)
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.05 KB | Source Code | 0 0
  1. /* Одиночный режим преобразования, запуск в прерывании по таймеру */
  2.  HAL_EPIC_MaskLevelSet(HAL_EPIC_TIMER16_1_MASK);
  3.  HAL_IRQ_EnableInterrupts();
  4.  
  5. ..................................................................
  6.    
  7. void __attribute__((section(".ram_text"))) trap_handler(void)
  8. {
  9.     if (EPIC_CHECK_TIMER16_1())
  10.     {
  11.        if (__HAL_TIMER16_GET_FLAG_IT(&htimer16_1, TIMER16_FLAG_ARRM))
  12.         {
  13.             HAL_GPIO_TogglePin(GPIO_0, GPIO_PIN_10);   /* Смена сигнала PORT0_10 на противоположный */
  14.             __HAL_TIMER16_CLEAR_FLAG(&htimer16_1, TIMER16_FLAG_ARRM);
  15.             adc_value = HAL_ADC_WaitAndGetValue(&hadc); // забираем данные от предыдущего преобразования
  16.             ANALOG_REG->ADC_SINGLE = 1;                 // запускаем новое преобразование и уходим и не ждем окончания
  17.         }
  18.  
  19.     /* Сброс прерываний */
  20.    HAL_EPIC_Clear(0xFFFFFFFF);
  21. }
Advertisement
Add Comment
Please, Sign In to add comment