MicroPython技术细节(问题)总结¶
MicroPython线程问题(_thread)?¶
在标准的MicroPython固件不含有线程功能,用户强行使用线程功能,系统会抛出错误:
MicroPython v1.9.4-775-gf350b640a on 2019-02-18; PYBv1.1-YD407VG with STM32F407VG
Type "help()" for more information.
>>> import _thread
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: no module named '_thread'
>>>
>>>

我们修改了底层程序后生成的固件有包含了线程,不过线程的工作还是有诸多的缺陷,只能实现初级功能,这也是官方固件没有包含线程功能的原因吧!我们的标准固件也是不含线程功能的,带有线程功能的固件我们也会标出带线程的字样,烧写固件时请注意。固件可以向我们客服索要,我们的网店:
MicroPython大体的开发流程?¶
概述一下开发应用的大体形式和流程,将下载好μPython固件pyboard板子通过USB线联通电脑后,正常情况下,电脑会识别为一个U盘和一个串口,如果串口没有被识别,USB盘里有串口的驱动文件,加载即可。U盘中的boot.py为启动引导文件,main.py为用户程序文件,大部分的工作是在这个文件完成的.

MicroPython怎么使用串口中断?¶
在最新版的固件中可以使用串口中断了,使用例程:
from machine import UART
def UART_ISR(t):
print(u.read(u.any()))
return
u = UART(1)
u.init(baudrate, 9600)
u.irq(trigger = UART.IRQ_RXIDLE, handler = UART_ISR)
- 注意事项:
- 串口需要使用machine库的UART模块
- 设置串口参数和波特率
- 定义串口中断的触发方式和回调程序(中断程序),触发方式目前只能选择UART.IRQ_RXIDLE
- 串口回调函数必须带有伪参数
- 串口回调函数需要遵循回调函数的设计原则
MicroPython如何编程,烧写,调试?¶
简单到怀疑人生,可能用户之前有过嵌入开发的经历,大部分是使用C语言开发它是一种编译性语言,C语言需要使用IDE编写程序编译链接,然后下载(烧写)到芯片内,完成应用,现在使用Python语言,python是一种解释性语言,在用户拿到的pyboard(PYB,出厂固化底层Micropython固件)内部已经有了语言解释器了,用户只需要将板子插入电脑,电脑就会识别为U盘,在U盘中使用文字或者其他程序编写软件打开编程程序就行,所谓的下载就是点击保存。注意生成的U盘里有虚拟串口的驱动,安装后就可以使用虚拟串口了,使用串口调试软件可以进行对板子的控制,命令测试,像极了传统的python命令行交互,这种技术实现叫作REPL交互,在交互中可以排错,分段测试等等,简直回归到传统的python学习了。
pyborad板子无法使用串口REPL调试?¶
首先查看硬件管理器中是否有虚拟串口设备,如没有先安装驱动文件,在生成的U盘中有驱动,安装好后,在串口调试软件,应该有串口号,如果没有串口号,请关闭调试软件,板子重新上电,等上10s钟,再次打开调试软件,硬件和软件可能反应慢,如果不行多次尝试上述过程,波特率默认是115200,如果能打开串口没有打印信息,很可能是系统卡在了mian.py函数中的循环中了,打开U盘,修改一下程序(将while改为for循环),或者清空程序,保存,重新上电再次打开调试软件就行了.
MicroPython报错机制?¶
编写程序难免会出错,当你写好程序,保存时,不好给你提示错误的,怎么知道一行程序出错了?我建议一个是在编写main.py文件前,先用REPL分段调试验证程序,即使最终在main.py有错误,也会在串口调试窗口提示,这时要求你一直打开REPL串口调试就行了,对了,当你编写完main.py保存后,在串口调试窗口中按CTRL+D软启动,如果有错就打印出来信息了,通过提示信息进行修改。如果程序有错误也会通过LED1,LED2灯来回闪烁来提示。
MicroPython在线图像化编程软件?¶
为了更方便的入门,我们提供汉化后的国外开源图形化编程软件,以在线的形式提供。 在线MicroPython图形化编程地址
使用Pyboard板子保存完main.py后运行LED1和LE2接替闪烁?¶
说明main.py编程有错误,我们建议的编程顺序是:在main.py中编写程序时候,打开串口调试软件使用REPL交互编程 `REPL交互编程<http://vcc-gnd.com/rtd/html/pyboard/tutorial/repl.html>`_ 使用REPL的目的是: * 将程序分段在repl交互中验证是否有错误,没有错误后写入main.py中 * 全部程序在main.py完成后,在REPL中按CTRL+D软启动,如果main.py还有错误,将会在REPL中提示是什么错误,在第几行,这个功能很有用,如果没有错误就直接执行了。
MicroPython官方网站(官网)?¶
Pyboard(MicroPython)如何烧写固件?¶
非常容易,Pyboard(STM32)一台电脑,一条USB就能搞定,大体而言,boot引导启动,进入DFU模式,烧写固件,重新复位就行.固件可以向我们源地仪器索取,标准版本的也可以从官方下载。
MicroPython固件下载地址?¶
MicroPython虚拟串口驱动装不上无法设备串口怎么办?¶
解决方法:http://microchip.eefocus.com/module/forum/thread-6191-1-1.html
MicroPython使用SPI串口读取spi Flash(25x40b)ID号?¶
使用SP1接口,CS是PC4:
# main.py -- put your code here!
from pyb import SPI
from pyb import Pin
p_out = Pin('PC4', Pin.OUT_PP)
p_out.low()
spi = SPI(1, SPI.MASTER, baudrate=2000, polarity=0, phase=0,crc=0x7,bits=8,firstbit=SPI.MSB)
spi.send(0x9f) #发送固定指令,读取指令
data=spi.recv(2) #接收id号
p_out.high()
print (data)