nkjnm

Dependencies:   MAX44000 nexpaq_mdk

Fork of LED_Demo by Maxim nexpaq

Revision:
1:55a6170b404f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbd_os/TESTS/mbedmicro-rtos-mbed/timer/main.cpp	Sat Sep 17 16:32:05 2016 +0000
@@ -0,0 +1,51 @@
+#include "mbed.h"
+#include "greentea-client/test_env.h"
+#include "rtos.h"
+
+#if defined(MBED_RTOS_SINGLE_THREAD)
+  #error [NOT_SUPPORTED] test not supported
+#endif
+
+int total_ticks = 10;
+volatile int current_tick = 0;
+
+DigitalOut LEDs[4] = {
+    DigitalOut(LED1), DigitalOut(LED2), DigitalOut(LED3), DigitalOut(LED4)
+};
+
+void blink(void const *n) {
+    static int blink_counter = 0;
+    const int led_id = int(n);
+    LEDs[led_id] = !LEDs[led_id];
+    if (++blink_counter == 75 && current_tick <= total_ticks) {
+        greentea_send_kv("tick", current_tick++);
+        blink_counter = 0;
+    }
+}
+
+int main(void) {
+    GREENTEA_SETUP(total_ticks + 5, "timing_drift_auto");
+
+    RtosTimer led_1_timer(blink, osTimerPeriodic, (void *)0);
+    RtosTimer led_2_timer(blink, osTimerPeriodic, (void *)1);
+    RtosTimer led_3_timer(blink, osTimerPeriodic, (void *)2);
+    RtosTimer led_4_timer(blink, osTimerPeriodic, (void *)3);
+
+    led_1_timer.start(200);
+    led_2_timer.start(100);
+    led_3_timer.start(50);
+    led_4_timer.start(25);
+    
+    while(current_tick <= total_ticks) {
+        Thread::wait(10);
+    }
+    
+    led_4_timer.stop();
+    led_3_timer.stop();
+    led_2_timer.stop();
+    led_1_timer.stop();
+    
+    GREENTEA_TESTSUITE_RESULT(1);
+
+    Thread::wait(osWaitForever);
+}