当前位置:首页 > 公众号精选 > 嵌入式微处理器
[导读]本文档主要介绍,在python环境下,如何开发嵌入式应用程序,以STM32H43板卡为例介绍. 从系统环境搭建,到编译,到用python实现硬件控制。可作为入门教程。

1. 摘要

本文档主要介绍,在python环境下,如何开发嵌入式应用程序,以STM32H43板卡为例介绍. 从系统环境搭建,到编译,到用python实现硬件控制。可作为入门教程。

2. 准备工作

2.1 开发环境搭建

2.1.1 Win10自带linux系统

开发环境可以自己使用虚拟机然后安装ubuntu系统,而Win10系统自带有linux系统,只需要使能就可以使用,比较方便,所以我们以win10自带的linux子系统为例。

在控制面板中启用linux子系统,点击启用或关闭Windows功能。

如下图勾选适用于linux的windows子系统,然后重启电脑




点击立即重新启动

重启后进入windows 10 应用商店,搜索Ubuntu,可以选择18.04或者20.02进行安装


下载安装完毕,点击启动

设置用户名和密码,

安装的默认路径是

C:Usershpp19AppDataLocalPackagesCanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgscLocalState ootfshome

路径不能修改,至此linux环境就好了,可以输入一些常用命令看看,如ls,cp, rm等命令。

Win10地下安装的linux子系统只支持命令行, 没有自己用虚拟机安装的功能全面,但是对于开发micropython 足够。

2.1.2 虚拟机安装

如果不想用windows10 安装的,想自己搭建也是可以,需要安装虚拟机和下载ubunut的iso镜像文件,进行安装,这种安装网上很多,我们就不详细列出了,推荐第一种安装。

2.1.3 依赖软件安装

Git安装,git用来获取软件包

使用克隆micropython的软件包,也可以去官网自己下载,拷贝到linux环境的home目录下。

使用git 克隆软件包

如果网络不好,要等一段时间,比较慢。也可以自己到官网下载,我已经下好,大家可以找我索取当前最新板micropython-1.13

http://www.micropython.org/download/


2.1.4 Micropython 目录结构

目录结构比较重要,只有清除目录结构了,你才能移植到不同的板卡。

详细的目录结构介绍可以参考README.md

主要关注下目前micropython支持的ST开发板,和我们关系比较大的是H7系列,可以看到目前支持很多的ST芯片。

3. 交叉编译工具链

在终端输入sudo apt install gcc make 命令安装 gcc, make

安装完后可以查看下版本



输入 sudo apt-get install gcc-arm-none-eabi   安装针对ARM的编译器




如果你的交叉工具链安装下载比较慢的话,请按以下步骤修改,因为linux自带的软件源地址都是国外的,国内更新下载安装的话会比较慢,需要将列表更新为国内

将打开的文件内容全部删除掉,替换为以下镜像源

deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse


deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse


deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse


deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse


deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse


deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse


deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse


deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse


deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse


deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse


修改完软件源后,更新软件列表和软件:

sudo apt update


sudo apt upgrade



如果对vim编辑器命令不熟悉,可以自己百度,或者直接在以下目录

C:Usershpp19AppDataLocalPackagesCanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgscLocalState ootfsetcapt 下将sources.list文件替换为以下阿里云镜像源,这样速度会很快。


编译mpy-cross, mpy-cross是一个micropython的辅助工具,在编译过程中会用到,在micropython的源码根目录中输入命令make -C mpy-cross

至此交叉编译工具链就安装完毕,可以编译STM32的程序了。

4. 编译程序

在源码根目录下输入命令make -C ports/stm32  如果不指定BOARD,则默认编译的是ports/stm32下的PYBV10板子,而我们需要的是能在H743上跑,所以需要裁剪移植一个对H743的板子,查看下可以看到micropython目前支持的STM32板卡有F091, F401,F429,F446,F746,H743等,

复制NUCLEO_H743ZI命名为BODEBOARD

输入命令ls查看下已经有BODEBOARD文件夹和文件,进入查看下

主要有5个文件,而我们就需要修改这里面的文件

首先修改时钟为25000000,主要是修改stm32h7xx_hal_conf.h文件

修改mpconfigboard.h

将时钟修改为如下配置,可以复制我们之前IAR工程下的时钟配置。


修改其他管脚,这一节我们只以修改三个LED和UART1等管脚为例,在文档的下一个版本更新中,会更新所有用到的硬件管脚,还是在这个文件中继续修改对应的硬件管脚


保存退出

修改pins.csv文件

添加LED和UART1的管脚



保存退出。


因为我们是参照的NUCLEO_H743ZI,所以mpconfigboard.mk文件不用修改。至此修改完毕,可以编译,在micropython根目录下输入命令 make -C ports/stm32 BOARD=BODEBOARD

等待编译完成。

可以看到生成了.hex和.dfu固件,任选一种下载入H743板子,这样板卡里就有了python解析器,可以识别python语言

编译好的固件怎么样复制到windows主机呢,当然你可以直接去生成的目录底下拷贝,在win10 的linux子系统中默认已经将windows分区挂载好了,我们可以在/mnt目录下看到

这样我们就可以直接使用命令cp拷贝到windows了,当然如果你不习惯命令行操作,可以安装midinight commander 软件,可以方便的管理文件,输入命令sudo apt install mc 进行安装,安装完后,输入mc可以直接打开软件。


不管用那种方法,将Hex文件下载到硬件板卡,下载完毕后,给板子重新上电,可以看到出现一个PYBFLASH类似U盘的盘符,打开里面有boot.py

main.py 等四个文件,我们最后的应用程序直接写在main.py就可以运行了。


5. 测试

我们先来演示使用putty来控制板子上的LED灯,打开putty,配置波特率和串口号,

导入LED库,就可以控制LED了

可以观察H743的板子三个LED灯依次点亮,通过Putty可以控制硬件就完成了,那么如何让板子上电就三个LED灯点亮,而不需要通过Putty控制呢。?

这就要编辑我们前面提到的main.py文件,使用任何文本编辑器打开,写入python代码,保存退出,就可以运行了。

通过以上代码就实现了LED的点亮控制,实现用python控制单片机。至此就可以用python编写很多好玩的东西在单片机上跑了。


6. 参考文档

序号

文献

1

www.micropython.org  




-END-


来源 | 嵌入式程序猿

作者|武国平


整理文章为传播相关技术,版权归原作者所有 |

如有侵权,请联系删除 |


【1】国内MCU能替代国外产品吗?MCU的未来又将如何?

【2】35岁真的是程序员的坎儿吗?

【3】不同编程语言能耗不同?看这27种语言对比!

【4】超长干货为你解析:从串口驱动到Linux驱动模型,嵌入式必会!

【5】本文把TCP/IP讲绝了!


免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

嵌入式ARM

扫描二维码,关注更多精彩内容

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭