/* Запуск преобразования в прерывании по таймеру, получение данных в прерывании по готовности ADC */
HAL_EPIC_MaskLevelSet(HAL_EPIC_TIMER16_1_MASK);
HAL_EPIC_MaskEdgeSet(HAL_EPIC_ADC_MASK);
HAL_IRQ_EnableInterrupts();
..............................................................
void __attribute__((section(".ram_text"))) trap_handler(void)
{
if (EPIC_CHECK_ADC())
{
adc_value = HAL_ADC_GetValue(&hadc);
HAL_GPIO_TogglePin(GPIO_0, GPIO_PIN_9);
EPIC->CLEAR = 1<<29;
}
if (EPIC_CHECK_TIMER16_1())
{
if (__HAL_TIMER16_GET_FLAG_IT(&htimer16_1, TIMER16_FLAG_ARRM))
{
ANALOG_REG->ADC_SINGLE = 1;
HAL_GPIO_TogglePin(GPIO_0, GPIO_PIN_10); /* Смена сигнала PORT0_10 на противоположный */
__HAL_TIMER16_CLEAR_FLAG(&htimer16_1, TIMER16_FLAG_ARRM);
}
}
/* Сброс прерываний */
HAL_EPIC_Clear(0xDFFFFFFF);
}