你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
aicuicui 提问时间:2019-9-8 10:53 /
请问STM32F407(168Mhz)怎样编写ns级延时函数 可实现500ns延时
收藏 评论6 发布时间:2019-9-8 10:53

举报

6个回答
哀歌与世无争 回答时间:2019-9-8 11:24:13
用个定时器配置分频21,就是8M,周期125ns
每次要延时保证从0开始计数,TIMx->CNT =0,使能定时器,
while(TIMx->CNT<4)判断计数值达到4,就是500ns了,再关闭定时器,下次要延时再使能
回答时间:2019-9-8 20:36:57
for循环或者定时器。
aicuicui 回答时间:2019-9-8 20:50:57
安 发表于 2019-9-8 20:36
for循环或者定时器。

您好 请问定时器具体怎样能够实现 可以大概跟我说一下么
我用定时器更新中断写过一次 由于进出中断加中断处理程序已经大于500ns 没能成功 请问可以怎样实现呢
下面是我使用中断的代码
  1. void TIM2_IRQHandler(void)
  2. {        
  3.         if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET)
  4.         {                                   
  5.                 TIM_ClearITPendingBit(TIM2, TIM_IT_Update);  
  6.                 counter_x500ns++;
  7.         }            
  8. }


  9. void delay_x500ns(u16 x_500ns)
  10. {
  11.         counter_x500ns=0;
  12.         while(x_500ns!=counter_x500ns);
  13. }
复制代码

定时器初始化为TIM2_Init(42-1,1-1); //500ns
delay使用为delay_x500ns(1);
mylovemcu 回答时间:2019-9-9 08:02:32
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;       //清空计数器         
}



aicuicui 回答时间:2019-9-9 11:08:41
mylovemcu 发表于 2019-9-9 08:02
for循环或者滴答定时器

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

哇~多谢~
你若安好_清风徐来 回答时间:2019-9-10 18:03:00
滴答咯 简单易懂
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版