ELIOT1 HAL
Загрузка...
Поиск...
Не найдено
Драйвер менеджера прерываний IO устройств и DMA каналов

Менеджер прерываний IO устройств и каналов DMA. Подробнее...

Файлы

файл  hal_ioim.h
 Интерфейс менеджера прерываний IO устройств
 

Макросы

#define IOIM_NA_IRQ_NUM   (-16)
 

Перечисления

enum  ioim_status_t
 Возвращаемые статусы IOIM. Подробнее...
 

Функции

int32_t IOIM_GetIRQNumber (void *base)
 Получение номера прерывания в системе
 
ioim_status_t IOIM_SetIRQHandler (void *base, void *handler, void *handle)
 Установка обработчика прерывания для устройства IO.
 
ioim_status_t IOIM_ClearIRQHandler (void *base)
 Сброс обработчика прерывания для устройства IO.
 
ioim_status_t IOIM_SetIRQHandler_DMA (void *base, uint32_t channel, void *handler, void *handle)
 Установка обработчика прерывания для DMA.
 
ioim_status_t IOIM_ClearIRQHandler_DMA (void *base, uint32_t channel)
 Сброс обработчика прерывания для DMA.
 

Подробное описание

Менеджер прерываний IO устройств и каналов DMA.

Менеджер прерываний выполняет регистрацию векторов прерываний устройств IO (UART, I2C, I2S, SPI) и каналов DMA. При срабатывании прерывания вызывает обработчик из драйвера устройства с передачей указателей на базовый адрес и контекст. Обработчик драйвера должен перед этим быть зарегистрирован соответствующей функцией.

Макросы

◆ IOIM_NA_IRQ_NUM

#define IOIM_NA_IRQ_NUM   (-16)

Несуществующий номер прерывания

Перечисления

◆ ioim_status_t

Возвращаемые статусы IOIM.

Элементы перечислений
IOIM_Status_Ok 

Ошибок нет

IOIM_Status_UnknownBase 

Неизвестный базовый адрес устройства

IOIM_Status_NullHandler 

Адрес обработчика прерывания равен 0

Функции

◆ IOIM_ClearIRQHandler()

ioim_status_t IOIM_ClearIRQHandler ( void * base)

Сброс обработчика прерывания для устройства IO.

Обработчик прерывания устройства удаляется из таблицы, отключается вектор прерывания для данного устройства.

Аргументы
baseБазовый адрес устройства
Возвращаемые значения
IOIM_Status_Ok
IOIM_Status_UnknownBase

◆ IOIM_ClearIRQHandler_DMA()

ioim_status_t IOIM_ClearIRQHandler_DMA ( void * base,
uint32_t channel )

Сброс обработчика прерывания для DMA.

Обработчик прерывания DMA удаляется из таблицы, отключается вектор прерывания для данного DMA.

Аргументы
baseБазовый адрес DMA
channelНомер канала DMA
Возвращаемые значения
IOIM_Status_Ok
IOIM_Status_UnknownBase

◆ IOIM_GetIRQNumber()

int32_t IOIM_GetIRQNumber ( void * base)

Получение номера прерывания в системе

Аргументы
baseБазовый адрес устройства
Возвращает
Номер прерывания устройства

◆ IOIM_SetIRQHandler()

ioim_status_t IOIM_SetIRQHandler ( void * base,
void * handler,
void * handle )

Установка обработчика прерывания для устройства IO.

Функция вносит в свою таблицу прерываний обработчик handler и включает вектор прерывания в системе. При срабатывании прерывания в обработчик будут переданы аргументы base и handle.

Аргументы
baseБазовый адрес устройства
handlerУказатель на функцию обработчик прерывания
handleКонтекст драйвера устройства
Возвращаемые значения
IOIM_Status_Ok
IOIM_Status_UnknownBase
IOIM_Status_NullHandler

◆ IOIM_SetIRQHandler_DMA()

ioim_status_t IOIM_SetIRQHandler_DMA ( void * base,
uint32_t channel,
void * handler,
void * handle )

Установка обработчика прерывания для DMA.

Аргументы
baseБазовый адрес DMA
channelНомер канала DMA
handlerУказатель на обработчик прерывания
handleКонтекст драйвера DMA
Возвращаемые значения
IOIM_Status_Ok
IOIM_Status_UnknownBase
IOIM_Status_NullHandler