测试MM32F3277中的MicroPython的Signal功能
简 介: 通过对这个版本MicroPython中的Signal功能进行测试,可以看到它现在还存在问题。后来经过SuYong修正之后,问题解决了。
关键词
: MicroPython,MM32,Signal
Contents
§01 MicroPython
Signal功能
一、为何使用Signal?
根据 MicroPython Signal 中的定义,定义Signal是对于Pin的逻辑功能进行自然的延拓。通过它附加是否对实际逻辑进行反向与否,可以将具体管脚的高电平或者低电平定义为on,off,asserted, dissasserted等。从而在逻辑上将控制与实际的物理量分离。
下面是通过dir(machine)实时的结果。
['__name__', 'ADC', 'DAC', 'ENC', 'PWM', 'Pin', 'SDCard', 'SPI', 'Signal', 'SoftI2C', 'SoftSPI', 'Timer', 'UART', 'freq', 'mem16', 'mem32', 'mem8']
1、控制LED
比如下面两种MCU控制LED的方案中,如果直接使用Pin来控制,则需要分别使用:led_pin(1), led_pin(0)来点亮LED。
▲ 图1.1 MCU控制LED点亮与熄灭
如果在定义了led_pin之后,再使用Signal定义两个Signal变量,分别利用设置属性invert,便可以通过Signal的on() 来点亮LED了。
# Suppose you have an active-high LED on pin 0
led1_pin = Pin(0, Pin.OUT)
# ... and active-low LED on pin 1
led2_pin = Pin(1, Pin.OUT)# Now to light up both of them using Pin class, you'll need to set
# them to different values
led1_pin.value(1)
led2_pin.value(0)# Signal class allows to abstract away active-high/active-low
# difference
led1 = Signal(led1_pin, invert=False)
led2 = Signal(led2_pin, invert=True)# Now lighting up them looks the same
led1.value(1)
led2.value(1)# Even better:
led1.on()
led2.on()
2、何时使用Signal?
(1)使用Signal
- 控制简单的on/off的动作(包括SoftPWM),比如LED,多段指示器,继电器,蜂鸣器;
- 读入简单二进制传感器,比如按钮,拉高,或者置低;干簧管,湿度/火焰irgjqi dg .
总体上,如经过你对实际的物理器件、传感器进行GPIO访问的时候,适合使用Signal。
(2)使用Pin
如果使用高电平协议,或者总线与其它复杂器件通信的时候,比如 One-Wires 通讯设备,这类直接应用bit-banging方式通讯应用场合,适合直接使用Pin的功能。
3、使用Signal
应用Signal可以屏蔽了具体的物理层面中对于实际active-high, active-low的区分,可以最大长度使得你的MicroPython程序可以适应于绝大部分的硬件电路板,而不至于仅仅由于LED,Button,Relay的外部的驱动方式不同而使得应用程序表现不同。
二、测试Signal
1、控制LED
下面程序,对于PB2控制的LED(active-high)进行周期闪烁。
from machine import Pin,Signal
import utimeled_pin = Pin('PB2', Pin.OUT_PUSHPULL)
led = Signal(led_pin, invert=False)print('Test Signal..')while True:led_pin(1)utime.sleep_ms(100)led_pin(0)utime.sleep_ms(100)
上面版本中,显示演示了,直接使用led_pin的函数来控制LED的闪烁。
▲ 图1.2.1 LED在led pin控制下闪烁
修改成信号量Signal量led.on(), led.off() 之后进行控制:
while True:led.on()utime.sleep_ms(100)led.off()utime.sleep_ms(100)
但是LED并没有动作,这说明在昨天实现的Signal中还存在问题。
▲ 图1.2.2 LED在led.on(), led.off()控制下并没有动作
※ 测试结论 ※
通过对这个版本MicroPython中的Signal功能进行测试,可以看到它现在还存在问题。
一个小时后,SuYong根据问题解决了移植版本中的隐层的问题。 在mm32f3270上为MicroPython启用Signal模块 。测试之后,可以通过Signal进行Pin的控制了。
■ 相关文献链接:
- MicroPython Signal
- ESP32 One-Wire驱动功能
● 相关图表链接:
- 图1.1 MCU控制LED点亮与熄灭
- 图1.2.1 LED在led pin控制下闪烁
- 图1.2.2 LED在led.on(), led.off()控制下并没有动作
测试MM32F3277中的MicroPython的Signal功能相关推荐
- 为什么在MM32中的MicroPython中无法打开二进制文件呢?
简 介: 对于在MM32F3277的MicroPython下, 对于SD卡中的文件按照二进制方式进行读写进行测试,发现MicroPython下无法支持对于二进制文件的操作.根据现在这种测试,需要找到具 ...
- SAP MM IV中的Duplicated Invoice Check功能的测试
SAP MM IV中的Duplicated Invoice Check功能的测试 进入如下界面: 比如1000公司代码下我勾选了Check Company Code和Check Reference标记 ...
- 测试管理中的一个问题—功能点覆盖还是功能测试点覆盖
功能点覆盖是在测试工作中经常提到的一个东西, 很多测试人员为了对功能点进行覆盖费劲了心思,可惜的是当他们将达到功能点覆盖100%的,系统,仍然不断出现问题,于是领导的责备,用户的冷眼,开发人员的讥讽就 ...
- 汇编语言: 从键盘上输入一串字符(用回车键结束,使用 10 号功能调用。)放在 STRING 中,试 编制一个程序测试字符串中是否存在数字。如有,则把 CL 的第 5 位置 1,否则将该位置置 0。
从键盘上输入一串字符(用回车键结束,使用 10 号功能调用.)放在 STRING 中,试 编制一个程序测试字符串中是否存在数字.如有,则把 CL 的第 5 位置 1,否则将该位置置 0. data s ...
- 编写一个用户类(Sysuser),属性包括用户名、真实姓名、年龄、出生日期、密码,类方法中包含单独修改用户年龄、判断用户名和密码、显示用户信息功能,在用户测试类中(TestSysuser),根据用户输
#本关任务: 编写一个用户类(Sysuser),属性包括用户名.真实姓名.年龄.出生日期.密码,类方法中包含单独修改用户年龄.判断用户名和密码.显示用户信息功能,在用户测试类中(TestSysuser ...
- 调试来自于逐飞的MM32F3277移植有MicroPython开发板
简 介: 对于从逐飞寄送的MicroPython开发板进行初步测试,建立了基于REPL进行交互式开发的环境. 关键词: MicroPython,MM32,Thonny #mermaid-svg-BUT ...
- 测试中如何管理外包质量_如何从测试自动化中实现价值
如果几年前,质量管理部门都试图通过ROI指标来证明对测试的投资是合理的,那么现在情况发生了变化,是时候重新审视这个问题了.当实施连续测试,并且每天在不同的环境下以不同的角色运行多次测试自动化时,由于测 ...
- 软件测试用python一般用来做什么-如何将Python应用到实际测试工作中?
基础问题(学员的问题) 学员问题第一类"Python的应用" (1)如何将Python运用到实际测试工作中,Python自动化能做哪些方面的自动化 (2)怎么利用python进行自 ...
- 测试设计中需要考虑的22种测试类型
测试设计中需要考虑的22种测试类型 测试设计中需要考虑的22种测试类型 纪玉春 来自21CMM 黑盒测试:不基于内部设计和代码的任何知识,而是基于需求和功能性. 白盒测试:基于一个应用代码的内部逻辑知 ...
最新文章
- 京东Vue组件库NutUI 2.0发布:将支持跨平台!
- 16道嵌入式C语言面试题(经典) 预处理器(Preprocessor)
- Spring Cloud——基于Dubbo的分布式Session解决方案
- 2020下半年新机最新消息_三星小米华为苹果纷纷曝光高端机,这么多你选择谁?...
- LoadRunner11-遇到问题及解决办法
- @getMapping与@postMapping
- cad镂空图案切割_贺卡纸张卡片激光镂空雕花设备 激光打标机
- window7 修改docker安装的machine 位置
- eclipse如何显示行数
- POI 读取 Excel 文件(2003版本与2007版本的差异之处)
- sogou rank查询接口
- 模拟CMOS集成电路设计中的电流镜及用Cadence Virtuoso IC617设计并仿真有关电路
- 贪心科技机器学习训练营(七)
- Dovecot 邮件假删除、回收站功能 (使用lazy-expunge插件)
- Windows驱动的加载顺序
- ★如何提高睡眠质量?
- 莫纳什大学计算机专业研究生在哪个校区,盘点莫纳什大学2019年计算机类硕士课程...
- 程序执行报错Missing Connection or ConnectionString 解决方法
- arcgis栅格数据平滑_ArcGIS教程:基于ArcGIS的栅格图像平滑处理
- 思科 计算机网络 第4章测试考试 答案