STM32使用C语言编写代码较为复杂,对新手并不友好(当然这不是不深入学习STM32的理由)。
而microPython是一种嵌入式Python环境,可以非常简便地操作各种资源,同时支持编写代码和交互式两种操作方式。
以下是廖雪峰的官方网站上的介绍:
MicroPython是Python的一个精简版本,它是为了运行在单片机这样的性能有限的微控制器上,最小体积仅256K,运行时仅需16K内存。
MicroPython是基于Python 3.4的语法标准。因为要适应嵌入式微控制器,所以裁剪了大部分标准库,仅保留部分模块如math、sys的部分函数和类。此外,很多标准模块如json、re等在MicroPython中变成了以u开头的ujson、ure,表示针对MicroPython开发的标准库。
目前,MicroPython除了可以运行在最初开发的pyboard微控制器上外,还可以运行在大量基于ARM的嵌入式系统,如Arduino,这样我们就可以通过Python来非常方便地开发自动控制、机器人这样的应用。
对STM32平台,mPy支持这几种MCU:
- stm32f0xx
- stm32f4xx
- stm32f7xx
- stm32h7xx
- stm32l0xx
- stm32l4xx
- stm32wbxx
而官方对于我手头的STM32F103似乎没有提供支持。在摸索了一段时间后,通过第三方编写的mPy代码,我成功构建并烧录了mPy的运行环境到STM32F103.
推荐使用Linux环境构建,会简单得多。
安装环境
首先安装构建环境。
apt-get install git
apt-get install gcc
apt-get install gcc-arm-none-eabi
克隆项目
克隆第三方项目。
git clone https://github.com/morris13579/micropython-stm32f1.git
编译
编译得到hex文件。
cd ./micropython-stm32f1/ports/stm32
make BOARD=F103
编译完成后,得到的hex文件位于micropython-stm32f1/ports/stm32/build-F103/firmware.hex
,将其烧录至STM32F103即可。
验证
程序运行后在电脑资源管理器中会多一个USB 串行设备串口,如下图中的COM24。
如果你的电脑中没有出现USB串行设备,而是多了STM32_BOOTloader
设备,这可能是能的电脑上的打开了开发板上的USB_232
串口导致,这时需在PC上先关闭该串口(找到对应的串口工具,关闭串口),然后按下开发板上的复位键即可。
程序正常跑起来后,资源管理器中可以看到多了个pybFLASH盘:
将代码保存到其中的main.py
即可运行。(如果容量不够也可以用SD卡存储)
也可以使用交互模式连接。安装并打开PUTTY工具,选中设置管理器中看到的USB串行设备,打开串口,连接开发板。
效果:
基本运算:
引脚操作:
随机数:
问题
- 某些外围设备在使用 DMA 时会出现问题
- 使用 DMA 时 I2C 将重新启动
- CAN 总线似乎存在问题
Comments 2 条评论
博主 .-..—…-.
这是一条私密评论
博主 .-..—…-.
很棒,解释的很精炼,很易懂