打印
[应用相关]

STM32F407怎样编写ns级延时函数 以实现500ns延时

[复制链接]
1340|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;       //清空计数器         
}


使用特权

评论回复
5
海洋无限| | 2021-2-8 15:37 | 只看该作者
对定时时间严格的话   那肯定定时器了

使用特权

评论回复
6
gygp| | 2021-2-9 20:53 | 只看该作者
是否需要精确延时呢?   

使用特权

评论回复
7
chenci2013| | 2021-2-9 20:53 | 只看该作者
一种是硬件延时         

使用特权

评论回复
8
biechedan| | 2021-2-9 20:53 | 只看该作者
使用定时器/计数器实现精确延时

使用特权

评论回复
9
wangdezhi| | 2021-2-9 20:53 | 只看该作者
用while()等循环语句  

使用特权

评论回复
10
isseed| | 2021-2-9 20:54 | 只看该作者
使用定时器中断延时  

使用特权

评论回复
11
xietingfeng| | 2021-2-9 20:54 | 只看该作者
毫秒级精确延时   

使用特权

评论回复
12
suzhanhua| | 2021-2-9 20:55 | 只看该作者
利用软件延时不容易做到精确的定时

使用特权

评论回复
13
hellosdc| | 2021-2-9 20:55 | 只看该作者
利用软件延时不容易做到精确的

使用特权

评论回复
14
uiint| | 2021-2-9 20:55 | 只看该作者
j = 85; while(j--);// 精确延时   

使用特权

评论回复
15
xietingfeng| | 2021-2-9 20:56 | 只看该作者
用c 写延时显得有些力不从心,故需用到汇编程序

使用特权

评论回复
16
isseed| | 2021-2-9 20:56 | 只看该作者
要用到定时器/计数器,这种方法可以提高CPU的工作效率

使用特权

评论回复
17
suzhanhua| | 2021-2-9 20:56 | 只看该作者
        

使用特权

评论回复
18
wangdezhi| | 2021-2-9 20:56 | 只看该作者
单片机的精确延时   

使用特权

评论回复
19
mituzu| | 2021-2-9 20:56 | 只看该作者
在编写延时子程序的时候不能好好的把握延时的具体时间

使用特权

评论回复
20
biechedan| | 2021-2-9 20:56 | 只看该作者
软件延时,这种方法主要采用循环体进行。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1483

主题

4364

帖子

6

粉丝