Improved accuracy of common_hal_mcu_delay_us of STM port.

SysTick Current Value Register must be cleared before enabling.
This commit is contained in:
EmergReanimator 2021-11-07 14:19:01 +01:00
parent e8f21f012c
commit a0074c36d8

View File

@ -41,13 +41,14 @@
#include "supervisor/shared/safe_mode.h"
void common_hal_mcu_delay_us(uint32_t delay) {
uint32_t ticks_per_us = HAL_RCC_GetSysClockFreq() / 1000000;
uint32_t ticks_per_us = HAL_RCC_GetSysClockFreq() / 1000000UL;
delay *= ticks_per_us;
SysTick->VAL = 0UL;
SysTick->LOAD = delay;
SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | SysTick_CTRL_ENABLE_Msk;
while ((SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk) == 0) {
}
SysTick->CTRL = 0;
SysTick->CTRL = 0UL;
}
volatile uint32_t nesting_count = 0;