学过单片机的同学应该清楚,我们在编写传感器驱动时,需要用到高精度的定时器、延时等功能,wiringpi提供了一组函数来实现这些功能,这些函数分别是:

micros() #返回当前的微秒数,这个数在调用wiringPiSetup()后被清零并重新计时

millis() #返回当前的毫秒数,同上,这个数在调用wiringPiSetup()后被清零并重新计时

delayMicroseconds() #高精度微秒延时

delay() #毫秒延时。

python相对于C,一个很大的问题就是执行速度慢,所以指令执行速度不可忽视,我们可以用micos函数来检测指令执行时间,用来避免实际使用中遇到的坑,请看以下代码:

importwiringpi2 as gpiofor i in range(5):

t1=gpio.micros()

t2=gpio.micros()print(t2-t1)

连续调用两次micros,然后打印出差值,运行结果如下:

[root@RasPi ~/testcode]# python testus.py12

4

4

5

5

我们看到第一次的结果明显比以后的结果要大,多了接近10微秒,一般的程序来说,这无关紧要,要是要求更高,可以把代码改成这个样子:

importwiringpi2 as gpiofor i in range(5):

t1=gpio.micros()

t1=gpio.micros()

t2=gpio.micros()print(t2-t1)

运行结果如下:

[root@RasPi ~/testcode]#python testus.py

3

3

3

3

2

基本一致了再看以下代码:

importwiringpi2 as gpiofor i in range(5):

t1=gpio.micros()

t1=gpio.micros()

gpio.delayMicroseconds(10)

t2=gpio.micros()print(t2-t1)

延时10us,结果如下:

[root@RasPi ~/testcode]#python testus.py

21

21

18

18

18

减去两次调用micros()之间的5us左右的延时,实际延时10us会有5us左右的延时。

importwiringpi2 as gpiofor i in range(5):

t1=gpio.micros()

t1=gpio.micros()for i in range(100):passt2=gpio.micros()print(t2-t1)

结果:

[root@RasPi ~/testcode]#python testus.py

59

69

66

61

62

也就是,普通几条指令,每条延时在1us以下,可以基本忽略,调用函数,则有5-10us左右的延时,在编写程序时,应充分考虑这一点。若在时序里有复杂的代码段,则最好能实际测试一下,看看执行时间对我们的时序有什么影响。

python延时us函数_树莓派高级GPIO库,wiringpi2 for python使用笔记(二)高精度计时、延时函数...相关推荐

  1. 树莓派python gpio 模仿iic_树莓派高级GPIO库,wiringpi2 for python使用笔记(五)i2c读取测试...

    wiringpi2显然也把i2c驱动带给了Python,手头上正巧有一个DS3231的模块,上边带了一个DS3231 RTC(实时时钟),与一片24C32,两个芯片均为iic总线设备,与树莓派接线如下 ...

  2. python控制步进电机驱动器_树莓派通过GPIO控制步进电机(python)

    步进电机的驱动程序一样是让我费了好大力气才使他正常工作,在代码上走了不少弯路 树莓派不建议直接使用舵机,虽然舵机方便,而且仅需要一根信号线,不过需要舒服pwm信号,而新版的b+板子已经没有了物理的pw ...

  3. ES6学习笔记二arrow functions 箭头函数、template string、destructuring

    接着上一篇的说. arrow functions 箭头函数 => 更便捷的函数声明 document.getElementById("click_1").onclick = ...

  4. 树莓派python交互界面实例_树莓派综合项目2:智能小车(二)tkinter图形界面控制...

    一.介绍 树莓派综合项目2:智能小车(一)四轮驱动中,实现了代码输入对四个电机的简单控制,本章将使用Python 的图形开发界面的库--Tkinter 模块(Tk 接口),编写本地运行的图形界面,控制 ...

  5. python key=lambda函数_使用’key’和lambda表达式的python max函数

    我来自OOP背景,尝试学习Python.我使用的是max函数,该函数使用lambda表达式返回Player类型的实例,其中players列表中的totalScore最大. def winner(): ...

  6. python query.filter函数_filter筛选函数_【曾贤志】用Python处理Excel数据 - 第1季 基础篇_Excel视频-51CTO学院...

    ---------------------------------------------------------------- 学完本课程可继续巩固篇:https://edu.51cto.com/c ...

  7. python设置笔大小的函数_小朋友们,你试过用Python语言绘制小猪佩奇吗?来完成你的第一个创作吧!...

    在上一章中,我们用海龟绘图绘制了机器猫的卡通图像.在本章中,我们介绍如何用海龟绘图来绘制小朋友们喜欢的另一个卡通形象--小猪佩奇. 1 程序分析 我们先来看一下小猪佩奇的样子,如图1所示. 图1 观察 ...

  8. python语音播报天气预报_树莓派之天气预报语音播报

    目录 树莓派之天气预报语音播报 方案选定 项目基调 需求分析 解决方案 具体实施 step1天气信息 安装ilang软件 json解析和文字组合 定时任务 树莓派之天气预报语音播报 前几天跟同事在聊家 ...

  9. python大神作品_掌握了这24个顶级Python库,你就是大神!

    全文共11815字,预计学习时长24分钟 Python有以下三个特点: · 易用性和灵活性 · 全行业高接受度:Python无疑是业界最流行的数据科学语言 · 用于数据科学的Python库的数量优势 ...

最新文章

  1. Jittor 的Op, Var算子
  2. 强化学习、联邦学习、图神经网络,飞桨全新工具组件详解
  3. 忘关烤箱了?我用 Python 和 OpenCV 来帮忙
  4. block 与 dispatch quene
  5. python爬虫什么网站都能爬吗_python如何爬取动态网站
  6. python读取二进制文件_如何用python读取二进制文件?
  7. Java语言所有异常类均继承自_Java将运行错误分为两类:(__)和(__), 其对应的类均派生自(__)类;...
  8. mysql时长用什么类型_MySQL 日期时间类型怎么选?千万不要乱用!
  9. opensource项目_来自Opensource.com的开放硬件资源
  10. ActionForm
  11. OpenSuSE 网络配置
  12. lepus监控oracle数据库_实用脚本一键监控oracle数据库索引使用状况
  13. java对象创建、对象内存布局、对象的访问定位、句柄池、直接指针
  14. PTA 判断上三角矩阵
  15. 操作系统-3.假设某多道程序设计系统中有供用户使用的内存100KB,打印机1台。系统采用可变分区方式管理内存:对打印机采用静态分配,并假设输入输出操作的时间忽略不计;采用最短剩余时间优先的进程调度算法
  16. Social Influence as Intrinsic Motivation for Multi-Agent Deep Reinforcement Learning-笔记
  17. 在线二进制转文本字符工具
  18. 字母易位词(anagram)
  19. 《连线》杂志主编Kevin Kelly 给年轻人的99条人生建议
  20. 联想服务器怎么接显示器,联想笔记本连接显示器 联想笔记本外接显示器怎么设置...

热门文章

  1. 第九章:连接数据库(learning julia 译)
  2. Rossenblatt感知器算法对鸢尾花进行分类
  3. java event事件_简单的Java Event-事件框架
  4. TTL 和 RS-232
  5. 学习CAD有哪些小技巧?怎么查看CAD图纸?
  6. 2018.7.8随想
  7. 前端面试题系列——css盒子模型
  8. easyconnect一直初始化无法连上问题
  9. 《数学物理方程》期末复习(华工)
  10. 壮美大山包-2017中国大山包国际超百公里ITRA积分赛赛记