mbed library sources. Supersedes mbed-src.

Dependents:   Nucleo_Hello_Encoder BLE_iBeaconScan AM1805_DEMO DISCO-F429ZI_ExportTemplate1 ... more

Revision:
186:707f6e361f3e
Parent:
174:b96e65c34a4d
Child:
188:bcfe06ba3d64
--- a/targets/TARGET_NXP/TARGET_LPC176X/us_ticker.c	Thu Apr 19 17:12:19 2018 +0100
+++ b/targets/TARGET_NXP/TARGET_LPC176X/us_ticker.c	Fri Jun 22 16:45:37 2018 +0100
@@ -17,34 +17,44 @@
 #include "us_ticker_api.h"
 #include "PeripheralNames.h"
 
+const ticker_info_t* us_ticker_get_info()
+{
+    static const ticker_info_t info = {
+        1000000,    // 1 MHz
+             32     // 32 bit counter
+    };
+    return &info;
+}
+
+static bool us_ticker_inited = false;
+
 #define US_TICKER_TIMER      ((LPC_TIM_TypeDef *)LPC_TIM3_BASE)
 #define US_TICKER_TIMER_IRQn TIMER3_IRQn
 
-int us_ticker_inited = 0;
+void us_ticker_init(void) {
+    if (us_ticker_inited) {
+        /* calling init again should cancel current interrupt */
+        us_ticker_disable_interrupt();
+        return;
+    }
+    us_ticker_inited = true;
 
-void us_ticker_init(void) {
-    if (us_ticker_inited) return;
-    us_ticker_inited = 1;
-    
     LPC_SC->PCONP |= 1 << 23; // Clock TIMER_3
-    
+
     US_TICKER_TIMER->CTCR = 0x0; // timer mode
     uint32_t PCLK = SystemCoreClock / 4;
-    
+
     US_TICKER_TIMER->TCR = 0x2;  // reset
-    
+
     uint32_t prescale = PCLK / 1000000; // default to 1MHz (1 us ticks)
     US_TICKER_TIMER->PR = prescale - 1;
     US_TICKER_TIMER->TCR = 1; // enable = 1, reset = 0
-    
+
     NVIC_SetVector(US_TICKER_TIMER_IRQn, (uint32_t)us_ticker_irq_handler);
     NVIC_EnableIRQ(US_TICKER_TIMER_IRQn);
 }
 
 uint32_t us_ticker_read() {
-    if (!us_ticker_inited)
-        us_ticker_init();
-    
     return US_TICKER_TIMER->TC;
 }