forked from WCH-Templates/CH32V203
My timer code is better :)
This commit is contained in:
parent
6d26129dd2
commit
c7eb07a9d1
2 changed files with 37 additions and 0 deletions
|
@ -23,6 +23,29 @@ void Delay_Init(void)
|
|||
{
|
||||
p_us = SystemCoreClock / 8000000;
|
||||
p_ms = (uint16_t)p_us * 1000;
|
||||
|
||||
SysTick->CTLR &= ~0x8000001F;
|
||||
SysTick->CTLR |= (1 << 0);
|
||||
}
|
||||
|
||||
uint64_t SysTick_Read(void)
|
||||
{
|
||||
uint64_t ticks;
|
||||
SysTick->CTLR &= ~(1 << 0);
|
||||
ticks = SysTick->CNT;
|
||||
SysTick->CTLR |= (1 << 0);
|
||||
|
||||
return ticks;
|
||||
}
|
||||
|
||||
uint64_t SysTick_Us(void)
|
||||
{
|
||||
return SysTick_Read() / p_us;
|
||||
}
|
||||
|
||||
uint64_t SysTick_Ms(void)
|
||||
{
|
||||
return SysTick_Read() / p_ms;
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
|
@ -41,12 +64,18 @@ void Delay_Us(uint32_t n)
|
|||
SysTick->SR &= ~(1 << 0);
|
||||
i = (uint32_t)n * p_us;
|
||||
|
||||
SysTick->CMP = SysTick_Read() + i;
|
||||
while((SysTick->SR & (1 << 0)) != (1 << 0));
|
||||
|
||||
|
||||
/*
|
||||
SysTick->CMP = i;
|
||||
SysTick->CTLR |= (1 << 4);
|
||||
SysTick->CTLR |= (1 << 5) | (1 << 0);
|
||||
|
||||
while((SysTick->SR & (1 << 0)) != (1 << 0));
|
||||
SysTick->CTLR &= ~(1 << 0);
|
||||
*/
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
|
@ -65,12 +94,17 @@ void Delay_Ms(uint32_t n)
|
|||
SysTick->SR &= ~(1 << 0);
|
||||
i = (uint32_t)n * p_ms;
|
||||
|
||||
SysTick->CMP = SysTick_Read() + i;
|
||||
while((SysTick->SR & (1 << 0)) != (1 << 0));
|
||||
|
||||
/*
|
||||
SysTick->CMP = i;
|
||||
SysTick->CTLR |= (1 << 4);
|
||||
SysTick->CTLR |= (1 << 5) | (1 << 0);
|
||||
|
||||
while((SysTick->SR & (1 << 0)) != (1 << 0));
|
||||
SysTick->CTLR &= ~(1 << 0);
|
||||
*/
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
|
|
|
@ -29,6 +29,9 @@ extern "C" {
|
|||
//#define DEBUG DEBUG_UART3
|
||||
|
||||
void Delay_Init(void);
|
||||
uint64_t SysTick_Read(void);
|
||||
uint64_t SysTick_Us(void);
|
||||
uint64_t SysTick_Ms(void);
|
||||
void Delay_Us(uint32_t n);
|
||||
void Delay_Ms(uint32_t n);
|
||||
void USART_Printf_Init(uint32_t baudrate);
|
||||
|
|
Loading…
Reference in a new issue