AZBIL FL7S-1W6W-CN03接近开关

尝尝MicroPython控制单片机

  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

  

  

  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 focal main restricted universe multiverse

  deb focal-security main restricted universe multiverse

  deb focal-updates main restricted universe multiverse

  deb focal-proposed main restricted universe multiverse

  deb focal-backports main restricted universe multiverse

  deb-src focal main restricted universe multiverse

  deb-src focal-security main restricted universe multiverse

  deb-src focal-updates main restricted universe multiverse

  deb-src focal-proposed main restricted universe multiverse

  deb-src 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编写很多好玩的东西在单片机上跑了。

AZBIL FL7S-1W6W-CN03相关推荐

  1. 跟着团子学SAP PS:项目模版搭建 CJ91/CJ92/CJ93/CN01/CN02/CN03/CN11/CN12/CN13

    项目结构是整个PS模块最为核心的主数据,因为项目结构的搭建体现了企业管理项目的思路(按什么维度分解WBS等)以及颗粒度(WBS的层级,活动的多少等),而最终基于企业项目型管理及分析需求设计出的项目结构 ...

  2. 解决Android 加载大图片OOM

    图片在Android 占用内存计算 假如一张图的像素为100×200,那么他在内存中占用的内存为: 100×200(像素点) × 4(每个像素点占用的内存,默认为4.) public Bitmap.C ...

  3. Android setFocusableInTouchMode 方法使用和源码详解

    是什么 一般点击一个button,就会执行onclick 事件, 但是有些情况,我们想要点击button之后, 先获取焦点,然后再次点击一次,才执行onClick 事件.这时候,setFocusabl ...

  4. RxJava 从源码到使用

    几个关键类: io.reactivex.rxjava3.core.ObservableSource public interface ObservableSource<@NonNull T> ...

  5. Android 多点触控 MotionEvent详解

    相关API 介绍 MotionEvent.getY() 和 MotionEvent.getRawY() 的区别 getY 表示触摸事件在当前的View内的Y 坐标, getRawY表示触摸事件在整个屏 ...

  6. DiskLruCache 源码解析

    DiskLruCache 描述: DiskLruCache 是用来缓存一些数据,比如网络访问的Json,加载的图片等等. LruCache 是把数据缓存到内存中,而DisLruCache 是把数据缓存 ...

  7. Android 让View 和 ViewGroup 同时响应点击或者长按事件

    面试的时候,被问到如何让View 和 其 父View 同时响应长按事件. 我还记得当时自己的回答,子View 里面 处理了长按事件,但是返回了false, 没有处理,然后会继续调用到父View 的长按 ...

  8. java.lang.IllegalMonitorStateException: object not locked by thread before notify() 详解

    报错log: 2019-04-11 17:03:43.799 13792-13808/? E/AndroidRuntime: FATAL EXCEPTION: Thread-2Process: com ...

  9. 防止DISCUZ根域名跳转到forum.php的方法

    症状:输入http://www.sn03.com/跳转到www.cn03.com/forum.php,这样有两个不好,1.用户复制时不利于传播,2.两个页面内容的重复对搜索引擎排名不利,如何取消这个呢 ...

最新文章

  1. Phabricator是什么,代码审查工具
  2. bzoj 3195 奇怪的道路
  3. Hashtable源码分析
  4. 谁占用了我的Buffer Pool?
  5. 赋能开发者,英特尔发布oneAPI 2022工具包
  6. [cocos2d]格式化获取当前layer的控件名
  7. linux 清空history以及记录原理
  8. Android 学习之Fragment的创建
  9. intel网卡驱动 linux,适用于英特尔® 千兆位以太网网络连接的 Linux* 基础驱动程序...
  10. 【分享】李涛ps入门教程视频全集及精心整理包含素材
  11. 快速入门Flink (7) —— 小白都喜欢看的Flink流处理之DataSources和DataSinks
  12. 850pro测试软件,三星850Pro ssd可靠性测试 6000次P/E
  13. 开发在线投票系统过程遇到的问题
  14. Nginx反向代理与负载均衡应用实践(二)
  15. 二进制安装Kubernetes(k8s) v1.25.0 IPv4/IPv6双栈
  16. 【Reward is enough】Sutton、DavidSilver师徒联手:奖励机制足够实现各种目标。
  17. 使用MATLAB实现对信号的EMD分解
  18. C++实现简易图书馆管理系统
  19. OneNav一为主题魔改教程(一):优化后台新增网站时调用API却没有赋好值的BUG,以减少复制编辑工作量--一梦
  20. 草莓采摘机器人——ROS导航(一) ROS Kinetic + Handsfree系统安装以及环境配置

热门文章

  1. 情从何起?脑来揭秘。
  2. 处理LetsEncrypt证书签发错误acme-v02.api.letsencrypt.org timeout
  3. sor迭代法matlab实例,SOR迭代法求线性方程组
  4. vue实现数字滚动效果
  5. 生成器 php 举例,PHP生成器简单实例
  6. 互联网公司实行996工作制,都怪马云,说996是福报
  7. android 11.0 12.0控制屏幕亮屏和灭屏操作
  8. Android-点亮屏幕与唤醒
  9. cloudreve 使用阿里云 oss 和 cdn 加速
  10. CIE (PCI Express) 1x, 4x, 8x, 16x总线端子说明