STM32F407 怎样实现500ns的延时

2019-07-20 01:58发布

请问 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延时函数不再能够实现精确延时,请问是哪个地方出了问题呢


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
正点原子
1楼-- · 2019-07-20 04:59
delay_us函数,无法提供ns级别的延时,ns延时,直接自己写个函数实现吧。得慢慢磨
CHARLOTTECUI
2楼-- · 2019-07-20 06:33
 精彩回答 2  元偷偷看……

一周热门 更多>