mbed_example
/
rtos_queue
queue example
Embed:
(wiki syntax)
Show/hide line numbers
main.cpp
00001 #include "mbed.h" 00002 00003 typedef struct { 00004 float voltage; /* AD result of measured voltage */ 00005 float current; /* AD result of measured current */ 00006 uint32_t counter; /* A counter value */ 00007 } message_t; 00008 00009 MemoryPool<message_t, 16> mpool; 00010 Queue<message_t, 16> queue; 00011 Thread thread; 00012 00013 /* Send Thread */ 00014 void send_thread (void) { 00015 uint32_t i = 0; 00016 while (true) { 00017 i++; // fake data update 00018 message_t *message = mpool.alloc(); 00019 message->voltage = (i * 0.1) * 33; 00020 message->current = (i * 0.1) * 11; 00021 message->counter = i; 00022 queue.put(message); 00023 wait(1); 00024 } 00025 } 00026 00027 int main (void) { 00028 thread.start(callback(send_thread)); 00029 00030 while (true) { 00031 osEvent evt = queue.get(); 00032 if (evt.status == osEventMessage) { 00033 message_t *message = (message_t*)evt.value.p; 00034 printf("\nVoltage: %.2f V\n\r" , message->voltage); 00035 printf("Current: %.2f A\n\r" , message->current); 00036 printf("Number of cycles: %u\n\r", message->counter); 00037 00038 mpool.free(message); 00039 } 00040 } 00041 }
Generated on Fri Jul 15 2022 22:13:00 by 1.7.2