FreeRTOS MIK32
Общая информация
Репозиторий проекта: gitflic.ru
Формат проекта: VS Code (PlatformIO) и MIK32 IDE (Eclipse)
Фреймворк: framework-mik32v2-sdk
Структура репозитория
FreeRTOS-Kernel/ # Файл с библиотеками FreeRTOS
FreeRTOSConfig.h # Настройки FreeRTOS
main.c # Пример кода
scr_sys.c # Обработчик исключений
Особенности реализации
Включение обработчика прерываний
Для включения обработчика прерываний в FreeRTOS под MIK32 необходимо добавить следующие функции:
extern void freertos_risc_v_trap_handler();
RAM_ATTR void raw_trap_handler()
{
freertos_risc_v_trap_handler();
}
Пример обработчика прерываний
Прерывания обрабатываются следующим образом:
RAM_ATTR void freertos_risc_v_application_interrupt_handler(void)
{
if (EPIC_CHECK_GPIO_IRQ())
{
if (HAL_GPIO_LineInterruptState(BTN_IRQ_LINE))
{
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
xSemaphoreGiveFromISR(xButtonSemaphore, &xHigherPriorityTaskWoken);
portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
}
HAL_GPIO_ClearInterrupts();
}
HAL_EPIC_Clear(0xFFFFFFFF);
}