RM0453
The procedure to get an interrupt when a semaphore becomes free is described hereafter.
Try to lock semaphore x
•
If the semaphore lock is obtained, no interrupt is needed.
•
If the semaphore lock fails:
•
Clear pending semaphore x interrupt status for the interrupt line in HSEM_CnICR.
Re-try to lock the semaphore x again:
–
–
On semaphore x free interrupt, try to lock semaphore x
•
If the semaphore lock is obtained:
Disable the semaphore x interrupt in HSEM_CnIER.
Clear pending semaphore x interrupt status in HSEM_CnICR.
•
If the semaphore x lock fails:
Clear pending semaphore x interrupt status in HSEM_CnICR.
Try again to lock the semaphore x:
–
Figure 35. Interrupt state diagram
No
MaskedStatus = 1 & Interrupt generated
If the semaphore lock is obtained, no interrupt is needed (semaphore has been
freed between first try to lock and clear semaphore interrupt status).
If the semaphore lock fails, enable the semaphore x interrupt in HSEM_CnIER.
If the semaphore lock is obtained (semaphore has been freed between first try to
lock and semaphore interrupt status clear), disable the semaphore interrupt in
HSEM_CnIER.
Semaphore x
locked
WRITE
(COREID & PROCID & LOCK = 0)
Interrupt
Semaphore x
Status = 1
Interrupt
Semaphore x
Enabled
Yes
Interrupt
Semaphore x
Semaphore x free
RM0453 Rev 5
Hardware semaphore (HSEM)
MS40533V3
377/1450
385
Need help?
Do you have a question about the STM32WL5 Series and is the answer not in the manual?