mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-15 04:15:44 +03:00
Fix micros using COUNTFLAG
Current micros() may return past time when called from ISR or elevated BASEPRI context. This is because a call to the SysTick interrupt handler sysTick_Hanlder(), which is responsible for 1ms rollover is blocked in these contexts. This PR introduces microsISR() that is guranteed to return correct time in these contexts. Legacy micros() was also modified to call microISR() in these contexts. The microISR() uses SysTick's COUNTFLAG to detect a pending rollover and use it to compensate the return value on its own. Actual rollover to sysTickUptime variable is still handled in the sysTick_Hanlder().
This commit is contained in:
parent
a21694b065
commit
59e78fcd8e
2 changed files with 44 additions and 1 deletions
|
@ -22,6 +22,7 @@ void delayMicroseconds(uint32_t us);
|
|||
void delay(uint32_t ms);
|
||||
|
||||
uint32_t micros(void);
|
||||
uint32_t microsISR(void);
|
||||
uint32_t millis(void);
|
||||
|
||||
typedef enum {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue