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);
}