wch-code/ch32v307_mp3_dac/User/delay.c
2024-05-05 22:27:52 +08:00

47 lines
757 B
C

#include "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)
{
uint32_t i;
SysTick->SR &= ~(1 << 0);
i = (uint32_t)n * p_us;
SysTick->CMP = i;
SysTick->CTLR |= (1 << 4);
SysTick->CTLR |= (1 << 5) | (1 << 0);
while((SysTick->SR & (1 << 0)) != (1 << 0)) {
}
SysTick->CTLR &= ~(1 << 0);
}
void delay_ms(uint32_t n)
{
uint32_t i;
SysTick->SR &= ~(1 << 0);
i = (uint32_t)n * p_ms;
SysTick->CMP = i;
SysTick->CTLR |= (1 << 4);
SysTick->CTLR |= (1 << 5) | (1 << 0);
while((SysTick->SR & (1 << 0)) != (1 << 0)) {
}
SysTick->CTLR &= ~(1 << 0);
}