mbed library sources for GR-PEACH rev.B.

Fork of mbed-src by mbed official

Revision:
96:c359415e941f
Parent:
92:05f19f05c134
Child:
100:0412b5443284
--- a/targets/hal/TARGET_STM/TARGET_NUCLEO_L152RE/us_ticker.c	Tue Feb 18 14:15:05 2014 +0000
+++ b/targets/hal/TARGET_STM/TARGET_NUCLEO_L152RE/us_ticker.c	Tue Feb 18 15:45:07 2014 +0000
@@ -36,8 +36,8 @@
 
 static int      us_ticker_inited = 0;
 static volatile uint32_t SlaveCounter = 0;
-static uint32_t oc_int_part = 0;
-static uint16_t oc_rem_part = 0;
+static volatile uint32_t oc_int_part = 0;
+static volatile uint16_t oc_rem_part = 0;
 
 void set_compare(uint16_t count) {
     // Set new output compare value
@@ -58,20 +58,19 @@
     // Output compare interrupt: used by interrupt system
     if (TIM_GetITStatus(TIM_MST, TIM_IT_CC1) == SET) {
         TIM_ClearITPendingBit(TIM_MST, TIM_IT_CC1);
-    }
-
-    if (oc_rem_part > 0) {
-        set_compare(oc_rem_part); // Finish the remaining time left
-        oc_rem_part = 0;
-    }
-    else {
-        if (oc_int_part > 0) {
-            set_compare(0xFFFF);
-            oc_rem_part = cval; // To finish the counter loop the next time
-            oc_int_part--;
+        if (oc_rem_part > 0) {
+            set_compare(oc_rem_part); // Finish the remaining time left
+            oc_rem_part = 0;
         }
         else {
-            us_ticker_irq_handler();
+            if (oc_int_part > 0) {
+                set_compare(0xFFFF);
+                oc_rem_part = cval; // To finish the counter loop the next time
+                oc_int_part--;
+            }
+            else {
+                us_ticker_irq_handler();
+            }
         }
     }
 }