Шлюз ZigBee и GPRS

дипломная работа

3.3 Использование прерываний в BitCloud

Прием/передача данных по UART будет проходить при вызове прерывания. Нужно зарегистрировать свою программу обработки прерывания, так как добавленное к МК GPRS модем, не имеет в стандартной SDK драйверов.

Вызов для добавления своего обработчика имеет следующий вид:

HAL_RegisterIrq(uint8_tirqNumber, HAL_irqMode_t irqMode, void(*)(void) f);

где irqNumber -- идентификатор одной из доступных линий аппаратных прерываний; irqMode -- определяет, когда прерывание будет обрабатываться (режим обработки); f -- пользовательская функция обработки прерывания.

Рис.3.4 демонстрирует взаимодействие между приложением, стеком протоколов, менеджером задач и прерываниями. Изначально менеджер задач выполняет приложение, определяемое APL_TaskHandler . Выполнение прерывается аппаратным событием (отображено серым). Обрабатывающая прерывание функция вызывается обработчиком или сервисом обслуживания прерываний. После завершения обработки прерывания управление возвращается приложению. После завершения работы менеджера задач управление передается планировщику, который выбирает для исполнения следующую задачу МАС-уровня. Пока выполняется MAC_TaskHandler , он исполняет функцию обратного вызова ZDO-уровня, которая прерывается еще одним аппаратным прерыванием. Затем МАС-уровень выполняет еще одну ZDO-функцию, включающую вызов от приложения. То есть функция приложения исполняется с приоритетом МАС-уровня, или как если бы она имела идентификатор MAC_TASK_ID.

Рис.3.4 Взаимодействие между приложениями, стеком протоколов, менеджером задач и прерываниями.

Делись добром ;)