请问 STM32F407怎样实现500ns的延时呀, 我利用的是systick,修改其时钟源,可是运行结果不正确,代码如下:
void delay_init(u8 SYSCLK)
{
SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK);
fac_500ns=SYSCLK/2;
fac_us=SYSCLK;
fac_ms=(u16)fac_us*1000;
}
void delay_x500ns(u32 x500ns)
{
u32 temp;
SysTick->LOAD=x500ns*fac_500ns;
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;
}
我将例程源码进行上面修改之后,delay延时函数不再能够实现精确延时,请问是哪个地方出了问题呢 |