Professional Documents
Culture Documents
Interrupt Management ARM
Interrupt Management ARM
Bi Quc Bo
BI QUC BO
1
BI QUC BO
2
BI QUC BO
3
BI QUC BO
4
void vSemaphoreCreateBinary(
xSemaphoreHandle xSemaphore );
BI QUC BO
5
portBASE_TYPE xSemaphoreTake(
xSemaphoreHandle xSemaphore,
portTickType xTicksToWait );
Return value:
pdPASS: success
pdFALSE: Fail
portBASE_TYPE xSemaphoreGiveFromISR(
xSemaphoreHandle xSemaphore,
portBASE_TYPE *pxHigherPriorityTaskWoken
);
pxHigherPriorityTaskWoken
BI QUC BO
6
BI QUC BO
7
BI QUC BO
8
Counting semaphore
Nu trong qu trnh task ang thc thi,
ISR xy ra v gi hm
xSemaphoreGiveFromISR nhiu ln, ch
c 1 ln tc v c thc thi.
Counting semaphore c th c coi
nh l 1 queue cc semaphore.
S lng cc phn t trong queue l
rng ca semaphore.
BI QUC BO
9
BI QUC BO
10
BI QUC BO
11
BI QUC BO
12
Counting semaphore
xSemaphoreHandle xSemaphoreCreateCounting(
unsigned portBASE_TYPE uxMaxCount,
unsigned portBASE_TYPE uxInitialCount );
NULL: fail
Non-NUL: the semaphore handle
BI QUC BO
13
Cc hm
xQueueSendToFrontFromISR()
xQueueSendToBackFromISR()
xQueueReceiveFromISR()
portBASE_TYPE xQueueSendFromISR(
xQueueHandle xQueue,
void
*pvItemToQueue
portBASE_TYPE *pxHigherPriorityTaskWoken );
portBASE_TYPE xQueueSendFromISR(
xQueueHandle xQueue,
void
*pvItemToQueue
portBASE_TYPE *pxHigherPriorityTaskWoken );
BI QUC BO
14
Returned value:
1. pdPASS
2. errQUEUE_FULL
BI QUC BO
15
BI QUC BO
16
BI QUC BO
17
Interrupt nesting
configKERNEL_INTERRUPT_PRIORITY:
configMAX_SYSCALL_INTERRUPT_PRIORITY:
BI QUC BO
18