LuatOS-SOC接口文档(air780E)--mcu - 封装mcu一些特殊操作
常量
常量 | 类型 | 解释 |
---|---|---|
mcu.UART | number | 外设类型-串口 |
mcu.I2C | number | 外设类型-I2C |
mcu.SPI | number | 外设类型-SPI |
mcu.PWM | number | 外设类型-PWM |
mcu.GPIO | number | 外设类型-GPIO |
mcu.I2S | number | 外设类型-I2S |
mcu.LCD | number | 外设类型-LCD |
mcu.CAM | number | 外设类型-CAM |
mcu.setClk(mhz)
设置主频,单位MHZ
参数
传入值类型 | 解释 |
---|---|
int | 主频,根据设备的不同有不同的有效值,请查阅手册 |
返回值
返回值类型 | 解释 |
---|---|
bool | 成功返回true,否则返回false |
例子
-- 请注意,主频与外设主频有关联性, 例如主频2M时SPI的最高只能1M -- 设置到80MHZ mcu.setClk(80) sys.wait(1000) -- 设置到240MHZ mcu.setClk(240) sys.wait(1000) -- 设置到2MHZ mcu.setClk(2) sys.wait(1000)
mcu.getClk()
获取主频,单位MHZ
参数
无
返回值
返回值类型 | 解释 |
---|---|
int | 若失败返回-1,否则返回主频数值,若等于0,可能处于32k晶振的省电模式 |
例子
local mhz = mcu.getClk() print("Boom", mhz)
mcu.unique_id()
获取设备唯一id. 注意,可能包含不可见字符,如需查看建议toHex()后打印
参数
无
返回值
返回值类型 | 解释 |
---|---|
string | 设备唯一id.若不支持, 会返回空字符串. |
例子
local unique_id = mcu.unique_id() print("unique_id", unique_id)
mcu.ticks()
获取启动后的tick数,注意会出现溢出会出现负数
参数
无
返回值
返回值类型 | 解释 |
---|---|
int | 当前tick值 |
例子
local tick = mcu.ticks() print("ticks", tick)
mcu.hz()
获取每秒的tick数量
参数
无
返回值
返回值类型 | 解释 |
---|---|
int | 每秒的tick数量,通常为1000 |
例子
local hz = mcu.hz() print("mcu.hz", hz)
mcu.reg32(address, value, mask)
读写mcu的32bit寄存器或者ram,谨慎使用写功能,请熟悉mcu的寄存器使用方法后再使用
参数
传入值类型 | 解释 |
---|---|
int | 寄存器或者ram地址 |
int | 写入的值,如果没有,则直接返回当前值 |
int | 位掩码,可以对特定几个位置的bit做修改, 默认0xffffffff,修改全部32bit |
返回值
返回值类型 | 解释 |
---|---|
int | 返回当前寄存的值 |
例子
local value = mcu.reg32(0x2009FFFC, 0x01, 0x01) --对0x2009FFFC地址上的值,修改bit0为1
mcu.x32(value)
转换10进制数为16进制字符串输出
参数
传入值类型 | 解释 |
---|---|
int | 需要转换的值 |
返回值
返回值类型 | 解释 |
---|---|
string | 16进制字符串 |
例子
local value = mcu.x32(0x2009FFFC) --输出"0x2009fffc"
mcu.tick64()
获取启动后的高精度tick,如果支持bit64库,可以直接输出转换好的bit64结构
参数
传入值类型 | 解释 |
---|---|
boolean | 是否输出bit64结构,true是,其他都是false,留空也是false,用于兼容旧的demo |
返回值
返回值类型 | 解释 |
---|---|
string | 当前tick值,8个字节的uint64,如果支持64bit库,同时要求输出64bit结构的话,会输出9字节的string |
int | 1us有几个tick,0表示未知 |
例子
local tick_str, tick_per = mcu.tick64() print("ticks", tick_str, tick_per)
mcu.dtick64(tick1, tick2, check_value)
计算2个64bit tick的差值
参数
传入值类型 | 解释 |
---|---|
string | 64bit的string |
string | 64bit的string |
int | 参考值,可选项,如果为0,则返回结果中第一个项目为true |
返回值
返回值类型 | 解释 |
---|---|
boolean | 与参考值比较,如果大于等于为true,反之为false |
int | 差值tick1 - tick2,如果超过了0x7fffffff,结果可能是错的 |
例子
local result, diff_tick = mcu.dtick64(tick1, tick2) print("ticks", result, diff_tick)
mcu.setXTAL(source_main, source_32k, delay)
选择时钟源,当前仅air105支持
参数
传入值类型 | 解释 |
---|---|
boolean | 高速时钟是否使用外部时钟源,如果为空则不改变 |
boolean | 低速32K是否使用外部时钟源,如果为空则不改变 |
int | PLL稳定时间,在切换高速时钟的时候,根据硬件环境,需要delay一段时间等待PLL稳定,默认是1200,建议不小于1024 |
返回值
无
例子
mcu.setXTAL(true, true, 1248) --高速时钟使用外部时钟,低速32K使用外部晶振, delay1248
mcu.hardfault(mode)
mcu死机时处理模式,目前只有EC618平台适用
参数
传入值类型 | 解释 |
---|---|
int | 处理模式,0死机停机,1死机后重启,2死机后尽量将错误信息提交给外部工具后重启 |
返回值
无
例子
mcu.hardfault(0) --死机后停机,一般用于调试状态 mcu.hardfault(1) --死机后重启,一般用于正式产品 mcu.hardfault(2) --死机后尽量将错误信息提交给外部工具后重启,一般用于压力测试或者正式产品
mcu.iomux(type, channel, value)
在外设打开前,将外设IO复用到非默认配置上,目前只支持Air780E的部分外设复用到其他配置,这是一个临时接口,如果后续有更合适的api,本接口将不再更新
参数
传入值类型 | 解释 |
---|---|
int | 外设类型,目前只有mcu.UART,mcu.I2C |
int | 总线序号,0~N, |
int | 新的配置,这个需要根据具体平台决定 |
返回值
无
例子
mcu.iomux(mcu.UART, 2, 1) -- Air780E的UART2复用到gpio12和gpio13(Air780EG默认是这个复用,不要动) mcu.iomux(mcu.UART, 2, 2) -- Air780E的UART2复用到gpio6和gpio7 mcu.iomux(mcu.I2C, 0, 1) -- Air780E的I2C0复用到gpio12和gpio13 mcu.iomux(mcu.I2C, 0, 2) -- Air780E的I2C0复用到gpio16和gpio17 mcu.iomux(mcu.I2C, 1, 1) -- Air780E的I2C1复用到gpio4和gpio5
mcu.altfun(type, sn, pad_index, alt_fun, is_input)
IO外设功能复用选择,注意普通MCU是以GPIO号为序号,但是专用SOC,比如CAT1的,是以PAD号为序号。本函数不是所有平台适用
参数
传入值类型 | 解释 |
---|---|
int | 外设类型,目前有mcu.UART,mcu.I2C,mcu.SPI,mcu.PWM,mcu.GPIO,mcu.I2S,mcu.LCD,mcu.CAM,具体需要看平台 |
int | 总线序号,0~N,如果是mcu.GPIO,则是GPIO号。具体看平台的IOMUX复用表 |
int | pad号,如果留空不写,则表示清除配置,使用平台的默认配置。具体看平台的IOMUX复用表 |
int | 复用功能序号,0~N。具体看平台的IOMUX复用表 |
boolean | 是否是输入功能,true是,留空是false |
返回值
无
例子
mcu.altfun(mcu.GPIO, 46, 32, 1, 0) mcu.altfun(mcu.GPIO, 46)
相关文章:
LuatOS-SOC接口文档(air780E)--mcu - 封装mcu一些特殊操作
常量 常量 类型 解释 mcu.UART number 外设类型-串口 mcu.I2C number 外设类型-I2C mcu.SPI number 外设类型-SPI mcu.PWM number 外设类型-PWM mcu.GPIO number 外设类型-GPIO mcu.I2S number 外设类型-I2S mcu.LCD number 外设类型-LCD mcu.CAM num…...

第14期 | GPTSecurity周报
GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区,集成了生成预训练 Transformer(GPT)、人工智能生成内容(AIGC)以及大型语言模型(LLM)等安全领域应用的知识。在这里,您可以…...

【数据结构】优先级队列
⭐ 作者:小胡_不糊涂 🌱 作者主页:小胡_不糊涂的个人主页 📀 收录专栏:浅谈数据结构 💖 持续更文,关注博主少走弯路,谢谢大家支持 💖 PriorityQueue 1. 什么是优先级队列…...
c语言宏相关高级用法
outline all可变参数宏c语言内置函数1.__typeof__2.__builtin_choose_expr all 记录一些c语言宏相关的高级用法 可变参数宏 c语言内置函数 1.typeof 2.__builtin_choose_expr 语法格式 type __builtin_choose_expr (const_exp, exp1, exp2)解释 这个函数的第一个参数必须…...

新款模块上线实现SIP模块与扩拨电话之间打点与喊话功能 IP矿用电话模块SV-2800VP
新款模块上线实现SIP模块与扩拨电话之间打点与喊话功能 IP矿用电话模块SV-2800VP 一、简介 SV-2800VP系列模块是我司设计研发的一款用于井下的矿用IP音频传输模块,可用此模块打造一套低延迟、高效率、高灵活和多扩展的IP矿用广播对讲系统,亦可对传统煤…...

前端开发---在vue项目中使用openLayers
前端开发之在vue项目中使用openLayers 前言效果图在vue中渲染地图安装ol插件1、调用插件2、 初始话地图3、地图点击事件4、重置坐标5、通过坐标改变视图6、保存坐标点 vue中使用的源码 前言 本篇文章主要讲解openLayers的初步使用,包括渲染地图、获取点坐标、标记点…...

C语言之结构体和共用体详解
目录 结构体 结构体的定义和使用 结构体数组的使用 结构体指针的使用 结构体大小的计算 共用体 共用体的定义和使用 typedef用法详解 enum枚举类型 结构体 结构体的定义和使用 C语言的结构体(Struct)是一种自定义的数据类型,它允许…...
iOS插件
把平时看到或项目用到的一些插件进行整理,文章后面分享一些不错的实例,若你有其它的插件欢迎分享,不断的进行更新; 一:第三方插件 1:基于响应式编程思想的oc 地址:https://github.com/ReactiveCocoa/Rea…...
Maven第四章:配置文件详解
Maven第四章:配置文件详解 前言 本章重点知识:掌握setting.xml配置文件以及pom.xml配置文件 setting.xml配置文件 setting.xml文件用于配置Maven的运行环境,包括本地仓库的位置、镜像仓库的配置、认证信息等。以下是setting.xml文件的详细说明: 文件位置: 全局配置文件:…...

计算机网络基础一
任务背景 由于某些原因,某公司搬迁至新地方,现需要对公司网络环境重新调整规划,申请了一个 B 类 IP 地址 : 172.25.0.0 ,子 网掩码为 255.255.224.0 。需要根据公司部门和电脑数进行子网划分并分配 IP 。公司目前有 6 个部门&am…...

搜维尔科技:Touch触觉式力反馈设备与Touch X力反馈设备对比分析
此2款力反馈为最常用的力反馈设备...
SAP保持系统长时间在线
保持系统长时间在线 保持SAP系统长长时间在线不掉线,通过代码,保持一个页面一直在线,ABAP代码如下: *&---------------------------------------------------------------------* *& Report ZGUI *&----------------------------…...

威联通NAS进阶玩法之使用Docker搭建个人博客教程
Hello大家好,本篇教程主要教大家在威联通的NAS上搭建属于自己的个人博客网站,首先介绍一下我使用的机器,四盘位威联通TS-464C2,搭载四核四线程的N5095处理器,支持4K60帧的输出以及PCIE3.0,可玩性还是非常高的。废话不多…...

模型对象CSS2DObject始终在画布的左上角(问题解决)
写了个简单案例模拟一下这个问题,看下图片 下面看下c2渲染器相关代码部分 this.css2DRenderer new CSS2DRenderer(); this.css2DRenderer.render(this.scene, this.camera); this.css2DRenderer.setSize(width, height); this.css2DRenderer.domElement.style.pos…...

LabVIEW开发基于图像处理的车牌检测系统
LabVIEW开发基于图像处理的车牌检测系统 自动车牌识别的一般步骤是图像采集、去除噪声的预处理、车牌定位、字符分割和字符识别。结果主要取决于所采集图像的质量。在不同照明条件下获得的图像具有不同的结果。在要使用的预处理技术中,必须将彩色图像转换为灰度&am…...

Data Analysis With Python
文章目录 Data Analysis With PythonAnalyzing Numerical Data with NumPyCreating NumPy ArrayNumPy Array SlicingNumPy Array BroadcastingAnalyzing Data Using Pandas In this article, we will discuss how to do data analysis with Python. We will discuss all sorts …...

【Selenium】提高测试爬虫效率:Selenium与多线程的完美结合
前言 使用Selenium 创建多个浏览器,这在自动化操作中非常常见。 而在Python中,使用 Selenium threading 或 Selenium ThreadPoolExecutor 都是很好的实现方法。 应用场景: 创建多个浏览器用于测试或者数据采集;使用Selenium 控…...
ElCLib类解析
OpenCascade 中的 ElCLib 类提供了对基本曲线(例如 2D 和 3D 空间中的二次曲线和直线)进行基本几何计算的函数。它提供与参数化、点评估和曲线参数范围内的定位相关的各种操作和计算。以下是一些需要注意的要点: 点和矢量计算:ElC…...

栈、队列、矩阵的总结
栈的应用 括号匹配 表达式求值(中缀,后缀) 中缀转后缀(机算) 中缀机算 后缀机算 总结 特殊矩阵 对称矩阵的压缩存储 三角矩阵 三对角矩阵 稀疏矩阵的压缩存储...

PCL 半径滤波剔除噪点
目录 一、算法原理二、注意事项三、代码实现一、算法原理 PCL半径滤波是删除在输入的点云一定范围内没有达到足够多领域的所有数据点。通俗的讲:就是以一个点p给定一个范围r,领域点要求的个数为m,r若在这个点的r范围内部的个数大于m则保留,小于m则删除。因此,使用该算法时…...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...
mongodb源码分析session执行handleRequest命令find过程
mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令,把数据流转换成Message,状态转变流程是:State::Created 》 St…...
《Playwright:微软的自动化测试工具详解》
Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...

YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...
C++中string流知识详解和示例
一、概览与类体系 C 提供三种基于内存字符串的流,定义在 <sstream> 中: std::istringstream:输入流,从已有字符串中读取并解析。std::ostringstream:输出流,向内部缓冲区写入内容,最终取…...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...

基于 TAPD 进行项目管理
起因 自己写了个小工具,仓库用的Github。之前在用markdown进行需求管理,现在随着功能的增加,感觉有点难以管理了,所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD,需要提供一个企业名新建一个项目&#…...

算法:模拟
1.替换所有的问号 1576. 替换所有的问号 - 力扣(LeetCode) 遍历字符串:通过外层循环逐一检查每个字符。遇到 ? 时处理: 内层循环遍历小写字母(a 到 z)。对每个字母检查是否满足: 与…...

Web后端基础(基础知识)
BS架构:Browser/Server,浏览器/服务器架构模式。客户端只需要浏览器,应用程序的逻辑和数据都存储在服务端。 优点:维护方便缺点:体验一般 CS架构:Client/Server,客户端/服务器架构模式。需要单独…...