MDK-ARM Keil, MDK-ARM Datasheet - Page 33

KIT REALVIEW MCU DEVELOPMENT

MDK-ARM

Manufacturer Part Number
MDK-ARM
Description
KIT REALVIEW MCU DEVELOPMENT
Manufacturer
Keil
Type
Compiler and IDEr
Datasheets

Specifications of MDK-ARM

For Use With/related Products
ARM MCUs
Lead Free Status / RoHS Status
Lead free / RoHS Compliant
Getting Started: Building Applications with RL-ARM
33
To use a semaphore in RTX you must first declare a semaphore container:
OS_SEM <semaphore>;
Then within a task, the semaphore container can be initialized with a number of
tokens.
void os_sem_init (OS_ID semaphore, unsigned short token_count);
It is important to understand that semaphore tokens may also be created and
destroyed as tasks run. So for example, you can initialize a semaphore with zero
tokens and then use one task to create tokens into the semaphore while another
task removes them. This allows you to design tasks as producer and consumer
tasks.
Once the semaphore is initialized, tokens may be acquired and sent to the
semaphore in a similar fashion as event flags. The os_sem_wait() call is used to
block a task until a semaphore token is available, like the os_evnt_wait_or() call.
A timeout period may also be specified with
being an infinite wait.
0xFFFF
OS_RESULT os_sem_wait (OS_ID semaphore, unsigned short timeout)
When a token is available in the semaphore a waiting task will acquire the token,
decrementing the semaphore token count by one. Once the token has been
acquired, the waiting task will move to the READY state and then into the RUN
state when the scheduler allocates it run time on the CPU.
When the task has finished using the semaphore resource, it can send a token to
the semaphore container.
OS_RESULT os_sem_send (OS_ID semaphore)
Like events, interrupt service routines can send semaphore tokens to a semaphore
container. This allows interrupt routines to control the execution of tasks
dependant on semaphore access.
void isr_sem_send (OS_ID semaphore)
Exercise: Semaphores
This first semaphore exercise demonstrates the basic configuration and use of a
semaphore.

Related parts for MDK-ARM