使用 Python 来开发 STM32F411 !

发布时间:2020-5-11 17:11    发布者:嵌入式人生17
使用 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
§
MicroPython移植和板子关系不大,主要支持的是芯片,如果自己的板子芯片是上面的这些型号,也可以刷MicroPython固件,对应的IO口需要更改,而且需要重新编译生成对应的固件。具体操作方法可以查看:官方Github地址:https://github.com/micropython/micropython,里面包括了源代码和Linux下的编译方法。开发板固件下载:MicroPython downloads
Nucleo-F411RE移植MicroPython固件
file:///C:\Users\Administrator.WIN-STED6B9V5UI\AppData\Local\Temp\ksohtml16188\wps1.png
正好MicroPython支持本次申请的Nucleo-F411RE开发板,就试着把刷成MicroPython的固件,尝试一下使用Python来开发STM32,具体移植过程。
1.准备工作
§
支持Nucleo-F411REMicroPython固件: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个排针,并和板子上的引脚连接:
file:///C:\Users\Administrator.WIN-STED6B9V5UI\AppData\Local\Temp\ksohtml16188\wps2.png
file:///C:\Users\Administrator.WIN-STED6B9V5UI\AppData\Local\Temp\ksohtml16188\wps3.png
4.烧录MicroPython固件
和串口下载程序一样,使用DFU烧录固件前,也要先把STM32切换为系统存储器启动模式:即下载模式。上电之前要先设置BOOT0=1,BOOT1(PB2)=0,然后烧录MicroPython固件。
§
设置完成之后,连接电脑,设备管理会出现一个DFU设备
§
file:///C:\Users\Administrator.WIN-STED6B9V5UI\AppData\Local\Temp\ksohtml16188\wps4.png
§
打开DfuSeDemo软件,选择已经下载的固件:NUCLEO_F411RE-20190604-v1.11-25-gce8262a16.dfu
§
file:///C:\Users\Administrator.WIN-STED6B9V5UI\AppData\Local\Temp\ksohtml16188\wps5.png
§
点击Upgrade升级,在弹出的界面,点击
§
file:///C:\Users\Administrator.WIN-STED6B9V5UI\AppData\Local\Temp\ksohtml16188\wps6.png
§
等待升级完成,断电,把BOOT短接线拔掉,重新上电。
§
file:///C:\Users\Administrator.WIN-STED6B9V5UI\AppData\Local\Temp\ksohtml16188\wps7.png
5.安装Putty
安装Putty,打开串口终端,选择ST-Link虚拟串口号,波特率115200
file:///C:\Users\Administrator.WIN-STED6B9V5UI\AppData\Local\Temp\ksohtml16188\wps8.png
按一下板子上的黑色复位按键,串口输出:
00001.
MicroPython v1.11-12-g6077d1715 on 2019-06-03; NUCLEO-F411RE with STM32F411xE
00002.
00003.
Type "help()" for more information.
00004.
00005.
>>> help()
00006.
00007.
Welcome to MicroPython!
00008.
00009.
00010.
00011.
For online help please visit http://micropython.org/help/.
00012.
00013.
00014.
00015.
Quick overview of commands for the board:
00016.
00017.
pyb.info() -- print some general information
00018.
00019.
pyb.delay(n) -- wait for n milliseconds
00020.
00021.
pyb.millis() -- get number of milliseconds since hard reset
00022.
00023.
pyb.Switch() -- create a switch object
00024.
00025.
Switch methods: (), callback(f)
00026.
00027.
pyb.LED(n) -- create an LED object for LED n (n=1,2,3,4)
00028.
00029.
LED methods: on(), off(), toggle(), intensity()
00030.
00031.
pyb.Pin(pin) -- get a pin, eg pyb.Pin('X1')
00032.
00033.
pyb.Pin(pin, m, [p]) -- get a pin and configure it for IO mode m, pull mode p
00034.
00035.
Pin methods: init(..), value([v]), high(), low()
00036.
00037.
pyb.ExtInt(pin, m, p, callback) -- create an external interrupt object
00038.
00039.
pyb.ADC(pin) -- make an analog object from a pin
00040.
00041.
ADC methods: read(), read_timed(buf, freq)
00042.
00043.
pyb.DAC(port) -- make a DAC object
00044.
00045.
DAC methods: triangle(freq), write(n), write_timed(buf, freq)
00046.
00047.
pyb.RTC() -- make an RTC object; methods: datetime([val])
00048.
00049.
pyb.rng() -- get a 30-bit hardware random number
00050.
00051.
pyb.Servo(n) -- create Servo object for servo n (n=1,2,3,4)
00052.
00053.
Servo methods: calibration(..), angle([x, [t]]), speed([x, [t ]])
00054.
00055.
pyb.Accel() -- create an Accelerometer object
00056.
00057.
Accelerometer methods: x(), y(), z(), tilt(), filtered_xyz()
00058.
00059.
00060.
00061.
Pins are numbered X1-X12, X17-X22, Y1-Y12, or by their MCU name
00062.
00063.
Pin IO modes are: pyb.Pin.IN, pyb.Pin.OUT_PP, pyb.Pin.OUT_OD
00064.
00065.
Pin pull modes are: pyb.Pin.PULL_NONE, pyb.Pin.PULL_UP, pyb.Pin.PULL_DOWN
00066.
00067.
Additional serial bus objects: pyb.I2C(n), pyb.SPI(n), pyb.UART(n)
00068.
00069.
00070.
00071.
Control commands:
00072.
00073.
CTRL-A -- on a blank line, enter raw REPL mode
00074.
00075.
CTRL-B -- on a blank line, enter normal REPL mode
00076.
00077.
CTRL-C -- interrupt a running program
00078.
00079.
CTRL-D -- on a blank line, do a soft reset of the board
00080.
00081.
CTRL-E -- on a blank line, enter paste mode
00082.
00083.
00084.
00085.
For further help on a specific object, type help(obj)
00086.
00087.
For a list of available modules, type help('modules')
00088.
00089.
>>>
00090.
6.开始Python开发之旅——点亮一个LED
点亮板载的绿色LED,串口输入命令点亮和熄灭LED
00001.
>>> pyb.LED(1).on()
00002.
00003.
>>> pyb.LED(1).off()
00004.
00005.
>>> pyb.LED(1).on()
00006.
00007.
>>>
00008.
更多Python控制外设的命令:Quick reference for the pyboard:
http://docs.micropython.org/en/latest/pyboard/quickref.html
一些问题
官方介绍移植成功之后,会在电脑上显示一个PYBFLASH的盘符,但是我这次移植并没有出现,不知道是什么问题。
参考资料
§
Micropython学习(二)STM32移植:
§

本文地址:https://www.eechina.com/thread-588309-1-1.html     【打印本页】

本站部分文章为转载或网友发布,目的在于传递和分享信息,并不代表本网赞同其观点和对其真实性负责;文章版权归原作者及原出处所有,如涉及作品内容、版权和其它问题,我们将根据著作权人的要求,第一时间更正或删除。
您需要登录后才可以发表评论 登录 | 立即注册

厂商推荐

  • Microchip视频专区
  • 深度体验Microchip自动辅助驾驶应用方案——2025巡展开启报名!
  • 想要避免发生灾难,就用MPLAB SiC电源仿真器!
  • 你仿真过吗?使用免费的MPLAB Mindi模拟仿真器降低设计风险
  • 更佳设计的解决方案——Microchip模拟开发生态系统
  • 贸泽电子(Mouser)专区
关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表