43 lines
1.1 KiB
C
43 lines
1.1 KiB
C
![]() |
#include "delay.h"
|
|||
|
|
|||
|
static int8_t fac_us=0;//us
|
|||
|
static int16_t fac_ms=0;//ms
|
|||
|
|
|||
|
void delay_init()
|
|||
|
{
|
|||
|
SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);//ѡ<><D1A1><EFBFBD>ⲿʱ<E2B2BF><CAB1> HCLK/8
|
|||
|
fac_us=SystemCoreClock/8000000; //Ϊϵͳʱ<CDB3>ӵ<EFBFBD>1/8
|
|||
|
fac_ms=(int16_t)fac_us*1000;//ÿ<><C3BF>ms<6D><73>Ҫ<EFBFBD><D2AA>systickʱ<6B><CAB1><EFBFBD><EFBFBD>
|
|||
|
}
|
|||
|
//<2F><>ʱNus
|
|||
|
void delay_us(int32_t nus)
|
|||
|
{
|
|||
|
int32_t temp;
|
|||
|
SysTick->LOAD=nus*fac_us; //ʱ<><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
SysTick->VAL=0x00; //<2F><><EFBFBD>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ; //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
|
|||
|
do
|
|||
|
{
|
|||
|
temp=SysTick->CTRL;
|
|||
|
}
|
|||
|
while(temp&0x01&&!(temp&(1<<16)));//<2F>ȴ<EFBFBD>ʱ<EFBFBD>䵽<EFBFBD><E4B5BD>
|
|||
|
SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk; //<2F>رռ<D8B1><D5BC><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
SysTick->VAL =0X00; //<2F><><EFBFBD>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
}
|
|||
|
//<2F><>ʱNms
|
|||
|
|
|||
|
void delay_ms(int16_t nms)
|
|||
|
{
|
|||
|
int32_t temp;
|
|||
|
SysTick->LOAD=(int32_t)nms*fac_ms;//ʱ<><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(SysTick->LOADΪ24bit)
|
|||
|
SysTick->VAL =0x00; //<2F><><EFBFBD>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ; //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
|
|||
|
do
|
|||
|
{
|
|||
|
temp=SysTick->CTRL;
|
|||
|
}
|
|||
|
while(temp&0x01&&!(temp&(1<<16)));//<2F>ȴ<EFBFBD>ʱ<EFBFBD>䵽<EFBFBD><E4B5BD>
|
|||
|
SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk; //<2F>رռ<D8B1><D5BC><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
SysTick->VAL =0X00; //<2F><><EFBFBD>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
}
|