stm32⽤python编程_使⽤Python来开发STM32F411!MicroPython是什么
程序猿中有句俗语:
⼈⽣苦短,我⽤Python。
Python的强⼤和易⽤性让它不仅可以写⽹站,编程序,在嵌⼊式领域也有⼀席之地。
MicroPython,是Python3编程语⾔的⼀个完整软件实现,包括Python标准库的⼀⼩部分,⽤C语⾔编写,经过优化可在微控制器和受限环境中运⾏。MicroPython是运⾏在微控制器硬件之上的完全的Python编译器和运⾏时系统。提供给⽤户⼀个交互式提⽰符(REPL)来⽴即执⾏所⽀持的命令。除了包括选定的核⼼Python库,MicroPython还包括了给予编程者访问低层硬件的模块。
MicroPython官⽅⽹站:MicroPython - Python for microcontrollers
MicroPython中⽂社区:micropython - 中⽂社区
MicroPython⽀持的开发板
从官⽅⽹站我们可以了解到,官⽅开发板主要有以下⼏种:
PYB Nano V1.1基于STM32F401
PYB Nano V2基于STM32F411
PyBoard CN V2基于STM32F405
MicroPython ESP32
另外还⽀持其他系列的开发板:
WiPy
ESP8266 boards
ESP32 boards
STM32F4 Discovery board
NUCLEO-F401RE board
NUCLEO-F411RE board
NUCLEO-F767ZI board
NUCLEO-L476RG board
Espruino Pico
Nucleo-F411RE移植MicroPython固件
正好MicroPython⽀持本次申请的Nucleo-F411RE开发板,就试着把刷成MicroPython的固件,尝试⼀下使⽤Python来开发STM32,具体移植过程。
1.准备⼯作
⽀持Nucleo-F411RE的MicroPython固件:NUCLEO_F411RE-20190604-v1.11-25-gce8262a16.dfu
⽤于STM32 DFU下载的软件:STSWSTM32080V3.0.6.zip
PUTTY串⼝终端:putty-64bit-0.71-installer.msi
2.安装Dfu下载软件
下载完成后,安装DFU下载软件DfuSeDemo,⾮常简单,⼀路Next就⾏,在选择安装⽬录时,可以选择⾮系统盘。
3.硬件连接
由于Nucleo-F411RE板⼦的USB⼝是连接到ST-Link调试器,并没有⼀个连接到STM32 USB引脚的接⼝,所以我使⽤的是这种转接板,把USB的5个信号转接成5个排针,并和板⼦上的引脚连接:
4.烧录MicroPython固件
和串⼝下载程序⼀样,使⽤DFU烧录固件前,也要先把STM32切换为系统存储器启动模式:即下载模式。上电之前要先设置
BOOT0=1,BOOT1(PB2)=0,然后烧录MicroPython固件。
设置完成之后,连接电脑,设备管理会出现⼀个DFU设备
打开DfuSeDemo软件,选择已经下载的固件:NUCLEO_F411RE-20190604-v1.11-25-gce8262a16.dfu
点击Upgrade升级,在弹出的界⾯,点击“是”。
等待升级完成,断电,把BOOT短接线拔掉,重新上电。
5.安装Putty
安装Putty,打开串⼝终端,选择ST-Link虚拟串⼝号,波特率115200
按⼀下板⼦上的⿊⾊复位按键,串⼝输出:
MicroPythonv1.11-12-g6077d1715 on2019-06-03;NUCLEO-F411REwithSTM32F411xE
Type"help()"formore information.
>>>help()
WelcometoMicroPython!
Quickoverview of commandsforthe board:
pyb.info()--printsome general information
pyb.delay(n)--waitforn milliseconds
pyb.millis()--getnumber of milliseconds since hard reset
pyb.Switch()--create aswitchobject
Switchmethods:(),callback(f)
pyb.LED(n)--create an LEDobjectforLED n(n=1,2,3,4)
LED methods:on(),off(),toggle(),intensity()
pyb.Pin(pin)--geta pin,eg pyb.Pin('X1')
pyb.Pin(pin,m,[p])--geta pinandconfigure itforIO mode m,pull mode p
Pinmethods:init(..),value([v]),high(),low()
pyb.ExtInt(pin,m,p,callback)--create an external interruptobject
pyb.ADC(pin)--make an analogobjectfroma pin
ADC methods:read(),read_timed(buf,freq)
pyb.DAC(port)--make a DACobject
DAC methods:triangle(freq),write(n),write_timed(buf,freq)
能运行python的软件pyb.RTC()--make an RTCobject;methods:datetime([val])
<()--geta30-bit hardware random number
pyb.Servo(n)--createServoobjectforservo n(n=1,2,3,4)
Servomethods:calibration(..),angle([x,[t]]),speed([x,[t]])
pyb.Accel()--create anAccelerometerobject
Accelerometermethods:x(),y(),z(),tilt(),filtered_xyz()
Pinsare numbered X1-X12,X17-X22,Y1-Y12,orbytheir MCU name
PinIO modes are:pyb.Pin.IN,pyb.Pin.OUT_PP,pyb.Pin.OUT_OD
Pinpull modes are:pyb.Pin.PULL_NONE,pyb.Pin.PULL_UP,pyb.Pin.PULL_DOWN
Additionalserial bus objects:pyb.I2C(n),pyb.SPI(n),pyb.UART(n)
Controlcommands:
CTRL-A--on a blank line,enter raw REPL mode
CTRL-B--on a blank line,enter normal REPL mode
CTRL-C--interrupt a running program
CTRL-D--on a blank line,doa soft reset of the board
CTRL-E--on a blank line,enter paste mode
Forfurther help on a specificobject,type help(obj)
Fora list of available modules,type help('modules')
>>>
6.开始Python开发之旅——点亮⼀个LED
点亮板载的绿⾊LED,串⼝输⼊命令点亮和熄灭LED
>>>pyb.LED(1).on()
>>>pyb.LED(1).off()
>>>pyb.LED(1).on()
>>>
更多Python控制外设的命令:Quick reference for the pyboard:
⼀些问题
官⽅介绍移植成功之后,会在电脑上显⽰⼀个PYBFLASH的盘符,但是我这次移植并没有出现,不知道是什么问题。参考资料
Micropython学习(⼆)STM32移植:
本⽂授权转载⾃“电⼦电路开发学习”,作者wcc149
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论