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则删除。因此,使用该算法时…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...
树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频
使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统
医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...

.Net框架,除了EF还有很多很多......
文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

【网络安全产品大调研系列】2. 体验漏洞扫描
前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...
3403. 从盒子中找出字典序最大的字符串 I
3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)
本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...