mirror of
https://github.com/hathach/tinyusb.git
synced 2025-02-21 21:41:09 +00:00
Merge pull request #74 from hathach/develop
better fix for #72 millis overflow
This commit is contained in:
commit
3eb09261d1
@ -177,7 +177,7 @@ void hid_task(void)
|
|||||||
const uint32_t interval_ms = 10;
|
const uint32_t interval_ms = 10;
|
||||||
static uint32_t start_ms = 0;
|
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;
|
start_ms += interval_ms;
|
||||||
|
|
||||||
uint32_t const btn = board_button_read();
|
uint32_t const btn = board_button_read();
|
||||||
@ -264,7 +264,7 @@ void led_blinking_task(void)
|
|||||||
static bool led_state = false;
|
static bool led_state = false;
|
||||||
|
|
||||||
// Blink every 1000 ms
|
// 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;
|
start_ms += blink_interval_ms;
|
||||||
|
|
||||||
board_led_write(led_state);
|
board_led_write(led_state);
|
||||||
|
@ -146,7 +146,7 @@ void led_blinking_task(void)
|
|||||||
static bool led_state = false;
|
static bool led_state = false;
|
||||||
|
|
||||||
// Blink every 1000 ms
|
// 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;
|
start_ms += blink_interval_ms;
|
||||||
|
|
||||||
board_led_write(led_state);
|
board_led_write(led_state);
|
||||||
|
@ -107,7 +107,7 @@ void led_blinking_task(void)
|
|||||||
static bool led_state = false;
|
static bool led_state = false;
|
||||||
|
|
||||||
// Blink every 1000 ms
|
// 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;
|
start_ms += blink_interval_ms;
|
||||||
|
|
||||||
board_led_write(led_state);
|
board_led_write(led_state);
|
||||||
|
@ -170,7 +170,7 @@ void led_blinking_task(void)
|
|||||||
static bool led_state = false;
|
static bool led_state = false;
|
||||||
|
|
||||||
// Blink every 1000 ms
|
// 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;
|
start_ms += interval_ms;
|
||||||
|
|
||||||
board_led_write(led_state);
|
board_led_write(led_state);
|
||||||
|
@ -97,22 +97,8 @@ static inline void board_led_off(void)
|
|||||||
|
|
||||||
static inline void board_delay(uint32_t ms)
|
static inline void board_delay(uint32_t ms)
|
||||||
{
|
{
|
||||||
if ( ms == 0 ) return;
|
uint32_t start_ms = board_millis();
|
||||||
|
while( board_millis() - start_ms < ms) {}
|
||||||
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 ) {}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline int8_t board_uart_getchar(void)
|
static inline int8_t board_uart_getchar(void)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user