[应用相关] STM32F407怎样编写ns级延时函数 以实现500ns延时

[复制链接]
2039|28
 楼主| jcky001 发表于 2021-2-8 10:39 | 显示全部楼层 |阅读模式
请问STM32F407(168Mhz)怎样编写ns级延时函数 可实现500ns延时
onlycook 发表于 2021-2-8 11:29 | 显示全部楼层
用个定时器配置分频21,就是8M,周期125ns
每次要延时保证从0开始计数,TIMx->CNT =0,使能定时器,
while(TIMx->CNT<4)判断计数值达到4,就是500ns了,再关闭定时器,下次要延时再使能
海滨消消 发表于 2021-2-8 11:30 | 显示全部楼层

for循环或者定时器。
麻花油条 发表于 2021-2-8 11:30 | 显示全部楼层
for循环或者滴答定时器

for循环也可以出500ns  但是容易被其他中断打断  不稳定

配置滴答定时器可以实现ns级延时  
void delay_init(u8 SYSCLK)  //72
{              
        SysTick->CTRL&=0xfffffffb;//bit2清空,选择外部时钟  STCLK = HCLK/8= 21M/s
        fac_us=SYSCLK/8;// SYSCLK为168,所以fac_us为21                    
        fac_ms=(u16)fac_us*1000;
}

//nus最小是50  时钟是21MHz  所以时钟最小分割是47ns
void delay_us(u32 ns)
{               
        u32 temp;                     
        SysTick->LOAD=ns*fac_us/1000; //时间加载                           
        SysTick->VAL=0x00;        //清空计数器
        SysTick->CTRL=0x01 ;      //开始倒数         
        do
        {
                temp=SysTick->CTRL;
        }
        while(temp&0x01&&!(temp&(1<<16)));//等待时间到达   
        SysTick->CTRL=0x00;       //关闭计数器
        SysTick->VAL =0X00;       //清空计数器         
}


海洋无限 发表于 2021-2-8 15:37 | 显示全部楼层
对定时时间严格的话   那肯定定时器了
gygp 发表于 2021-2-9 20:53 | 显示全部楼层
是否需要精确延时呢?   
chenci2013 发表于 2021-2-9 20:53 | 显示全部楼层
一种是硬件延时         
biechedan 发表于 2021-2-9 20:53 | 显示全部楼层
使用定时器/计数器实现精确延时
wangdezhi 发表于 2021-2-9 20:53 | 显示全部楼层
用while()等循环语句  
isseed 发表于 2021-2-9 20:54 | 显示全部楼层
使用定时器中断延时  
xietingfeng 发表于 2021-2-9 20:54 | 显示全部楼层
毫秒级精确延时   
suzhanhua 发表于 2021-2-9 20:55 | 显示全部楼层
利用软件延时不容易做到精确的定时
hellosdc 发表于 2021-2-9 20:55 | 显示全部楼层
利用软件延时不容易做到精确的
uiint 发表于 2021-2-9 20:55 | 显示全部楼层
j = 85; while(j--);// 精确延时   
xietingfeng 发表于 2021-2-9 20:56 | 显示全部楼层
用c 写延时显得有些力不从心,故需用到汇编程序
isseed 发表于 2021-2-9 20:56 | 显示全部楼层
要用到定时器/计数器,这种方法可以提高CPU的工作效率
suzhanhua 发表于 2021-2-9 20:56 | 显示全部楼层
        
wangdezhi 发表于 2021-2-9 20:56 | 显示全部楼层
单片机的精确延时   
mituzu 发表于 2021-2-9 20:56 | 显示全部楼层
在编写延时子程序的时候不能好好的把握延时的具体时间
biechedan 发表于 2021-2-9 20:56 | 显示全部楼层
软件延时,这种方法主要采用循环体进行。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1650

主题

5723

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部