在mm32f3270为micropython移植utime模块
在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模块相关推荐
- 在mm32f3270为micropython创建Pin模块(1)
在mm32f3270为micropython创建Pin模块(1) 苏勇,2021年8月 文章目录 在mm32f3270为micropython创建Pin模块(1) Requirements 代码框架 ...
- 在mm32f3270为micropython创建Pin模块(2)
在mm32f3270为micropython创建Pin模块(2) 苏勇,2021年8月 文章目录 在mm32f3270为micropython创建Pin模块(2) Introduction make_ ...
- 在mm32f3270上为MicroPython启用Timer模块
在mm32f3270上为MicroPython启用Timer模块 文章目录 在mm32f3270上为MicroPython启用Timer模块 Requirements Implementation A ...
- MicroPython中I2C模块的设计与实现(1) - machine_i2c框架的机制
MicroPython中I2C模块的设计与实现(1) - machine_i2c框架的机制 苏勇,2022年3月 文章目录 MicroPython中I2C模块的设计与实现(1) - machine_i ...
- MicroPython移植到STM32H750
Micropython移植到STM32H750 tb上买了块stm32h750vbt6的核心板,想折腾一下,正好最近在学python,于是尝试在这块板子上移植一下micropython.然而官方貌似还 ...
- [长文干货]MicroPython移植到野火STM32F429开发板
最近通过参考网上的文章,成功将MicroPython移植到野火STM32F429开发板上,给大家分享一下自己的移植过程,可以作为STM32系列移植MicroPY的参考. 1.移植前准备工作 实验环境: ...
- openwrt移植LTE模块
Openwrt移植LTE模块 1. 增加具体设备驱动 文档位置:/drivers/usb/serial/option.c 注意:是target开头目录下的文件 在文件中添加如下内容: static ...
- Hi3798移植4G模块(移远EC20)
Hi3798移植4G模块(移远EC20) 一.前言 二.USB驱动修改 2.1 添加VID和PID信息 2.2 添加空包处理机制 2.3 添加复位重连机制 2.4 修改内核配置 三.GoBiNet测试 ...
- 通过mem函数在MicroPython中访问模块寄存器
简 介: 通过mem函数直接访问MCU内部的寄存器,可以完成一些在原来的MicroPython中内核没有实现的模块.通过测试可以看到,通过mem访问GPIO并没有明显增加访问的速度.使用mem访问CR ...
最新文章
- 用variant的数据来推导基因表达 | Imputation of Expression Using PrediXcan
- python代码阅读技巧_30个Python程序员需要知道的编程技巧,可以让你的工作事半功倍!...
- 2022版全球及中国单晶硅市场规模分析与竞争策略研究报告
- P4878 [USACO05DEC]Layout G
- 90后美少女如何过五关斩六将入职支付宝技术男团?
- 【bzoj4321】queue2 dp
- 在 RAID 磁盘上面架构 LVM 系统
- 三、亚马逊产品定价其实就这么简单,一个公式解决
- 使用css3实现一个超浪漫的新年倒计时
- 【Javafx】关于属性绑定需要在动画设置之后
- 嵌入式工程师,怎么不被历史洪流冲走?
- 赶路人-----李小晓
- java,判断一个整数是质数还是合数.
- python项目案例开发pdf-python项目开发案例锦集 pdf|消费金融公司概念股
- Mysql 内存管理及优化
- 各大银行ATM跨行取款收费一览表 程序员的切身利益 不得不看啊
- 张首晟:区块链技术是互联网世界新的分合转折点
- mysql本周 下周下月,mysql 日期计算,今天,明天,本周,下周,本月,下月
- 高等学校数字校园建设解决方案
- Batch Normalization(BN)在什么时候用比较合适?