学过单片机的同学应该清楚,我们在编写传感器驱动时,需要用到高精度的定时器、延时等功能,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. Tomcat 服务器的端口号的修改
  2. C#条件运算符if-else的简化格式
  3. PHPMailer目录和命名空间没有错,但是始终class not found,的原因和解决方法
  4. 今天看了风云II 后悔了
  5. 创邻科技张晨:智能物联为图数据库的迅速发展提供了良好应用场景
  6. Scikit-learn:scikit-learn快速教程及实例
  7. Atitit 常见集合的操作 dsl表达式 选择器 多属性条件检索 ,排序等 目录 1. Ognl 集合操作 1 2. /bookmarksHtmlEverythingIndexPrj/src/Li
  8. 计算机学生选课系统毕业论文,学生选课管理系统论文
  9. matlab求多元极大似然估计,matlab求极大似然估计
  10. 常见电商项目的数据库表设计(MySQL版)
  11. 数据结构学习之矩阵乘法与矩阵的转置
  12. 分享图片至Facebook与Twitter
  13. 数据库分片以及schema概念
  14. 测试人员如何区分前端和后台BUG方法流程
  15. deepin系统中.txt文件图标显示内容问题_深度操作系统 deepin V20(UOS)的10大优化操作
  16. CSR8670 — 说说蓝牙音频常用的编解码格式
  17. 1112day10:考前复习50题:断言
  18. 清亡之路(4):最受误解的东南互保
  19. AM335x启动流程(BootRom-MLO-Uboot)
  20. 【THUSC2017】【LOJ2977】巧克力 斯坦纳树

热门文章

  1. matlab——矩阵点乘,叉乘
  2. 数据结构学习-循环链表:处理约瑟夫环问题
  3. Linux OpenCV + zBar 实现二维码识别
  4. L1-034 点赞 (20 分)
  5. mptcp linux 升级,Ubuntu下配置MPTCP
  6. 【CAD二次开发】-ObjectARX-JIG 一拖多 (MultipleEntJig)
  7. maven 仓库下载地址
  8. Matlab:条件与循环
  9. C语言fgets函数读取行及文件全部内容
  10. VisualStudio 产生的.ipch文件可以删除吗?