注意,本教程移植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)
   
     
   
    
    
     
   
 
