NANO130_H2Press/User/systick_clock.c

78 lines
1.6 KiB
C
Raw Normal View History

2025-04-10 14:54:41 +08:00
#include "includes.h"
volatile u32 Systick_TickCount = 0;
void SysTick_Handler(void)
{
Systick_TickCount++;
// if(Systick_TickCount % 10 == 0)
// printf("#");
}
u32 GetDelayTick(u32 ms)
{
return GetTickCount() + ms;
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>u32<33><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u8 IsTickOut(u32 OutTick)
{
u32 tick = GetTickCount();
if(tick > OutTick)
{
if(tick - OutTick > 0x80000000UL)
return 0;
return 1;
}
if(OutTick - tick > 0x80000000UL)
return 1;
return 0;
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>u32<33><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u32 GetTickElapse(u32 start_tick, u32 end_tick)
{
if(end_tick >= start_tick)
return (end_tick - start_tick);
return (0xFFFFFFFFUL - start_tick + end_tick);
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڳ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><C9A3>жϿ<D0B6><CFBF><EFBFBD><EFBFBD>Ժ<EFBFBD><D4BA><EFBFBD><EFBFBD><EFBFBD>Ч
void delay_ms(u32 ms)
{
u32 tick = GetDelayTick(ms);
do
{
} while(!IsTickOut(tick));
}
// ͨ<><CDA8>TMR2<52><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1ms<6D>ж<EFBFBD>
void Clock_Init()
{
u32 us = CyclesPerUs * 1000; // 1ms
if ((us - 1UL) > SysTick_LOAD_RELOAD_Msk)
return; /* Reload value impossible */
SysTick->LOAD = (uint32_t)(us - 1UL); /* set reload register */
NVIC_SetPriority (SysTick_IRQn, 0); /* set Priority for Systick Interrupt */
SysTick->VAL = 0UL; /* Load the SysTick Counter Value */
SysTick->CTRL |= (SysTick_CTRL_CLKSOURCE_Msk |
SysTick_CTRL_TICKINT_Msk |
SysTick_CTRL_ENABLE_Msk); /* Enable SysTick IRQ and SysTick Timer */
}
void delay_us(uint16_t us)
{
uint32_t j;
while(us--)
{
j = SystemCoreClock / 1000000;
while(j--);
}
}