summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhathach <[email protected]>2019-05-21 13:37:05 +0700
committerGitHub <[email protected]>2019-05-21 13:37:05 +0700
commit3eb09261d1b07c4f908d2bbab86d9c214ebc1333 (patch)
tree569d8c123efa4b00f27a31993d11f54101bbb319
parent4ab392ccdf33f1181fda9cbd8ec0ae8d23e4cf17 (diff)
parentce6976f40055db185b7260c7619d02cf6ffd4cf6 (diff)
Merge pull request #74 from hathach/develop
better fix for #72 millis overflow
-rw-r--r--examples/device/cdc_msc_hid/src/main.c4
-rw-r--r--examples/device/hid_generic_inout/src/main.c2
-rw-r--r--examples/device/msc_dual_lun/src/main.c2
-rw-r--r--examples/host/cdc_msc_hid/src/main.c2
-rw-r--r--hw/bsp/board.h18
5 files changed, 7 insertions, 21 deletions
diff --git a/examples/device/cdc_msc_hid/src/main.c b/examples/device/cdc_msc_hid/src/main.c
index ce81767cf..7c0fd39d5 100644
--- a/examples/device/cdc_msc_hid/src/main.c
+++ b/examples/device/cdc_msc_hid/src/main.c
@@ -177,7 +177,7 @@ void hid_task(void)
const uint32_t interval_ms = 10;
static uint32_t start_ms = 0;
- if ( board_millis() < start_ms + interval_ms) return; // not enough time
+ if ( board_millis() - start_ms < interval_ms) return; // not enough time
start_ms += interval_ms;
uint32_t const btn = board_button_read();
@@ -264,7 +264,7 @@ void led_blinking_task(void)
static bool led_state = false;
// Blink every 1000 ms
- if ( board_millis() < start_ms + blink_interval_ms) return; // not enough time
+ if ( board_millis() - start_ms < blink_interval_ms) return; // not enough time
start_ms += blink_interval_ms;
board_led_write(led_state);
diff --git a/examples/device/hid_generic_inout/src/main.c b/examples/device/hid_generic_inout/src/main.c
index d64598675..b08ca5aee 100644
--- a/examples/device/hid_generic_inout/src/main.c
+++ b/examples/device/hid_generic_inout/src/main.c
@@ -146,7 +146,7 @@ void led_blinking_task(void)
static bool led_state = false;
// Blink every 1000 ms
- if ( board_millis() < start_ms + blink_interval_ms) return; // not enough time
+ if ( board_millis() - start_ms < blink_interval_ms) return; // not enough time
start_ms += blink_interval_ms;
board_led_write(led_state);
diff --git a/examples/device/msc_dual_lun/src/main.c b/examples/device/msc_dual_lun/src/main.c
index 54cd3d5bf..60500df93 100644
--- a/examples/device/msc_dual_lun/src/main.c
+++ b/examples/device/msc_dual_lun/src/main.c
@@ -107,7 +107,7 @@ void led_blinking_task(void)
static bool led_state = false;
// Blink every 1000 ms
- if ( board_millis() < start_ms + blink_interval_ms) return; // not enough time
+ if ( board_millis() - start_ms < blink_interval_ms) return; // not enough time
start_ms += blink_interval_ms;
board_led_write(led_state);
diff --git a/examples/host/cdc_msc_hid/src/main.c b/examples/host/cdc_msc_hid/src/main.c
index a5e95159b..61f101127 100644
--- a/examples/host/cdc_msc_hid/src/main.c
+++ b/examples/host/cdc_msc_hid/src/main.c
@@ -170,7 +170,7 @@ void led_blinking_task(void)
static bool led_state = false;
// Blink every 1000 ms
- if ( board_millis() < start_ms + interval_ms) return; // not enough time
+ if ( board_millis() - start_ms < interval_ms) return; // not enough time
start_ms += interval_ms;
board_led_write(led_state);
diff --git a/hw/bsp/board.h b/hw/bsp/board.h
index 4970dc303..6467a5e4f 100644
--- a/hw/bsp/board.h
+++ b/hw/bsp/board.h
@@ -97,22 +97,8 @@ static inline void board_led_off(void)
static inline void board_delay(uint32_t ms)
{
- if ( ms == 0 ) return;
-
- uint64_t end_ms = (uint64_t) board_millis();
- end_ms += ms;
-
- // about to overflows
- if (end_ms > UINT32_MAX)
- {
- // first wait for overflow occurs since "ms" is small enough
- while( board_millis() > ms ) {}
-
- // then adjust end time
- end_ms -= UINT32_MAX;
- }
-
- while( board_millis() < end_ms ) {}
+ uint32_t start_ms = board_millis();
+ while( board_millis() - start_ms < ms) {}
}
static inline int8_t board_uart_getchar(void)