在mm32f3270为micropython移植utime模块

苏勇,2021年8月

Introduction

utime模块的主要函数在“extmod”目录下的utime_mphal.h和utime_mphal.c文件中实现。当仍需要在ports目录下补完部分底层函数。

需要具体硬件实现的函数如下:

  • void mp_hal_delay_ms(uint32_t ms)

  • void mp_hal_delay_us(uint32_t us)

  • mp_uint_t mp_hal_ticks_ms(uint32_t ms)

  • mp_uint_t mp_hal_ticks_us(uint32_t us)

  • mp_uint_t mp_hal_ticks_cpu(void)

mimxrt的实现,在“mphalport.h”文件中:

static inline void mp_hal_delay_ms(mp_uint_t ms) {uint64_t us = (uint64_t)ms * 1000;ticks_delay_us64(us);
}static inline void mp_hal_delay_us(mp_uint_t us) {ticks_delay_us64(us);
}#define mp_hal_delay_us_fast(us) mp_hal_delay_us(us)static inline mp_uint_t mp_hal_ticks_ms(void) {return ticks_ms32();
}static inline mp_uint_t mp_hal_ticks_us(void) {return ticks_us32();
}static inline mp_uint_t mp_hal_ticks_cpu(void) {return 0;
}

至于其中的“mp_hal_delay_us_fast()”,是给软件模拟协议时用的。

mimxrt定时器的实现通过在ticks组件中,调用了定时器模块GPI及其中断服务程序,实现了延时功能。这里我考虑使用更加通用的Systick完成类似功能。实际上,samd和stm32也都是用Systick实现的utime。

可以直接复制samd下面的“modutime.c"

真是发现一座宝矿啊,samd的移植几乎就是教科书,全部照抄就好。

最后实现延时闪小灯的效果,REPL的脚本如下:


MicroPython v1.16 on 2021-08-23; MB_F3270 with MM32F3277G7P
>>> import utime
>>> dir(utime)
['__name__', 'sleep', 'sleep_ms', 'sleep_us', 'ticks_add', 'ticks_cpu', 'ticks_diff', 'ticks_ms', 'ticks_us']
>>> from machine import Pin
>>> pin0 = Pin(0, mode=Pin.OUT_PUSHPULL)
>>> for i in range(10):
...   pin0(1)
...   utime.sleep_ms(1000)
...   pin0(0)
...   utime.sleep_ms(1000)
...
>>>

今天就这样了,好好休息,看明天能不能录个视频出来。

END

在mm32f3270为micropython移植utime模块相关推荐

  1. 在mm32f3270为micropython创建Pin模块(1)

    在mm32f3270为micropython创建Pin模块(1) 苏勇,2021年8月 文章目录 在mm32f3270为micropython创建Pin模块(1) Requirements 代码框架 ...

  2. 在mm32f3270为micropython创建Pin模块(2)

    在mm32f3270为micropython创建Pin模块(2) 苏勇,2021年8月 文章目录 在mm32f3270为micropython创建Pin模块(2) Introduction make_ ...

  3. 在mm32f3270上为MicroPython启用Timer模块

    在mm32f3270上为MicroPython启用Timer模块 文章目录 在mm32f3270上为MicroPython启用Timer模块 Requirements Implementation A ...

  4. MicroPython中I2C模块的设计与实现(1) - machine_i2c框架的机制

    MicroPython中I2C模块的设计与实现(1) - machine_i2c框架的机制 苏勇,2022年3月 文章目录 MicroPython中I2C模块的设计与实现(1) - machine_i ...

  5. MicroPython移植到STM32H750

    Micropython移植到STM32H750 tb上买了块stm32h750vbt6的核心板,想折腾一下,正好最近在学python,于是尝试在这块板子上移植一下micropython.然而官方貌似还 ...

  6. [长文干货]MicroPython移植到野火STM32F429开发板

    最近通过参考网上的文章,成功将MicroPython移植到野火STM32F429开发板上,给大家分享一下自己的移植过程,可以作为STM32系列移植MicroPY的参考. 1.移植前准备工作 实验环境: ...

  7. openwrt移植LTE模块

    Openwrt移植LTE模块 1.  增加具体设备驱动 文档位置:/drivers/usb/serial/option.c 注意:是target开头目录下的文件 在文件中添加如下内容: static ...

  8. Hi3798移植4G模块(移远EC20)

    Hi3798移植4G模块(移远EC20) 一.前言 二.USB驱动修改 2.1 添加VID和PID信息 2.2 添加空包处理机制 2.3 添加复位重连机制 2.4 修改内核配置 三.GoBiNet测试 ...

  9. 通过mem函数在MicroPython中访问模块寄存器

    简 介: 通过mem函数直接访问MCU内部的寄存器,可以完成一些在原来的MicroPython中内核没有实现的模块.通过测试可以看到,通过mem访问GPIO并没有明显增加访问的速度.使用mem访问CR ...

最新文章

  1. 用variant的数据来推导基因表达 | Imputation of Expression Using PrediXcan
  2. python代码阅读技巧_30个Python程序员需要知道的编程技巧,可以让你的工作事半功倍!...
  3. 2022版全球及中国单晶硅市场规模分析与竞争策略研究报告
  4. P4878 [USACO05DEC]Layout G
  5. 90后美少女如何过五关斩六将入职支付宝技术男团?
  6. 【bzoj4321】queue2 dp
  7. 在 RAID 磁盘上面架构 LVM 系统
  8. 三、亚马逊产品定价其实就这么简单,一个公式解决
  9. 使用css3实现一个超浪漫的新年倒计时
  10. 【Javafx】关于属性绑定需要在动画设置之后
  11. 嵌入式工程师,怎么不被历史洪流冲走?
  12. 赶路人-----李小晓
  13. java,判断一个整数是质数还是合数.
  14. python项目案例开发pdf-python项目开发案例锦集 pdf|消费金融公司概念股
  15. Mysql 内存管理及优化
  16. 各大银行ATM跨行取款收费一览表 程序员的切身利益 不得不看啊
  17. 张首晟:区块链技术是互联网世界新的分合转折点
  18. mysql本周 下周下月,mysql 日期计算,今天,明天,本周,下周,本月,下月
  19. 高等学校数字校园建设解决方案
  20. Batch Normalization(BN)在什么时候用比较合适?

热门文章

  1. Ubuntu基础-终端打开软件
  2. 有什么免费python安装包?
  3. Aspose.Words for .NET使用表格教程之应用格式(3)——使用表格样式
  4. Hive调优之 严格模式
  5. vue2中component和components在组件注册和路由中的区别
  6. 做什么,怎么做?(20210615)
  7. 猪肉价格跌至去年最低水平 区块链养猪成热点
  8. 软件工程和他的小弟们
  9. 名词解释第五讲:ICO众筹
  10. html name属性作用,HTML中name属性有什么用途