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

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管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版