野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 13128|回复: 12

systick定时器延时函数逻辑顺序问题ji

[复制链接]
发表于 2016-9-1 18:46:35 | 显示全部楼层 |阅读模式
一、void Delay_us(__IO u32 nTime)                              
{    TimingDelay = nTime;       
        // 使能滴答定时器  
        SysTick->CTRL |=  SysTick_CTRL_ENABLE_Msk;
        while(TimingDelay != 0);
}                                                               
二、void Delay_us(__IO u32 nTime)
{     TimingDelay = nTime;       
        while(TimingDelay != 0)
     {  // 使能滴答定时器  
        SysTick->CTRL |=  SysTick_CTRL_ENABLE_Msk;
     };
}
第一个函数是给的例程,第二个是我改写的,这两个函数应该是等价的吧?是不是第二个逻辑性更好些?

回复

使用道具 举报

发表于 2016-9-1 19:20:26 | 显示全部楼层
使能只要执行一次就可以了,你放循环里会执行很多次的,没必要
回复 支持 反对

使用道具 举报

发表于 2016-9-1 20:05:38 来自手机 | 显示全部楼层
看新的视频教程,我讲的更加详细
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-1 20:56:59 | 显示全部楼层
fire 发表于 2016-9-1 20:05
看新的视频教程,我讲的更加详细

新的视频教程不是用的中断的方式,那个很容易理解,我看完之后感觉十分明白,但是例程中的这个中断延时我没有理解上去,我不知道在执行完while之后,会不会再上去执行使能滴答定时器那个函数,如果不上去的话怎么会再产生一个中断呢?如果上去的话,也就是说while函数是可以之前写在它前面的语句了?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-1 20:58:40 | 显示全部楼层
随风 发表于 2016-9-1 19:20
使能只要执行一次就可以了,你放循环里会执行很多次的,没必要

不是要多次产生中断来产生延时吗?如果while放在后面的话也没机会产生滴答中断 啊?
回复 支持 反对

使用道具 举报

发表于 2016-9-2 08:45:30 | 显示全部楼层
spligesh 发表于 2016-9-1 20:58
不是要多次产生中断来产生延时吗?如果while放在后面的话也没机会产生滴答中断 啊?

这个是使能,使能只需要一次,只要使能了,定时器就会运行,每次中断-1
回复 支持 反对

使用道具 举报

发表于 2016-9-2 09:36:14 | 显示全部楼层
干嘛每次都使能一下???
回复 支持 反对

使用道具 举报

发表于 2016-9-2 10:12:26 | 显示全部楼层
spligesh 发表于 2016-9-1 20:56
新的视频教程不是用的中断的方式,那个很容易理解,我看完之后感觉十分明白,但是例程中的这个中断延时我 ...

我视频里面不说了嘛,中断的方式比较绕,要慢慢理解,我就是怕你们理解不了,才讲了一个比较简单的。
回复 支持 反对

使用道具 举报

发表于 2016-9-2 10:14:51 | 显示全部楼层
spligesh 发表于 2016-9-1 20:56
新的视频教程不是用的中断的方式,那个很容易理解,我看完之后感觉十分明白,但是例程中的这个中断延时我 ...

火哥的新的视频讲的是不是很好
回复 支持 反对

使用道具 举报

发表于 2016-9-2 10:16:20 | 显示全部楼层
零度的亲吻 发表于 2016-9-2 09:36
干嘛每次都使能一下???

定时完毕之后就关闭了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-2 20:25:09 | 显示全部楼层
与孤独和好 发表于 2016-9-2 10:14
火哥的新的视频讲的是不是很好

嗯,那个非常简单,不错
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-2 20:27:33 | 显示全部楼层
公孙璇娟 发表于 2016-9-2 10:16
定时完毕之后就关闭了

对,我也是这么理解的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-2 20:28:50 | 显示全部楼层
fire 发表于 2016-9-2 10:12
我视频里面不说了嘛,中断的方式比较绕,要慢慢理解,我就是怕你们理解不了,才讲了一个比较简单的。

可意会不可言传,我自己改下代码运行下应该是最好的理解方式
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-9-28 13:19 , Processed in 0.041729 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表