Commit e524d839 authored by schneider's avatar schneider
Browse files

fix(pycardium): Fix potential race when systick counts from 1 to 0

parent a80eb9a4
Pipeline #5252 passed with stages
in 1 minute and 30 seconds
......@@ -166,13 +166,16 @@ void SysTick_Handler(void)
static uint64_t systick_get_us()
{
uint32_t val, count;
uint32_t irqsaved = __get_PRIMASK();
/* The asynchronous/slow clocking of the systick means that
* its value can jump to 0 before the interrupt is triggered.
* Simply wait until it is not 0 and then read the count. */
do {
__set_PRIMASK(0);
val = SysTick->VAL;
count = systick_count;
__set_PRIMASK(irqsaved);
} while (val == 0);
uint64_t us = count * SYSTICK_INTERVAL_US +
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment