44 lines
965 B
C
Raw Normal View History

2022-08-25 14:18:18 +08:00
#include "delay.h"
static uint8_t UsNumber=0;
static uint16_t MsNumber=0;
void Delay_Init()
{
2022-08-25 15:47:12 +08:00
RCC_ClocksTypeDef clocks;
RCC_GetClocksFreq(&clocks); //??????
2022-08-25 14:18:18 +08:00
SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);
2022-08-25 15:47:12 +08:00
UsNumber=clocks.HCLK_Frequency/HSE_VALUE;
MsNumber=(u16)UsNumber*1000;
2022-08-25 14:18:18 +08:00
}
void Delay_Us(u32 nus)
{
u32 temp;
SysTick->LOAD=nus*UsNumber;
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(u16 nms)
{
u32 temp;
SysTick->LOAD=(u32)nms*MsNumber;
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;
}