MicroPython是近年来非常火热的开源项目,它是英国剑桥大学教授Damien George发明,可以在嵌入式系统中使用python语言进行编程,降低了用户使用的难度,让一般的用户也可以快速使用,开发者不用在关注硬件的底层,可以将更多精力放在主要功能和算法上。MicroPython让嵌入式编程变得充满乐趣,不再是枯燥的各种函数调用和代码调试,它比Arduino功能更强,使用更方便。关于MicroPython的介绍,大家可以到网上搜索,也可以去MicroPython中文社区看看,这里就不重复了。
MicroPython可以在多个平台上运行,如STM32F4/STM32L4/STM32F7、CC3200、ESP8266、XMC4700、dsPIC33等,官方也提供了许多移植好的模板和编译好的固件,但是还没有提供NUCLEO_F767ZI。所以要在NUCLEO_F767ZI上跑MicroPython,就需要自己修改和编译。官方已经提供了STM32F7DISC开发板的支持,它使用了STM32F746ZG控制器,和NUCLEO_F767ZI上的STM32F767ZI很接近,所以我们从STM32F7DISC开发板的模板开始。首先要下载MicroPython的源码,最新稳定版本的下载地址是:
http://micropython.org/resources/micropython-master.zip
当然也可以在github上下载开发板源码,作者更新很快,基本每天都会更新。如果从github上下载,推荐使用git软件克隆,这样可以随时和官方代码同步。
https://github.com/micropython/micropython
下载源码后,展开到一个目录,然后进入/stmal/board目录,新建一个NUCLEO_F767ZI目录,并将STM32F7DISC目录下的文件复制过来。
先打开文件stm32f7xx_hal_conf.h,将 #define HSE_VALUE 后的数字从25000000改为8000000。因为NUCLEO_F767ZI上使用的时钟频率是8MHz。
再打开文件mpconfigboard.h,修改部分配置,主要修改内容有(只列出主要部分):
#define MICROPY_HW_BOARD_NAME "NUCLEO_F767ZI"
#define MICROPY_HW_MCU_NAME "STM32F767"
#define MICROPY_HW_HAS_SDCARD (0)
#define MICROPY_HW_CLK_PLLM (8)
#define MICROPY_HW_UART3_PORT (GPIOD)
#define MICROPY_HW_UART3_PINS (GPIO_PIN_8 | GPIO_PIN_9)
#define MICROPY_HW_UART_REPL PYB_UART_3
#define MICROPY_HW_I2C4_SCL (pin_F14)
#define MICROPY_HW_I2C4_SDA (pin_F15)
#define MICROPY_HW_USRSW_PIN (pin_C13)
#define MICROPY_HW_LED1 (pin_B0) // green
#define MICROPY_HW_LED2 (pin_B7) // blue
#define MICROPY_HW_LED3 (pin_B14) // red
编译源码前,需要安装arm-none-eabi-gcc编译器,编译器在https://launchpad.net/gcc-arm-embedded,大家可以根据自己的操作系统选择合适的版本安装。
安装编译器后,就可以在stmhal目录下,输入make进行编译了。在windows下,如果没有安装过make,还需要安装msys或者其他带有make工具的环境。推荐在Linux下编译代码,因为编译速度比Windows下快很多。如果在widnwos下编译,可以使用多线程编译,比默认的单线程也要快一点。如:make BOARD=NUCLEO_F767ZI -j8
编译后,就会在stmhal目录下产生一个build-NUCLEO_F767ZI目录,里面包含有编译的中间文件和最终二进制文件。
用STM32 ST-LINK Utility或者其他软件,加载编译后的firmware.hex文件,通过STlink下载固件到NUCLEO_F767ZI开发板,就可以体验MicroPython了。可以通过STlink的串口或者NUCLEO_F767ZI开发板的macroUSB(CN13)连接到终端软件,连接时将波特率设置为115200。如果通过macroUSB(CN13)连接,会自动安装一个pybflash虚拟磁盘,还会安装一个虚拟串口,这个串口的驱动就在pybflash磁盘上。
为了方便大家,这里也提供编译好的固件(v1.8.2-12-gad9b9c7),可以直接写入开发板。
firmware_NUCLEO_F767ZI.zip
(481.28 KB)
|