登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
博客
发1篇日志+1圆
记录
发1条记录+2圆币
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
VIP网盘
VIP申请
网盘
联系我们
道具
勋章
任务
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
安全
›
《DNK210使用指南 -CanMV版 V1.0》第十六章 machine模块 ...
《DNK210使用指南 -CanMV版 V1.0》第十六章 machine模块实验
[ 复制链接 ]
馑妣窟
2025-6-8 12:42:41
第十六章 machine模块实验
1)实验平台:正点原子DNK210开发板
2)章节摘自【正点原子】DNK210使用指南 - CanMV版 V1.0
3)购买链接:https://detail.tmall.com/item.htm?&id=782801398750
4)全套实验源码+手册+视频下载地址:http://www.openedv.com/docs/boards/k210/ATK-DNK210.html
5)正点原子官方B站:https://space.bilibili.com/394620890
6)正点原子K210技术交流企鹅群:605557868
本章实验将介绍machine模块的基础知识,以及machine模块内部分函数的使用。通过本章的学习,读者将学习到machine模块的基本使用方法。
本章分为如下几个小节:
16.1 machine模块介绍
16.2 硬件设计
16.3 程序设计
16.4 运行验证
16.1 machine模块介绍
machine模块是CanMV内置的模块,machine模块包含了与Kendryte K210硬件相关的特定功能,machine模块中的大部分功能允许实现对Kendryte K210上硬件(例如CPU、UART、Timer等)的直接且不受限制的访问和控制,因此能够帮助开发者快速地实验一些硬件功能。
machine模块提供了3个函数和7个类,machine模块提供的函数,如下表所示:
表16.1.1 machine模块提供的函数
machine模块提供的类,如下表所示:
表16.1.2 machine模块提供的类
本章着重介绍machine模块提供的函数,在后续章节将陆续对machine模块提供的部分类进行介绍。
machine模块提供了unique_id()函数,用于获取Kendryte K210的32字节唯一ID,unique_id()函数如下所示:
machine.unique_id()
复制代码
unique_id()函数用于获取Kendryte K210的32字节唯一ID,32字节唯一 ID可以被作为每颗Kendryte K210芯片的“身份证”。
unique_id()函数的使用示例如下所示:
import machine
uid = machine.unique.id()
复制代码
machine模块提供了reset()函数,用于对Kednryte K210进行软件复位,reset()函数如下所示:
machine.reset()
复制代码
reset()函数用于对Kendryte K210进行软件复位,相当于对板卡进行重启操作。
reset()函数的使用示例如下所示:
import machine
machine.reset()
复制代码
machine模块提供了reset_cause()函数,用于获取Kendryte K210的复位原因,reset_cause()函数如下所示:
machine.reset_cause()
复制代码
reset_cause()函数可以获取Kendryte K210本次运行前复位的复位原因,其中复位原因如下表所示:
表16.1.3 复位原因描述表
reset_cause()函数的使用示例如下所示:
import machine
cause = machine.reset_cause()
复制代码
16.2 硬件设计
16.2.1 例程功能
1.使用unique_id()函数,获取Kendryte K210的唯一ID,并打印输出
2.使用reset_cause()函数,获取Kendryte K210本次运行的复位原因,并打印输出
3.使用reset()函数,对Kendryte K210进行软件复位
16.2.2 硬件资源
本章实验内容,主要讲解machine模块中函数的使用,无需关注硬件资源。
16.2.3 原理图
本章实验内容,主要讲解machine模块中函数的使用,无需关注原理图。
16.3 程序设计
16.3.1 machine函数
有关machine函数的介绍,请见第16.1小节《machine模块介绍》。
16.3.2 程序流程图
图16.3.2.1 machine模块实验流程图
16.3.3 main.py代码
main.py中的脚本代码如下所示:
import machine
import time
# 获取唯一ID并打印输出
uid = machine.unique_id()
print(uid)
print("".join(["%02X" % byte for byte in uid]))
# 获取复位原因并打印输出
cause = machine.reset_cause()
def decode_cause(cause):
if cause == (machine.PWRON_RESET or machine.HARD_RESET):
return "Pin reset"
elif cause == machine.WDT_RESET:
return "WDT0 reset"
elif cause == machine.WDT1_RESET:
return "WDT1 reset"
elif cause == machine.SOFT_RESET:
return "Software reset"
else:
return "Unknow"
print(decode_cause(cause))
# 延时一段时间
time.sleep_ms(500)
# 软件复位
machine.reset()
复制代码
可以看到,首先是通过machine.unique_id()函数获取Kendryte K210的唯一ID,并通过print()函数将其打印输出,但由于该函数返回的是bytes类型的数据,为了方便查看,同时将其格式化为十六进制数据进行打印输出。
接着是使用machine.reset_cause()函数获取复位原因,该函数返回的是一个int类型的数据,复位原因对应的int数据都以常量的形式保存在machine模块中如表16.1.3,在将复位原因转换为对应的字符串后,通过print()函数将其打印输出。
在最后是使用machine.reset()函数对Kendryte K210进行软件复位,复位后Kendryte K210将重新启动,CanMV也将重新运行。
16.4 运行验证
将DNK210开发板连接CanMV IDE,并点击CanMV IDE上的“开始(运行脚本)”按钮后,可以看到“串行终端”输出了一些信息,如下图所示:
图16.4.1 “串行终端”窗口打印输出
从“串行终端”的窗口中可以看到,前两行输出的是Kendryte K210的唯一ID,值得一提的是,虽然打印输出了64字节的唯一ID,但有效的只有前32字节。可以看到第三行,输出的是“Pin reset”,说明本次运行前的复位原因是“引脚复位”。
由于在main.py中的最后执行了machine.reset()函数,因此Kendryte K210将会执行一次复位,因此,通过CanMV IDE软件能观察到在执行完main.py后,原本处于“已连接”状态的Kendryte K210设备变为了“未连接”状态,如下图所示:
图16.4.2 设备断开连接
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
签约作者
程序园优秀签约作者
发帖
馑妣窟
2025-6-8 12:42:41
关注
0
粉丝关注
18
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
敖可
9984
黎瑞芝
9990
杭环
9988
4
猷咎
9988
5
凶契帽
9988
6
接快背
9988
7
氛疵
9988
8
恐肩
9986
9
虽裘侪
9986
10
里豳朝
9986
查看更多