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】欢迎添加关注!文章转载请注明出处。

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

    关注

    6001

    文章

    43973

    浏览量

    620817
  • STM32
    +关注

    关注

    2239

    文章

    10671

    浏览量

    348734
  • Micropython
    +关注

    关注

    0

    文章

    68

    浏览量

    4582

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

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

收藏 人收藏

    评论

    相关推荐

    单片机控制喷油器

    单片机控制这个有会的嘛太难了?
    发表于 04-25 21:56

    单片机boot脚干嘛的

    单片机boot脚是单片机的引导脚,用于控制单片机的启动和引导过程。在单片机系统中,boot脚的作用十分重要,它影响着整个单片机的工作状态和功
    的头像 发表于 12-19 09:47 2726次阅读

    FPGA和单片机的区别

    。 MCU:微控制单元(Microcontroller Unit;MCU) ,又称单片微型计算机(Single Chip Microcomputer )或者单片机,是把中央处理器(Central
    发表于 11-14 15:30

    如何通过串口向stm32发送一串指令,从而控制单片机进行一系列操作?

    如何通过串口向stm32发送一串指令,从而控制单片机进行一系列操作? 在控制单片机进行一系列操作时,我们需要先将指令传递给单片机。常见的通信方式有SPI、I2C、并口、串口等。其中,串口通信是最简单
    的头像 发表于 10-26 11:27 1302次阅读

    手机控制单片机该如何去实现?

    想用嵌入式(单片机)做一个LED屏幕的万年历,希望能用手机控制调节时亮度等,应该怎样去做呢!
    发表于 10-24 07:04

    请问如何利用电脑控制单片机的闭合?

    如何利用电脑控制单片机的闭合?​
    发表于 10-20 06:11

    请问如何使用单片机控制DVI信号线的通断?

    大家好,想请教一个问题:如何通过单片机控制DVI信号线的通断?是想在DVI上加一个单片机作为控制器,并且单片机是通过串口或USB口连接到电
    发表于 09-26 06:09

    单片机模糊控制系统设计及应用实例

    单片机应用技术和模糊控制技术是当前信息科学中具有较强实用性的两个重要分支。本﹒书作者将多年来从事单片机应用技术的教学、科研工作所积累的经验,以及近年来完成国家、省部级科研项目所取得的部分成果傲一简单
    发表于 09-19 07:07

    单片机时钟电路的概念/工作原理/基本结构/作用

    单片机时钟电路是指用于控制单片机工作频率的电路,其主要作用是为单片机提供稳定的时钟信号,保证单片机正常工作。
    发表于 09-08 17:08 2862次阅读

    手机APP,能不能通过蓝牙控制单片机主板

    手机APP,能不能通过蓝牙控制单片机主板,有那位有相关经验的大咖,解释一下吗
    发表于 08-28 17:06

    MicroPython的优势及应用领域 RT-Thread MicroPythonMicroPython的区别

    当下MicroPython变得越来越流行,RT-Thread 也提供了对应的软件包的支持。那么,相比官方原生的 MicroPython 我们有哪些改进呢?本文将深入介绍,RT-Thread MicroPython软件包与官方原生
    发表于 08-28 10:47 924次阅读

    语音控制单片机机器人

    单片机
    YS YYDS
    发布于 :2023年07月06日 22:02:15

    基于89C51单片机的按键控制单个数码管显示

    基于89C51单片机的按键控制单个数码管显示
    发表于 05-12 16:53 3次下载

    利用visual studio上位机控制51单片机led灯亮灭

    控制51单片机作出各种响应一般是写好程序烧录进单片机,现在想要实时控制单片机就需要上位机来实现。简单的说,上位机就是控制端,下位机就是被
    发表于 05-10 10:31 7次下载
    利用visual studio上位机<b class='flag-5'>控制</b>51<b class='flag-5'>单片机</b>led灯亮灭

    基于AT89C51单片机TIMER0控制单只LED闪烁仿真及代码

    基于AT89C51单片机TIMER0控制单只LED闪烁仿真及代码
    发表于 05-04 14:35 0次下载