![](/media/cache/group/logo-cachanx.jpg.50x50_q85.jpg)
Purpose: Simple application example with 2 threads communicating 32-bit integers through a Queue event-object.
Dependencies: IHM_V2
Fork of mbed-os-example-mbed5-blinky by
Title : mbed-os-q-32-bits-tx-rx
Purpose: Simple application example with 2 threads communicating 32-bit integers through a Queue event-object. Target: L432KC / Nboard (from IUT-Cachan) Tested: YES (2019-01-09) Author: Jacques-Olivier Klein - IUT de CACHAN Date: 2018-02-10 rev. 2019-01-09 OS_STACK_SIZE=4096 Libraries: mbed-os rev5345:c966348(03jan2019) + IHMV2 (from IUT-Cachan) rev6:ad91067
main.cpp@28:5ac42b4bb038, 2019-01-09 (annotated)
- Committer:
- jacquesolivierklein
- Date:
- Wed Jan 09 12:26:40 2019 +0000
- Revision:
- 28:5ac42b4bb038
- Parent:
- 27:1fa50737793f
update for mbed-os-5.11 (and IHM-V2)
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jacquesolivierklein | 27:1fa50737793f | 1 | // Title : mbed-os-q-32-bits-tx-rx |
jacquesolivierklein | 27:1fa50737793f | 2 | // Author: Jacques-Olivier Klein - IUT de CACHAN |
jacquesolivierklein | 28:5ac42b4bb038 | 3 | // Date: 2018-02-10 rev. 2019-01-06 |
jacquesolivierklein | 27:1fa50737793f | 4 | |
Jonathan Austin |
0:2757d7abb7d9 | 5 | #include "mbed.h" |
jacquesolivierklein | 27:1fa50737793f | 6 | #include "IHM.h" |
jacquesolivierklein | 27:1fa50737793f | 7 | |
jacquesolivierklein | 27:1fa50737793f | 8 | #define THE_Q_SIZE 4 |
Jonathan Austin |
0:2757d7abb7d9 | 9 | |
jacquesolivierklein | 27:1fa50737793f | 10 | IHM ihm; |
jacquesolivierklein | 27:1fa50737793f | 11 | |
jacquesolivierklein | 27:1fa50737793f | 12 | DigitalOut L0 (PB_3) ; // led L0 |
jacquesolivierklein | 27:1fa50737793f | 13 | DigitalOut L1 (PA_7) ; // led L1 |
jacquesolivierklein | 27:1fa50737793f | 14 | DigitalOut L2 (PA_6) ; // led L2 |
jacquesolivierklein | 27:1fa50737793f | 15 | |
jacquesolivierklein | 27:1fa50737793f | 16 | void tx_q(); |
jacquesolivierklein | 27:1fa50737793f | 17 | void rx_q(); |
Jonathan Austin |
0:2757d7abb7d9 | 18 | |
jacquesolivierklein | 27:1fa50737793f | 19 | Thread thread_tx_q; |
jacquesolivierklein | 27:1fa50737793f | 20 | Thread thread_rx_q; |
jacquesolivierklein | 27:1fa50737793f | 21 | |
jacquesolivierklein | 27:1fa50737793f | 22 | Queue<int, THE_Q_SIZE> the_queue; |
jacquesolivierklein | 27:1fa50737793f | 23 | |
jacquesolivierklein | 27:1fa50737793f | 24 | int main(void) |
jacquesolivierklein | 27:1fa50737793f | 25 | { ihm.LCD_clear(); |
jacquesolivierklein | 27:1fa50737793f | 26 | ihm.LCD_printf("q-32b-tx-rx-%s %s",__DATE__,__TIME__); |
jacquesolivierklein | 27:1fa50737793f | 27 | printf("mbed-os-q-32-bits-tx-rx-%s %s\n\r",__DATE__,__TIME__); |
jacquesolivierklein | 28:5ac42b4bb038 | 28 | printf("OS_STACK_SIZE:%d\n\r", OS_STACK_SIZE); |
jacquesolivierklein | 27:1fa50737793f | 29 | |
jacquesolivierklein | 27:1fa50737793f | 30 | thread_tx_q.start(tx_q); |
jacquesolivierklein | 27:1fa50737793f | 31 | thread_rx_q.start(rx_q); |
jacquesolivierklein | 27:1fa50737793f | 32 | |
jacquesolivierklein | 27:1fa50737793f | 33 | while(1){ |
jacquesolivierklein | 28:5ac42b4bb038 | 34 | wait(3.000); |
jacquesolivierklein | 27:1fa50737793f | 35 | L0=!L0; |
jacquesolivierklein | 28:5ac42b4bb038 | 36 | printf("* [pid-%d]Main \n\r",osThreadGetId()); |
Jonathan Austin |
0:2757d7abb7d9 | 37 | } |
Jonathan Austin |
0:2757d7abb7d9 | 38 | } |
jacquesolivierklein | 27:1fa50737793f | 39 | |
jacquesolivierklein | 27:1fa50737793f | 40 | void tx_q (){ |
jacquesolivierklein | 27:1fa50737793f | 41 | static int j=0; |
jacquesolivierklein | 27:1fa50737793f | 42 | while (1){ |
jacquesolivierklein | 27:1fa50737793f | 43 | L1 = ! L1; |
jacquesolivierklein | 27:1fa50737793f | 44 | printf(" * Tx_q data:%d\n\r", j); |
jacquesolivierklein | 27:1fa50737793f | 45 | the_queue.put((int*)j++); |
jacquesolivierklein | 28:5ac42b4bb038 | 46 | wait(1.000); |
jacquesolivierklein | 27:1fa50737793f | 47 | } |
jacquesolivierklein | 27:1fa50737793f | 48 | } |
jacquesolivierklein | 27:1fa50737793f | 49 | |
jacquesolivierklein | 27:1fa50737793f | 50 | void rx_q (){ |
jacquesolivierklein | 27:1fa50737793f | 51 | osEvent evt; |
jacquesolivierklein | 27:1fa50737793f | 52 | while (true) { |
jacquesolivierklein | 27:1fa50737793f | 53 | evt = the_queue.get(); |
jacquesolivierklein | 27:1fa50737793f | 54 | L2 = ! L2; |
jacquesolivierklein | 27:1fa50737793f | 55 | if (evt.status == osEventMessage) { |
jacquesolivierklein | 27:1fa50737793f | 56 | printf(" *Rx_q data:%d\n\r", evt.value.v); |
jacquesolivierklein | 27:1fa50737793f | 57 | } |
jacquesolivierklein | 27:1fa50737793f | 58 | } |
jacquesolivierklein | 27:1fa50737793f | 59 | } |