延时Delay

unsigned int Base_us;
unsigned int Base_ms;

void DELAY_Init(void)
{
    SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);
    
    Base_us = SystemCoreClock/8000000;
    Base_ms = Base_us*1000;
}

void DELAY_us(unsigned int n)
{
    unsigned int Temp;
    
    SysTick->LOAD = n*Base_us;
    SysTick->VAL  = 0x00;
    SysTick->CTRL|= SysTick_CTRL_ENABLE_Msk;
    
    do
    {
        Temp = SysTick->CTRL;
    }while((Temp&0x01)&&!(Temp&(1<<16)));
    
    SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;
    SysTick->VAL   = 0x00;
}

void DELAY_ms(unsigned int n)
{
    unsigned int Temp;
    
    SysTick->LOAD = n*Base_ms;
    SysTick->VAL  = 0x00;
    SysTick->CTRL|= SysTick_CTRL_ENABLE_Msk;
    
    do
    {
        Temp = SysTick->CTRL;
    }while((Temp&0x01)&&!(Temp&(1<<16)));
    
    SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;
    SysTick->VAL   = 0x00;
}

posted on 2020-11-06 22:06  棕色的北极熊  阅读(135)  评论(0)    收藏  举报