你不知道单片机延时的种种情况.doc

上传人:白大夫 文档编号:3381508 上传时间:2019-08-20 格式:DOC 页数:3 大小:16KB
返回 下载 相关 举报
你不知道单片机延时的种种情况.doc_第1页
第1页 / 共3页
亲,该文档总共3页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《你不知道单片机延时的种种情况.doc》由会员分享,可在线阅读,更多相关《你不知道单片机延时的种种情况.doc(3页珍藏版)》请在三一文库上搜索。

1、你不知道单片机延时的种种情况一、为什么要延时1、时序模块某协议的时序,比如串口,IIC的通讯协议,使用延时来满足时序变化的要求和通讯速度的控制。如下IIC的时序,其中的tBUF,tLOW等等这些时间都是通过延时来完成的,如果延时的时间不正常,则通讯协议不满足,就会无法与芯片进行通讯,而无法达到某特定的功能。芯片性能要求,某些芯片,比如ADC,专用计量等芯片,这些芯片都是要有一个转换时间的,或有一个读取转换结果的时间间距问题;比如AD7606,ADC转换时间为4us,那么想要得到新的数据,就要等转换完成后再读取。还有一种就是芯片本身存在的bug,要进行必要的延时,以一个计量芯片为例,其两个寄存器

2、的连续读取时间要间隔125us,否则会对第二个寄存器的值造成损坏。2、效果LED灯,无论是闪烁还是呼吸灯(PWM除外)继电器控制,对于脉冲式触发的继电器,要对线圈进行通电一段时间后,让线圈所产生的磁量足以吸合,才会驱动继电器闭合(断开)。二、延时种类1、阻塞式即在延时过程中,程序不执行其他的程序,不接收中断,只是在单纯的进行延时。这种方式多用于时序非常严格的情况,但是效率是很低的,单片机会空运转。代码一般为:在RTOS中,也会有一种阻塞的延时,函数为vTaskDelayUntil();2、非阻塞式这种方式,只是在运行到相关代码后,判断一下延时时间是不是到达,没有到则会跳到其他的程序去执行,等下

3、次再判断延时时间,时间到后,再去执行相关代码。这种方式用的比较多的就是定时器延时与RTOS中的延时了,vTaskDelay();三、延时的方法1、单片机空运行即是单片机一直在运行NOP,或都是空的for循环。还有一种是双for循环,通过调整两个for循环的条件来调整延时时间。或是通过dowhile方式,或都直接是while(i-);,或者是两者的组合的方式。2、中断1)GPIO中断这种方式用的很少,使用时,在GPIO引脚上输入一个时钟或是其他芯片输出的延时信号,GPIO可以设置成中断触发,而GPIO中断的时间就是时钟的周期时间,一些RTC的输出中断(通常为1S),或是一些标准的时钟输出,或是交

4、流电整流后的脉冲(20ms)等等,总之是一些特殊的情况下的一种用法,但是间接可以起到精确延时的作用。2)定时器中断定时器无论是通用定时器,还是系统的滴答,都是通过定时器的原理进行的延时,这里统一进行说明。而使用定时器也分两种情况,一种是把延时后的任务放在定时器的中断中进行运行,只有延时或是定时时间到后,才会执行相关的代码。时间不到是不会执行的,这种方式更准确的应该是定时了。另一种方式就是真正的延时了,延时计数放在定时器中进行操作,每-一次就是定时器定时时间的累加,这种定时方式精度比较高。如下delays在中断中进行 -的操作,在要延时的地址设置好delays的值,只要等delays等于0后,就是延时时间到的时候。综上,对于单片机的延时做了一些比较浅显的说明,其实针对不同的项目与不同的实时性要求,要选择合适的方式,才可以让项目在进度与性能上有一个很好的平衡。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1