开始之前,首先要感谢一下TPYBoard技术交流群(157816561)-云之初晓网友的分享。
 
今天简单分享下如何将自己编写的一些Python脚本的类库添加到固件中,在使用时只需import调用,就像使用内置的pyb一样简单便捷;同时还有另外一个重要的功能,就是可以很好的保护源代码。比起生成mpy加密文件这种方式来说,显然添加到固件中会更加安全可靠。
 
 
搭建micropython编译环境
 
1.安装arm-none-eabi-gcc交叉编译工具和gcc编译器。
sudo apt-get install gcc-arm-none-eabi
sudo apt-get install gcc
 
 
2.下载micropython源码包到本地,我下载到了home目录下。
sudo git clone --recursive https://github/micropython/micropython
MicroPython的源码结构
docs/         micropython的说明文档(restructuredText)
drivers/          一些外接设备的实现例程(eg:ds18b20,nrf24l01)
examples/ micropython的使用例程
extmod/         C语言实现的模块
lib/                 各类芯片的lib文件
mpy-cross/ 自带的交叉编译器,可以将.py生成.mpy加密文件
ports/         移植到各类MCU上的源码(eg:stm32,esp8266)
tests/         测试框架和Python脚本
tool+9s/         工具
进入ports目录下你会发现,micropython根据不同的MCU运行平台进行了分类,比如esp8266就是运行在esp8266-WIFI模块上的micropython,stm32是运行在stm32上的,还有cc3200 。
然后进入stm32/boards目录下,里面又根据stm32不同的系列进行了划分。
 
添加自定义Py类库
 
3.回到stm32/目录下,将需要添加到固件中的Python脚本类库放到modules/目录下。编译之前,请确保程序运行无误。为了测试新建了一个test.py文件,简单写了两个函数。如下:
 
import pyb

def on():
pyb.LED(4).on()
def off():
pyb.LED(4).off()
 
4.执行编译命令,等待编译完成。
 
sudo make BOARD=PYBV10
 
BOARD参数为stm32/boards/目录下相应的开发板名称。
本次教程用的是TPYBoardv102(蓝色)开发板,兼容PYBV10,所以选择PYBV10开发板编译。
若是TPYBoardv102(绿色)基础板,同样选择PYBV10。
若是TPYBoardv102(黑色)开发板,需选择PYBV11。
 
生成的固件在stm32/build-PYBV10/目录下的firmware.dfu和firmware.hex文件。
 
5.将dfu和hex文件拷贝到本地,进行烧写。
 
dfu文件的烧写教程,请参考:http//.tpyboard.com/support/reference11/302.html
 
 
hex文件的烧写需要借助ST-LINK工具,请参考:http//.tpyboard.com/support/reference11/239.html
 
6.烧写完毕后进行测试,在main.py文件输入以下内容:
import pyb
import test
test.on()
pyb.delay(1500)
test.off()
 
 

最新文章

  1. Ruby常用比较操作符
  2. winfrom程序如何做到快速关闭窗体
  3. mac os利用xampp实现apache下的cgi
  4. session_start保存的客户端cookie的值什么时候改变
  5. MySQL中你肯定不知道的int隐情
  6. 1. 走进java
  7. poj3207 Ikki’s Story IV – Panda’s Trick
  8. Qt5-MSVC2012-qDebug中文乱码解决方法
  9. Java提供的enum详解
  10. (大数据工程师学习路径)第四步 SQL基础课程----SQL介绍及mysql的安装
  11. 【UVA】10285-Longest Run on a Snowboard(动态规划)
  12. 最短路 - floyd算法
  13. <二>ELK-6.5.3学习笔记–使用rsyslog传输管理nginx日志
  14. 【Java每日一题】20170323
  15. Python自动化开发 - 常用模块(一)
  16. 详细解读Android中的搜索框(一)—— 简单小例子
  17. oracle不小心更新了数据库中的所有内容后的恢复
  18. Java使用UDP发送数据到InfluxDB
  19. Unity3D中组件事件函数的运行顺序
  20. Machine Learning in Action-chapter2-k近邻算法

热门文章

  1. SpringData 基于SpringBoot快速入门
  2. Linux send和recv
  3. java学习笔记之集合家族2
  4. Cocos2d-x3.0 触摸事件
  5. SpringMVC上传图片并压缩及剪切demo
  6. day01_使用Android Studio创建第一个Android项目
  7. Natas Wargame Level27 Writeup(SQL表的注入/溢出与截取)
  8. MVC+EF 入门教程(四)
  9. Android开发之常见事件响应方式
  10. 微信小程序使用场景延伸:扫码登录、扫码支付