0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用MicroPython控制单片机

Q4MP_gh_c472c21 来源:嵌入式ARM 作者:武国平 2020-11-12 18:15 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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工程下的时钟配置。

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

保存退出

修改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

责任编辑:xj

原文标题:尝尝MicroPython控制单片机

文章出处:【微信公众号:嵌入式ARM】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6074

    文章

    45346

    浏览量

    663819
  • STM32
    +关注

    关注

    2305

    文章

    11123

    浏览量

    371212
  • Micropython
    +关注

    关注

    0

    文章

    69

    浏览量

    5723

原文标题:尝尝MicroPython控制单片机

文章出处:【微信号:gh_c472c2199c88,微信公众号:嵌入式微处理器】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    mcu单片机的原理及选型要点(低功耗mcu单片机推荐)

    在现代电子设备中,MCU单片机(微控制器)作为核心控制单元,发挥着不可替代的作用。它将CPU、存储器、定时器和多种I/O接口集成在单一芯片上,形成一个小型化的计算机系统,广泛应用于从家用电器到工业设备的各个领域。
    的头像 发表于 11-24 15:56 204次阅读

    什么单片机比较耐用

            在工业控制、户外设备、医疗仪器等场景中,单片机的耐用性直接决定了设备的稳定运行与维护成本。耐用的单片机通常具备宽温工作范围、强抗干扰能力、稳定的电源适应性和长寿命的硬件设计。深圳市安
    的头像 发表于 07-31 13:48 563次阅读

    单片机采用什么电流控制

    单片机作为电子系统的控制核心,其电流控制涉及自身工作电流管理与外部设备电流驱动两个层面。由于单片机内部电路的特性,其自身工作电流较小,而控制
    的头像 发表于 07-30 10:07 550次阅读

    单片机怎么控制转速

           在工业自动化、智能家居、机器人等领域,单片机控制电机转速是实现精准运动控制的核心技术。通过结合硬件电路设计与软件算法优化,单片机可根据不同应用场景灵活调整电机转速。以下从
    的头像 发表于 07-25 13:58 661次阅读

    怎么测单片机系统频率

    单片机系统频率是指单片机工作时的时钟频率,它直接影响单片机的运行速度和处理能力,准确测量系统频率对单片机应用开发、程序调试和性能优化具有重要意义。测量
    的头像 发表于 07-25 11:39 489次阅读

    单片机怎么驱动电机?

    在各类自动化设备和智能装置中,电机是重要的执行部件,而单片机作为控制核心,需要通过特定的方式驱动电机运转。单片机驱动电机并非直接连接即可,而是要根据电机类型和功率,搭配合适的驱动电路,才能实现稳定
    的头像 发表于 07-25 09:31 448次阅读

    单片机是怎么控制

    单片机作为电子系统的控制核心,通过接收外部信号、执行预设程序、驱动外部设备的方式实现控制功能,其控制过程涉及信号输入、数据处理和指令输出三个关键环节,每个环节的协同配合决定了整体
    的头像 发表于 07-23 13:59 490次阅读

    单片机怎么烧程序

    单片机烧程序是将编写好的程序代码写入单片机内部存储单元,让单片机按照预设逻辑工作的过程,是单片机应用开发中不可或缺的环节。无论是简单的灯光控制
    的头像 发表于 07-23 11:47 664次阅读

    低功耗单片机各型号的对比及选型参考

    不同品牌、不同系列的低功耗单片机在功耗控制、性能表现、外设配置等方面各有特点,通过低功耗单片机各型号的对比,能帮助开发者更精准地匹配应用需求。本文将围绕主流低功耗单片机型号展开对比,并
    的头像 发表于 07-22 18:25 942次阅读

    给予单片机的温度控制系统设计

    在工业生产、智能家居等领域,温度的稳定控制至关重要,基于单片机的温度控制系统凭借灵活、高效的特点被广泛应用,其设计原理与实现方式值得深入探讨。 基于单片机的温度
    的头像 发表于 07-16 10:57 459次阅读

    单片机和伺服有什么区别

    单片机和伺服的区别 单片机(Microcontroller)和伺服(Servo System)是两种完全不同的技术概念,分别属于 控制系统硬件 和 运动控制执行系统 。以下是它们的详细
    的头像 发表于 05-26 09:18 594次阅读

    基于51/32单片机按键控制步进电机正反转,A4988驱动

    基于51/32单片机按键控制步进电机正反转,A4988驱动
    发表于 04-14 15:05 6次下载

    单片机科普总结,建议收藏!

    单片机(MicrocontrollerUnit,MCU)作为嵌入式系统的核心之一,在现代电子产品中无处不在。从智能家居、汽车电子,到工业控制、医疗设备,单片机支撑着无数智能化应用的发展。对于初学者
    的头像 发表于 04-07 11:58 4504次阅读
    <b class='flag-5'>单片机</b>科普总结,建议收藏!

    什么是单片机的ADC接口

    在嵌入式系统和工业自动化领域,单片机(Microcontroller)作为核心控制单元,承担着数据采集、处理和控制的重要任务。其中,模数转换器(Analog-to-Digital Converter
    的头像 发表于 02-03 11:27 3763次阅读

    基于单片机中药存放环境监测系统的实现

    本项目基于STM32F103C8T6单片机作为核心控制单元,通过多种传感器对环境进行实时采集,并通过液晶显示屏和Wi-Fi无线通讯将监测数据展示给用户,达到环境预警和安全保障的目的。
    的头像 发表于 01-23 09:42 1357次阅读
    基于<b class='flag-5'>单片机</b>中药存放环境监测系统的实现