wch-code/mijia_haier_bridge/src/user/util_delay.c

39 lines
763 B
C

#include "util_delay.h"
static uint8_t p_us = 0;
static uint16_t p_ms = 0;
void delay_init(void)
{
p_us = SystemCoreClock / 8000000;
p_ms = (uint16_t)p_us * 1000;
}
void delay_us(uint32_t n_us)
{
SysTick->CNTL0 = 0;
SysTick->CNTL1 = 0;
SysTick->CNTL2 = 0;
SysTick->CNTL3 = 0;
SysTick->CTLR = 1;
uint32_t i = (uint32_t)n_us * p_us;
while((*(volatile uint32_t *)&SysTick->CNTL0) <= i);
SysTick->CTLR = 0;
}
void delay_ms(uint32_t n_ms)
{
SysTick->CNTL0 = 0;
SysTick->CNTL1 = 0;
SysTick->CNTL2 = 0;
SysTick->CNTL3 = 0;
SysTick->CTLR = 1;
uint32_t i = (uint32_t)n_ms * p_ms;
while((*(volatile uint32_t *)&SysTick->CNTL0) <= i);
SysTick->CTLR = 0;
}