diff --git a/libraries/mbed/common/error.c b/libraries/mbed/common/error.c index 7c6a556c03..0af7fd1caf 100644 --- a/libraries/mbed/common/error.c +++ b/libraries/mbed/common/error.c @@ -21,6 +21,10 @@ #include #endif +#ifdef __cplusplus +extern "C" { +#endif + WEAK void error(const char* format, ...); WEAK void error(const char* format, ...) { #if DEVICE_STDIO_MESSAGES @@ -31,3 +35,7 @@ WEAK void error(const char* format, ...) { #endif exit(1); } + +#ifdef __cplusplus +} +#endif diff --git a/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_NRF51822/us_ticker.c b/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_NRF51822/us_ticker.c index b6b2551753..b650d52e0e 100644 --- a/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_NRF51822/us_ticker.c +++ b/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_NRF51822/us_ticker.c @@ -62,7 +62,7 @@ void TIMER1_IRQHandler(void){ } #endif void us_ticker_init(void){ - if (us_ticker_inited){ + if (us_ticker_inited && US_TICKER_TIMER->POWER){ return; } @@ -75,18 +75,18 @@ void us_ticker_init(void){ US_TICKER_TIMER->PRESCALER = 4; US_TICKER_TIMER->BITMODE = TIMER_BITMODE_BITMODE_16Bit; - US_TICKER_TIMER->TASKS_CLEAR =1; - US_TICKER_TIMER->CC[1] = 0xFFFF; - US_TICKER_TIMER->INTENSET = TIMER_INTENSET_COMPARE1_Set << TIMER_INTENSET_COMPARE1_Pos; + US_TICKER_TIMER->TASKS_CLEAR =1; + US_TICKER_TIMER->CC[1] = 0xFFFF; + US_TICKER_TIMER->INTENSET = TIMER_INTENSET_COMPARE1_Set << TIMER_INTENSET_COMPARE1_Pos; - NVIC_SetPriority(US_TICKER_TIMER_IRQn, 3); + NVIC_SetPriority(US_TICKER_TIMER_IRQn, 3); NVIC_EnableIRQ(US_TICKER_TIMER_IRQn); US_TICKER_TIMER->TASKS_START = 0x01; } uint32_t us_ticker_read(){ - if (!us_ticker_inited){ + if (!us_ticker_inited || US_TICKER_TIMER->POWER==0){ us_ticker_init(); } @@ -101,7 +101,7 @@ uint32_t us_ticker_read(){ } void us_ticker_set_interrupt(unsigned int timestamp){ - if (!us_ticker_inited) + if (!us_ticker_inited || US_TICKER_TIMER->POWER==0) { us_ticker_init(); }