原创 【ST开发板评测】使用Python来开发STM32F411

2019-6-4 22:54 36431 985 15 分类: MCU/ 嵌入式 文集: 开发板评测
前言

板子局部图

板子申请了也有一段时间了,也快到评测截止时间了,想着做点有意思的东西,正好前一段时间看到过可以在MCU上移植MicroPython的示例,就自己尝试一下,记录移植过程。

MicroPython是什么

程序猿中有句俗语:人生苦短,我用Python。Python的强大和易用性让它不仅可以写网站,编程序,在嵌入式领域也有一席之地。

MicroPython,是Python3编程语言的一个完整软件实现,包括Python标准库的一小部分,用C语言编写,经过优化可在微控制器和受限环境中运行。MicroPython是运行在微控制器硬件之上的完全的Python编译器和运行时系统。提供给用户一个交互式提示符(REPL)来立即执行所支持的命令。除了包括选定的核心Python库,MicroPython还包括了给予编程者访问低层硬件的模块。

  • MicroPython官方网站:MicroPython - Python for microcontrollers (http://www.micropython.org/

  • MicroPython中文社区:micropython - 中文社区(http://www.micropython.org.cn/bbs/ )

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(http://www.micropython.org/download

Nucleo-F411RE移植MicroPython固件

板子背面Nucleo标志

正好MicroPython支持本次申请的Nucleo-F411RE开发板,就试着把刷成MicroPython的固件,尝试一下使用Python来开发STM32,具体移植过程。

1.准备工作
  • 支持Nucleo-F411RE的MicroPython固件:NUCLEO_F411RE-20190604-v1.11-25-gce8262a16.dfu (http://www.micropython.org/resources/firmware/NUCLEO_F411RE-20190604-v1.11-25-gce8262a16.dfu
  • 用于STM32 DFU下载的软件:STSW_STM32080_V3.0.6.zip (https://comm.eefocus.com/media/download/index/id-1015890
  • PUTTY串口终端:putty-64bit-0.71-installer.msi (https://the.earth.li/~sgtatham/putty/0.71/w64/putty-64bit-0.71-installer.msi
2.安装Dfu下载软件

下载完成后,安装DFU下载软件DfuSeDemo,非常简单,一路Next就行,在选择安装目录时,可以选择非系统盘。

3.硬件连接

由于Nucleo-F411RE板子的USB口是连接到ST-Link调试器,并没有一个连接到STM32 USB引脚的接口,所以我使用的是这种转接板,把USB的5个信号转接成5个排针,并和板子上的引脚连接:

转接板开发板
VBUS3.3
D-PA11
D+PA12
IOGND
GNDGND
4.烧录MicroPython固件

和串口下载程序一样,使用DFU烧录固件前,也要先把STM32切换为系统存储器启动模式:即下载模式。上电之前要先设置BOOT0=1,BOOT1(PB2)=0,然后烧录MicroPython固件。

  • 设置完成之后,连接电脑,设备管理会出现一个DFU设备

  • 打开DfuSeDemo软件,选择已经下载的固件:NUCLEO_F411RE-20190604-v1.11-25-gce8262a16.dfu (http://www.micropython.org/resources/firmware/NUCLEO_F411RE-20190604-v1.11-25-gce8262a16.dfu

  • 点击Upgrade升级,在弹出的界面,点击“是”。

  • 等待升级完成,断电,把BOOT短接线拔掉,重新上电。

5.安装Putty

安装Putty,打开串口终端,选择ST-Link虚拟串口号,波特率115200

按一下板子上的黑色复位按键,串口输出:

MicroPython v1.11-12-g6077d1715 on 2019-06-03; NUCLEO-F411RE with STM32F411xE
Type "help()" for more information.
>>> help()
Welcome to MicroPython!

For online help please visit http://micropython.org/help/.

Quick overview of commands for the board:
  pyb.info()    -- print some general information
  pyb.delay(n)  -- wait for n milliseconds
  pyb.millis()  -- get number of milliseconds since hard reset
  pyb.Switch()  -- create a switch object
                   Switch methods: (), callback(f)
  pyb.LED(n)    -- create an LED object for LED n (n=1,2,3,4)
                   LED methods: on(), off(), toggle(), intensity()
  pyb.Pin(pin)  -- get a pin, eg pyb.Pin('X1')
  pyb.Pin(pin, m, [p]) -- get a pin and configure it for IO mode m, pull mode p
                   Pin methods: init(..), value([v]), high(), low()
  pyb.ExtInt(pin, m, p, callback) -- create an external interrupt object
  pyb.ADC(pin)  -- make an analog object from a pin
                   ADC methods: read(), read_timed(buf, freq)
  pyb.DAC(port) -- make a DAC object
                   DAC methods: triangle(freq), write(n), write_timed(buf, freq)
  pyb.RTC()     -- make an RTC object; methods: datetime([val])
  pyb.rng()     -- get a 30-bit hardware random number
  pyb.Servo(n)  -- create Servo object for servo n (n=1,2,3,4)
                   Servo methods: calibration(..), angle([x, [t]]), speed([x, [t                                                                                                             ]])
  pyb.Accel()   -- create an Accelerometer object
                   Accelerometer methods: x(), y(), z(), tilt(), filtered_xyz()

Pins are numbered X1-X12, X17-X22, Y1-Y12, or by their MCU name
Pin IO modes are: pyb.Pin.IN, pyb.Pin.OUT_PP, pyb.Pin.OUT_OD
Pin pull modes are: pyb.Pin.PULL_NONE, pyb.Pin.PULL_UP, pyb.Pin.PULL_DOWN
Additional serial bus objects: pyb.I2C(n), pyb.SPI(n), pyb.UART(n)

Control commands:
  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, do a soft reset of the board
  CTRL-E        -- on a blank line, enter paste mode

For further help on a specific object, type help(obj)
For a 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 (http://docs.micropython.org/en/latest/pyboard/quickref.html

参考资料
  • Micropython学习(二)STM32移植(https://blog.csdn.net/bobo184/article/details/84174990
我的博客文章链接:http://www.wangchaochao.top/2019/06/04/Nucleo-F411RE-2/

作者: whik, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-3887760.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

给作者打赏,鼓励TA抓紧创作!

赞赏支持
点赞 985
赞赏0

文章评论4条评论)

登录后参与讨论

Lgnited 2020-12-18 09:36

值得学习python开发嵌入式产品吗?

pidaneng 2020-9-3 22:31

不错。

泥人 2019-7-18 11:55

使用的人多吗?

curton 2019-6-5 20:50

很好很强大
相关推荐阅读
whik 2022-10-08 23:26
【技术笔记】高云FPGA学习笔记6——ARM点灯工程设计
【技术笔记】高云FPGA学习笔记6——ARM点灯工程设计本文是高云FPGA学习笔记系列的第6篇文章,首发于面包板社区:【技术笔记】高云FPGA学习笔记1——TangNano 4K开发板简介【技术笔记】...
whik 2022-10-06 20:42
【技术笔记】高云FPGA学习笔记5——片上逻辑分析仪GAO的使用
本文是高云FPGA学习笔记系列的第5篇文章,首发于面包板社区:【技术笔记】高云FPGA学习笔记1——TangNano 4K开发板简介【技术笔记】高云FPGA学习笔记2——FPGA和ARM开发环境搭建【...
whik 2022-10-02 22:44
【技术笔记】高云FPGA学习笔记4——基本IP原语使用和仿真
本文是高云FPGA学习笔记系列的第4篇文章,首发于面包板社区:【技术笔记】高云FPGA学习笔记1——TangNano 4K开发板简介【技术笔记】高云FPGA学习笔记2——FPGA和ARM开发环境搭建【...
whik 2022-09-28 22:42
【技术笔记】高云FPGA学习笔记3——FPGA点灯工程创建、下载和固化
本文是高云FPGA学习笔记系列的第3篇文章,首发于面包板社区: 【技术笔记】高云FPGA学习笔记1——TangNano 4K开发板简介 【技术笔记】高云FPGA学习笔记2——FPGA和ARM开...
whik 2022-09-26 23:05
【技术笔记】高云FPGA学习笔记2——FPGA和ARM开发环境搭建
上一篇文章分享了基于高云FPGA的开发板——TangNano 4K,介绍了开发板的硬件资源以及高云FPGA的特性,文末提到高云的FPGA还不支持SerDes高速串行接口,今天(09-26)高云半导体官...
whik 2022-09-25 23:01
【技术笔记】高云FPGA学习笔记1——TangNano 4K开发板简介
标题1:不足百元的国产FPGA开发板,集成ARM Cortex-M3硬核!标题2:国产FPGA开发板上手体验:6x6mm的FPGA芯片还带ARM硬核!之前参与了面包板社区组织的国产替代话题活动,我发表...
我要评论
4
985
1
2
3
4
5
6
7
8
9
0
关闭 热点推荐上一条 /4 下一条