注意,本教程移植microPython是通过烧写hex文件实现的,网上其他教程很多是介绍使用USB DFU方式(设备boot0至高电平,通过DfuSeDemo烧写),由于自己还不熟没有使用这种方式,后续有时间再尝试。
另外本教程是基于STM32F767ZI-NUCLEO开发板所写的,不过对于其他型号的开发板通用可以参考借鉴。
1.系统环境:
Ubuntu18.04, Windows10(
转换DFU文件一定要在win系统下操作,ST官方没有给出Linux版本软件
)
2.预备软件:
-
STSW-STM32080:https://www.st.com/en/development-tools/stsw-stm32080.html,即DfuSe,安装之后的文件如下
后面我们需要使用到DfuFileMgr.exe,将dfu文件抽取出hex文件以供烧写 -
STM32CubeProg:https://www.st.com/en/development-tools/stm32cubeprog.html, ST新出的烧录软件,功能强大,三平台通用,没错!Linux也可以使用(Linux下烧写hex,bin文件比较方便,stlink命令行就比较麻烦)
-
STM32CubeIDE
-
PUTTY,连接串口(microPython安装之后是通过串口来显示Python解释器的)
-
microPython DFU文件(每日构建版):https://micropython.org/download#other,官网提示非官方支持,不过也是可以用的
3. 具体步骤
3.1 dfu文件抽取hex
我们打开之前安装的软件
“C:\Program Files (x86)\STMicroelectronics\Software\DfuSe v3.0.6\Bin\DfuFileMgr.exe”
,
得到hex文件
3.2 烧写hex文件
得到hex文件之后就好办了,通过ST新出的STM32CubeProg软件进行烧写,下载安装后打开:
点击连接之后得到以下信息:
- ST Link版本
- 电压
-
地址
等相关信息。
选择hex文件进行烧录
烧录完成之后有以下警告和错误:
提示ST LINK连接错误,原因是烧写进去micropython之后已经自动转成虚拟串口了
4.执行测试microPython
经过前面的步骤已经成功将hex文件烧写进去flash了,下面我们测试一下microPython。
4.1 putty连接串口
设备管理器查看串口号(笔者为COM3),打开putty,设置波特率115200,端口号为COM3
4.2 测试microPython
putty连接串口之后会发现没有任何提示,我们
需要按一下开发板上的复位键
,接着就要解释器提示了:
microPython网上有很多教程,笔者也还没开始学,只是测试一下搭配环境,这里就以最简单的点灯程序进行测试:
实现的效果是可以控制LED灯翻转。
microPython中的pyb库还有很多种功能操作,不同的开发板对应的IO口也是不同的,这些需要仔细阅读官方的资料手册,笔者这里就不深入研究了
5. 擦除flash上的microPython固件
简单玩了一下microPython之后准备退出该固件,还是以普通方式使用cubeide进行烧写,此时就出现问题了,新建一个cubeide工程进行烧写,会出现以下错误提示:
用STM32CubeProg进行连接同样出现错误:
笔者测试出来的一种解决办法是在STM32CubeProg的ST Link连接选项中的Mode选项改为under reset,便可成功连接,接着擦除整个flash
擦除完之后就可以继续正常编译烧写程序了。
为了解更多硬核知识,请关注笔者[B站频道](https://www.bilibili.com/video/av64531527)