学习内容
pyb的一些简单操作。熟悉micropython在pyb上面的应用
开发环境
putty、PYB nano
MocroPython的启动模式
在启动后,MicroPython会先运行 boot.py 文件,加载用户驱动,然后在运行main.py,执行用户程序。可以将用户程序放在main.py中,也可以在main.py中再加载其它的文件。
常见故障
在使用过程中,我们需要注意下面问题,避免造成文件系统破坏、数据丢失。
取下数据线前,需要先U盘那样安全删除硬件,弹出PYBFLASH磁盘,否则可能会造成文件系统破坏,特别在修改了文件或复制新文件到PYBFLASH磁盘后。
不要轻易按复位键,这样会造成当前的USB通讯中断。一般的问题,可以通过按下Ctrl-D软复位接近。
出厂模式
使用时间长了,因为各种原因可能会出现故障,造成无法正常启动,不能进入REPL,文件系统破坏等现象,这时就需要通过出厂模式进行恢复。
进入出厂模式的方法是:
按下复位键(RESET)的同时,按住用户按键SW。
然后保持用户按键不放,释放复位键。
这时LED将循环显示:绿-》黄-》绿+黄-》灭
等黄绿灯同时亮时,松开用户键,这时黄绿灯会同时快速闪4次
然后红灯亮起(这时红绿黄三个灯同时亮)
红灯灭,开始进行恢复到出厂状态
所有灯都灭,恢复出厂设置完成。
恢复出厂设置后,PYBFLASH中的内容会丢失,变为默认文件。
升级固件
MicroPython的更新速度很快,每次更新都会带来一些新的功能,修正错误。所以掌握 MicroPython 的固件升级方法是有必要的。
PYB Nano支持下面几种升级方法:
通过DFU模式升级 通过SWD方式升级
使用DFU模式,需要安装ST的DfuSe_demo软件(Windows)或者dfu-util(Linux)。使用SWD需要将开发板的SWD接口(PA13/PA14)连接到编程器,通过编程软件下载。
REPL 的用法
通常调试程序时,都是在 MicroPython 的 REPL (read–eval–print loop,循环交互解释器)环境下运行。在REPL下可以直接输入命令,有内置的解释器执行。如果命令输入正常,就会显示运行结果,否则会给出错误提示。
MicroPython支持几个常用的快捷键,如果你熟悉串口终端,会发现它们的习惯是一样的。
- Ctrl-C,停止正在的程序或终止当前的命令行
- Ctrl-D,软复位(soft reset)
- Ctrl-B,显示系统提示
- Ctrl-E,进入粘贴模式。可以按下Ctrl-C退出粘贴模式,Ctrl-D完成粘贴
- Tab,键盘上的Tab键,可以补全命令
- 除了Ctrl-C,其它快捷键需要在空命令行下(没有输入任何字符)才能生效。此外,还可以使用上下左右光标键
- 上下键,调出以前输入的命令。MicroPython可以保存最后输入的6条命令
- 左右键,在当前命令行中移动,编辑命令
配置终端
MicroPython和PC的标准连接是通过USB接口,使用虚拟磁盘和虚拟串口(VCP)方式。其中虚拟串口(在pyboard和STM32上可以同时使用USB虚拟串口和物理串口两种方式)是调试中最常用的方式,无须频繁复制文件避免造成Flash的损耗。在MicroPython上我们使用串口终端软件和MicroPython的REPL进行交互,发送命令。通过串口终端软件,我们可以方便地在 REPL 中输入代码,运行和调试程序,打印结果。开发MicroPython程序时,掌握终
端软件的使用是非常有必要的,注意不要使用Windows下的串口调试助手、串口精灵这样的软件,因为它们只适合一般的串口调试,发送数据,但是不方便输入命令,不支持粘贴功能,不能和REPL进行交互操作。
这里我用的是putty
配置过程接很简单,首先打开设备管理器:
这里可以看到对应PYB板子的串口,我们只需要在PUTTY打开这个串口终端即可。
这里我的串口是COM20 波特率是115200,记得选择serial。当然为了方便大家可以把这个COM存起来。
大功告成!现在只需要打开对应的端口即可使用,效果如图:
当然我们也可以在我的电脑板子上的文件:
下面就简单操作下板载的函数熟悉下操作吧~
PYB库函数操作
1.点灯工程师~(点亮,关闭,翻转,闪烁)
首先要说明的是可以在终端进行代码操作,也可以将代码输入main.py中,在终端中输入的将不会保存,而在main.py中输入后,保存后按下Ctrl+D后,实现软件复位。将会看到编写的代码实现的操作。
import pyb # 点亮操作 pyb.LED(1).on() #点亮 LED1 pyb.LED(2).on() #点亮 LED2 pyb.LED(3).on() #点亮 LED3 pyb.LED(4).on() #点亮 LED4 # 关闭操作 pyb.LED(1).off() #关闭 LED1 pyb.LED(2).off() #关闭 LED2 # 翻转操作 pyb.LED(1).toggle() #翻转 LED1 #闪烁操作 while True: pyb.LED(1).toggle() #翻转 LED1 pyb.delay(200) #延时200ms
除了打开、关闭、翻转功能外,部分 LED 还可以控制亮度。在PYB上,LED3和LED4支持亮度调整功能,如可以这样控制LED3的亮度:
import pyb pyb.LED(3).intensity(10)
亮度的范围为0~255,0最暗(关闭),255最亮。对于那些不支持亮度功能的LED,在设置亮度时,0是关,大于0就是开。
LED.intensity([value])
读取或者设置LED亮度。亮度的范围是0(熄灭)到255(最亮)。
注意:只有LED(3)和LED(4)支持亮度调节功能,它们使用定时器的PWM方式来控制LED的亮度。LED(3)使用定时器2,LED(4)使用定时器3(如果改变了定时器2/3的参数,亮度调整功能会受到影响)。只有在使用了LED.intensity()功能,并且参数在1~254之间时定时器才会自动配置为PWM模式。
1.1跑马灯
import pyb leds =[pyb.LED(i) for i in range(1,5)] #定义led n=0 while True: n = (n+1)%4 leds[n].on() pyb.delay(200) leds[n].off()
1.2.往返式跑马灯
import pyb n=1 dn=1 while True: pyb.LED(n).toggle() pyb.delay(200) pyb.LED(n).toggle() n=n+dn if (n>3)or(n<2): dn=-dn;#改变方向
2.按键的操作
2.1 读取按键键值
import pyb sw = pyb.Switch() #定义按键对象 print(sw()) #读取按键状态
如果按下了按键,就返回True,否则返回False。我们还可以定义一个按键的回调函数(类似C语言里的中断函数),当按下按键时将自动执行这个回调函数。下面定义的回调函数中,每当按下一次按键,就将翻转一次LED1。