Merge pull request #10597 from LDong-Arm/systimer_lptimer

SysTimer should be buildable without lp ticker
pull/10634/head
Martin Kojtal 2019-05-22 11:59:16 +01:00 committed by GitHub
commit 1dbb478bbb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 21 additions and 14 deletions

View File

@ -17,10 +17,6 @@
#error [NOT_SUPPORTED] Tickless mode not supported for this target.
#endif
#if !DEVICE_LPTICKER
#error [NOT_SUPPORTED] Current SysTimer implementation requires lp ticker support.
#endif
#include "mbed.h"
#include "greentea-client/test_env.h"
#include "unity.h"

View File

@ -21,8 +21,9 @@
*/
#include "rtos/TARGET_CORTEX/SysTimer.h"
#if DEVICE_LPTICKER
#if MBED_TICKLESS
#include "hal/us_ticker_api.h"
#include "hal/lp_ticker_api.h"
#include "mbed_critical.h"
#include "mbed_assert.h"
@ -58,7 +59,12 @@ namespace rtos {
namespace internal {
SysTimer::SysTimer() :
TimerEvent(get_lp_ticker_data()), _time_us(0), _tick(0)
#if DEVICE_LPTICKER
TimerEvent(get_lp_ticker_data()),
#else
TimerEvent(get_us_ticker_data()),
#endif
_time_us(0), _tick(0)
{
_time_us = ticker_read_us(_ticker_data);
_suspend_time_passed = true;
@ -69,6 +75,8 @@ SysTimer::SysTimer(const ticker_data_t *data) :
TimerEvent(data), _time_us(0), _tick(0)
{
_time_us = ticker_read_us(_ticker_data);
_suspend_time_passed = true;
_suspended = false;
}
void SysTimer::setup_irq()
@ -194,4 +202,4 @@ void SysTimer::handler()
}
}
#endif
#endif // MBED_TICKLESS

View File

@ -22,7 +22,7 @@
#ifndef MBED_SYS_TIMER_H
#define MBED_SYS_TIMER_H
#if DEVICE_LPTICKER || defined(DOXYGEN_ONLY)
#if MBED_TICKLESS || defined(DOXYGEN_ONLY)
#include "platform/NonCopyable.h"
#include "drivers/TimerEvent.h"

View File

@ -38,10 +38,13 @@ extern "C" {
#ifdef MBED_TICKLESS
MBED_STATIC_ASSERT(!MBED_CONF_TARGET_TICKLESS_FROM_US_TICKER || DEVICE_USTICKER,
"Microsecond ticker required when MBED_CONF_TARGET_TICKLESS_FROM_US_TICKER is true");
MBED_STATIC_ASSERT(MBED_CONF_TARGET_TICKLESS_FROM_US_TICKER || DEVICE_LPTICKER,
"Low power ticker required when MBED_CONF_TARGET_TICKLESS_FROM_US_TICKER is false");
#if MBED_CONF_TARGET_TICKLESS_FROM_US_TICKER && !DEVICE_USTICKER
#error Microsecond ticker required when MBED_CONF_TARGET_TICKLESS_FROM_US_TICKER is true
#endif
#if !MBED_CONF_TARGET_TICKLESS_FROM_US_TICKER && !DEVICE_LPTICKER
#error Low power ticker required when MBED_CONF_TARGET_TICKLESS_FROM_US_TICKER is false
#endif
#include "rtos/TARGET_CORTEX/SysTimer.h"
@ -137,7 +140,7 @@ extern "C" {
}
#else
#else // MBED_TICKLESS
static void default_idle_hook(void)
{
@ -149,7 +152,7 @@ extern "C" {
core_util_critical_section_exit();
}
#endif // (defined(MBED_TICKLESS) && DEVICE_LPTICKER)
#endif // MBED_TICKLESS
static void (*idle_hook_fptr)(void) = &default_idle_hook;