WORKS
Dependencies: MAX44000 PWM_Tone_Library nexpaq_mdk
Fork of LED_Demo by
main.cpp
00001 #include "mbed.h" 00002 #include "cmsis_os.h" 00003 00004 #if defined(MBED_RTOS_SINGLE_THREAD) 00005 #error [NOT_SUPPORTED] test not supported 00006 #endif 00007 00008 typedef struct { 00009 float voltage; /* AD result of measured voltage */ 00010 float current; /* AD result of measured current */ 00011 uint32_t counter; /* A counter value */ 00012 } message_t; 00013 00014 osPoolDef(mpool, 16, message_t); 00015 osPoolId mpool; 00016 00017 osMessageQDef(queue, 16, message_t); 00018 osMessageQId queue; 00019 00020 void send_thread (void const *argument) { 00021 uint32_t i = 0; 00022 while (true) { 00023 i++; // fake data update 00024 message_t *message = (message_t*)osPoolAlloc(mpool); 00025 message->voltage = (i * 0.1) * 33; 00026 message->current = (i * 0.1) * 11; 00027 message->counter = i; 00028 osMessagePut(queue, (uint32_t)message, osWaitForever); 00029 osDelay(1000); 00030 } 00031 } 00032 00033 osThreadDef(send_thread, osPriorityNormal, DEFAULT_STACK_SIZE); 00034 00035 int main (void) { 00036 mpool = osPoolCreate(osPool(mpool)); 00037 queue = osMessageCreate(osMessageQ(queue), NULL); 00038 00039 osThreadCreate(osThread(send_thread), NULL); 00040 00041 while (true) { 00042 osEvent evt = osMessageGet(queue, osWaitForever); 00043 if (evt.status == osEventMessage) { 00044 message_t *message = (message_t*)evt.value.p; 00045 printf("\nVoltage: %.2f V\n\r" , message->voltage); 00046 printf("Current: %.2f A\n\r" , message->current); 00047 printf("Number of cycles: %u\n\r", message->counter); 00048 00049 osPoolFree(mpool, message); 00050 } 00051 } 00052 }
Generated on Tue Jul 12 2022 12:28:42 by
1.7.2
