【模块系列】STM321.69TFT屏幕
前言
在翻翻自己的器件盒的时候,发现这块好久之前买的TFT屏了,想起还没有用STM32点亮过,手头上正好有立创的梁山派STM32F4,就试着按照网上的文章教程顺便移植个LVGL看看,然后就有了就本文。
代码工程命名的是LvglDemo,不要奇怪。虽然LVGL8.3移植进去了,不知道是不是还没开始优化,跑演示文本滚动的时候,都一卡一卡的,所以LVGL相关代码都注释掉了。本文主要是分享自己编写的CST816T(虽然代码不多),和整个代码工程,LCD的显示代码是修改自中景园的。希望能帮助到大家。
材料
模块:1.69寸液晶显示屏,分辨率:240x280,驱动IC:ST7789V,触摸IC:CST816T。加上立创上打的显示屏驱动板。
开发板:立创梁山派·天空星STM32F407VGT
案例的代码环境:Keil5+STM32CubeMX生成的HAL库,硬件I2C+硬件SPI
其它事项:可能在用I2C与触摸IC建立通信时没反应,如读取芯片ID没有回应之类,那可能是芯片进入待机模式了,可以试着点击屏幕的同时在通信看看有没有反应。
步骤
STM32CubeMX配置简述
SYS上Debug配置成Serial Wire,启用USART1调试,SPI1对接LCD,I2C1对接TOUCH,像LCD上的其它引脚都是找普通的GPIO,按输出、上拉、快速、推挽模式配置,初始状态全部为高电平。
通常1.69"IPS240x280(RGB)的引脚定义
序号 | 模块引脚 | 引脚说明 |
---|---|---|
1 | GND | 液晶屏电源地 |
2 | VCC | 液晶屏电源正(3.3V) |
3 | SCL | 液晶屏SPI总线时钟信号 |
4 | SDA | 液晶屏SPI总线写数据信号 |
5 | RES | 液晶屏复位控制信号 (低电平复位) |
6 | DC | 液晶屏寄存器/数据选择控制信号(低电平:寄存器,高电平:数据) |
7 | CS | 液晶屏片选控制信号 (低电平使能) |
8 | BLK | 液晶屏背光控制信号(高电平点亮,如不需要控制,请接3.3V) |
代码
下面仅展示
CST816T库
和main.c的节选,完整的工程文件会放在末尾。因为目前对CST816T没啥应用,所以就写了几条基本的功能函数,来测试,但是手册上所列出来的寄存器都写成宏了,有需要的可以自行扩写。
CST816T.H
#ifndef __CST816T_H__
#define __CST816T_H__
// #include "stdint.h"// I2C相关参数
#define CST816T_I2CAddress_7bit 0x15
#define CST816T_I2CAddress_8bit_Read (CST816T_I2CAddress_7bit << 1) | 0x01
#define CST816T_I2CAddress_8bit_Write (CST816T_I2CAddress_7bit << 1)// CST816T的寄存器
// 参考于《CST816T通用版本SDK寄存器说明-v1》
#define CST816T_Register_GestureID 0x01 // 手势码
#define CST816T_Register_FingerNum 0x02 // 手指个数
#define CST816T_Register_XposH 0x03 // X坐标高4位
#define CST816T_Register_XposL 0x04 // X坐标低8位
#define CST816T_Register_YposH 0x05 // Y坐标高4位
#define CST816T_Register_YposL 0x06 // Y坐标低8位
#define CST816T_Register_ChipID 0xA7 // 工程编号
#define CST816T_Register_FwVersion 0xA9 // 软件版本号
#define CST816T_Register_FactoryID 0xAA // TP厂家ID
#define CST816T_Register_BPC0H 0xB0 // BPC0值的高8位
#define CST816T_Register_BPC0L 0xB1 // BPC0值的低8位
#define CST816T_Register_BPC1H 0xB2 // BPC1值的高8位
#define CST816T_Register_BPC1L 0xB3 // BPC1值的低8位
#define CST816T_Register_SleepMode 0xE5 // 值为0x03时进入休眠状态(无触摸唤醒功能)
#define CST816T_Register_ErrResetCtl 0xEA // 复位触摸面积相关
#define CST816T_Register_LongPressTick 0xEB // 长按时间门限,默认为100。大约1S
#define CST816T_Register_MotionMask 0xEC // 连续运动手势使能
#define CST816T_Register_IrqPluseWidth 0xED // 中断低脉冲输出宽度
#define CST816T_Register_NorScanPer 0xEE // 正常快速检测周期
#define CST816T_Register_MotionSlAngle 0xEF // 手势检测滑动分区角度控制
#define CST816T_Register_LpScanRaw1H 0xF0 // 低功耗扫描1号通道的基准值的高8位
#define CST816T_Register_LpScanRaw1L 0xF1 // 低功耗扫描1号通道的基准值的低8位
#define CST816T_Register_LpScanRaw2H 0xF2 // 低功耗扫描2号通道的基准值的高8位
#define CST816T_Register_LpScanRaw2L 0xF3 // 低功耗扫描2号通道的基准值的低8位
#define CST816T_Register_LpAutoWakeTime 0xF4 // 低功耗时自动重校正周期
#define CST816T_Register_LpScanTH 0xF5 // 低功耗扫描唤醒门限。越小越灵敏
#define CST816T_Register_LpScanWin 0xF6 // 低功耗扫描量程。越大越灵敏,功耗越高
#define CST816T_Register_LpScanFreq 0xF7 // 低功耗扫描频率。越小越灵敏
#define CST816T_Register_LpScanIdac 0xF8 // 低功耗扫描电流。越小越灵敏
#define CST816T_Register_AutoSleepTime 0xF9 // x秒内无触摸时,自动进入低功耗模式
#define CST816T_Register_IrqCtl 0xFA // 发出低脉冲的动作
#define CST816T_Register_AutoReset 0xFB // x秒内有触摸但无有效手势时,自动复位
#define CST816T_Register_LongPressTime 0xFC // 长按x秒后自动复位
#define CST816T_Register_IOCtl 0xFD // 主控通过拉低IRQ引脚实现触控的软复位功能
#define CST816T_Register_DisAutoSleep 0xFE // 默认为0,使能自动进入低功耗模式// 功能函数
void CST816T_Init(void); // 初始化
uint8_t CST816T_GetGestureID(void); // 获取手势码
uint16_t CST816T_GetXpos(void); // 获取点击的X坐标
uint16_t CST816T_GetYpos(void); // 获取点击的Y坐标
uint8_t CST816T_GetChipID(void); // 获取芯片ID
uint8_t CST816T_GetRegisterData(uint8_t reg); // 获取单个寄存器数据#endif
CST816T.C
#include "main.h"
#include "i2c.h"
#include "CST816T.h"// 初始化
void CST816T_Init(void)
{} // 获取手势码
uint8_t CST816T_GetGestureID(void)
{uint8_t reData[1] = {0}; // 接收数据uint8_t CMD[] = { CST816T_Register_GestureID }; // 命令HAL_I2C_Master_Transmit(&hi2c1, CST816T_I2CAddress_8bit_Write, CMD , 1, 1000);HAL_I2C_Master_Receive(&hi2c1, CST816T_I2CAddress_8bit_Read, reData , 1, 1000);return reData[0];
}// 获取点击的X坐标
uint16_t CST816T_GetXpos(void)
{uint8_t reData[2] = {0}; // 接收数据uint8_t CMD[] = { CST816T_Register_XposH }; // 命令HAL_I2C_Master_Transmit(&hi2c1, CST816T_I2CAddress_8bit_Write, CMD , 1, 1000);HAL_I2C_Master_Receive(&hi2c1, CST816T_I2CAddress_8bit_Read, reData , 2, 1000);return ((reData[0] & 0x0F) << 8) | reData[1];
}// 获取点击的Y坐标
uint16_t CST816T_GetYpos(void)
{uint8_t reData[2] = {0}; // 接收数据uint8_t CMD[] = { CST816T_Register_YposH }; // 命令HAL_I2C_Master_Transmit(&hi2c1, CST816T_I2CAddress_8bit_Write, CMD , 1, 1000);HAL_I2C_Master_Receive(&hi2c1, CST816T_I2CAddress_8bit_Read, reData , 2, 1000);return ((reData[0] & 0x0F) << 8) | reData[1];
}// 获取芯片ID
uint8_t CST816T_GetChipID(void)
{uint8_t reData[1] = {0}; // 接收数据uint8_t CMD[] = { CST816T_Register_ChipID }; // 命令HAL_I2C_Master_Transmit(&hi2c1, CST816T_I2CAddress_8bit_Write, CMD , 1, 1000);HAL_I2C_Master_Receive(&hi2c1, CST816T_I2CAddress_8bit_Read, reData , 1, 1000);return reData[0];
}// 获取单个寄存器数据
// 多用于测试用,放入寄存器地址获取数据
uint8_t CST816T_GetRegisterData(uint8_t reg)
{uint8_t reData[1] = {0}; // 接收数据uint8_t CMD[] = { reg }; // 命令HAL_I2C_Master_Transmit(&hi2c1, CST816T_I2CAddress_8bit_Write, CMD , 1, 1000);HAL_I2C_Master_Receive(&hi2c1, CST816T_I2CAddress_8bit_Read, reData , 1, 1000);return reData[0];
}
main.c节选
// 串口打印
printf("\r\nCST816T-State:\r\n");
printf("CST816T-ID:%x\r\n",CST816T_GetChipID());
printf("CST816T-Gesture:%x\r\n",CST816T_GetGestureID());
printf("CST816T-XYpos:%d,%d\r\n",CST816T_GetXpos(),CST816T_GetYpos());
// 字符串处理
char string_id[30];char string_gesture[30];char string_xypos[30];
sprintf(string_id,"CST816T-ID:%x ",CST816T_GetChipID());
sprintf(string_gesture,"CST816T-Gesture:%x",CST816T_GetGestureID());
sprintf(string_xypos,"CST816T-XYpos:%d,%d ",CST816T_GetXpos(),CST816T_GetYpos());
// LCD显示
// LCD_Fill(0,0,LCD_W,LCD_H,WHITE);
LCD_ShowString(20,70,"CST816T-State:",RED,WHITE,16,0);
LCD_ShowString(20,90,string_id,RED,WHITE,16,0);
LCD_ShowString(20,110,string_gesture,RED,WHITE,16,0);
LCD_ShowString(20,130,string_xypos,RED,WHITE,16,0);
HAL_Delay(50);
图片
配置、测试现象以及模块实物的图片
工程
代码工程文件*1 + CST816T相关数据手册*2
链接: https://pan.baidu.com/s/1cHRa0DefYNnccHHSQnaHHg 提取码: bvjw
相关文章:
【模块系列】STM321.69TFT屏幕
前言 在翻翻自己的器件盒的时候,发现这块好久之前买的TFT屏了,想起还没有用STM32点亮过,手头上正好有立创的梁山派STM32F4,就试着按照网上的文章教程顺便移植个LVGL看看,然后就有了就本文。 代码工程命名的是LvglDemo&…...
机器学习详解(11):分类任务的模型评估标准
模型评估是利用不同的评估指标来了解机器学习模型的性能,以及其优势和劣势的过程。评估对于确保机器学习模型的可靠性、泛化能力以及在新数据上的准确预测能力至关重要。 文章目录 1 介绍2 评估准则3 分类指标3.1 准确率 (Accuracy)3.2 精确率 (Precision)3.3 召回率…...
UE5材质节点Camera Vector/Reflection Vector
Camera Vector相机向量,输出像素到相机的方向,结果归一化 会随着相机移动而改变 Reflection Vector 反射向量,物体表面法线反射到相机的方向,x和y和camera vector相反 配合hdr使用...
基于Springboot + vue实现的夕阳红公寓管理系统
🥂(❁◡❁)您的点赞👍➕评论📝➕收藏⭐是作者创作的最大动力🤞 💖📕🎉🔥 支持我:点赞👍收藏⭐️留言📝欢迎留言讨论 🔥🔥&…...
ctr方法下载的镜像能用docker save进行保存吗?
ctr 和 docker 是两个不同的容器运行时工具,它们使用的镜像存储格式是兼容的(都是 OCI 标准镜像),但它们的镜像管理方式和存储路径不同。因此,直接使用 docker save 保存 ctr 拉取的镜像可能会遇到问题。 关键点 ctr 和 docker 的镜像存储位置不同: ctr(containerd)的镜…...
详解云桌面3种主流架构
本文简要介绍下云桌面(云电脑)的3种主流架构:VDI、IDV和VOI,概念、原理和区别,欢迎阅读。 云桌面作为桌面办公和云计算融合发展的产物,在一定程度上替代了传统的办公形式。目前阿里云、华为云、移动云、电…...
java实现预览服务器文件,不进行下载,并增加水印效果
通过文件路径获取文件,对不同类型的文件进行不同处理,将Word文件转成pdf文件预览,并早呢更加水印,暂不支持Excel文件,如果浏览器不支持PDF文件预览需要下载插件。文中currentUser.getUserid(),即为增加的水…...
【YOLO 项目实战】(12)红外/可见光多模态目标检测
欢迎关注『youcans动手学模型』系列 本专栏内容和资源同步到 GitHub/youcans 【YOLO 项目实战】(10)YOLO8 环境配置与推理检测 【YOLO 项目实战】(11)YOLO8 数据集与模型训练 【YOLO 项目实战】(12)红外/可…...
csrf跨站请求伪造(portswigger)无防御措施
前言:基础csrf学习(没有任何防御措施) 内容来自portswigger,一个靶场练习,国外的网站,可能需要翻墙 要使 CSRF 攻击成为可能,必须满足三个关键条件: 相关操作。应用程序中存在攻击…...
究极炫酷3D立方体宇宙
演示动画:https://life.mdjsjd.me/2024/12/27/3d-cube-animation/ 一个使用Python和Pygame制作的炫酷3D立方体动画效果。结合了多种视觉特效,包括: 动态旋转的3D立方体炫彩渐变的颜色系统星空背景粒子效果动态残影拖尾效果深度透视投影 主要特性 动态变换: 立方…...
node.js之---集群(Cluster)模块
为什么会有集群(Cluster)模块? 集群(Cluster)模块的作用 如何使用集群(Cluster)模块? 为什么会有集群(Cluster)模块 Node.js 是基于 单线程事件驱动 模型的…...
PTA数据结构作业四
7-10 判断两点之间是否存在路径 本题要求输出两个顶点之间是否存在路径 输入格式: 输入包括两部分,第一部分是邻接矩阵表示方法中对应1的两个顶点,用0 0 表示结束 第二部分是两个顶点,例如 Vi和Vj 输出格式: 如果Vi和Vj存在路径,输出1;否则输出0 输入样例: 0 1 1 0…...
Spring-kafka快速Demo示例
使用Spring-Kafka快速发送/接受Kafka消息示例代码,项目结构是最基础的SpringBoot结构,提前安装好Kafka,确保Kafka已经正确启动 pom.xml,根据个人情况更换springboot、java版本等 <?xml version"1.0" encoding&qu…...
Java开发工具-Jar命令
Java开发工具-Jar 1、jar命令全平台使用 2、jar命令的作用 为类和资源创建存档,并从存档中操作或恢复单个类或资源 3、摘要 jar [OPTION …] [ [–release VERSION] [-C dir] files] … 4、jar命令描述 jar命令通常作为用于压缩与解压的工具,基于ZIP或Z…...
flux文生图模型实践
flux文生图模型实践 flyfish https://github.com/black-forest-labs/flux Black Forest Labs发布FLUX.1 Tools,这是一套模型全家桶,旨在为FLUX.1基础文本转图像模型添加控制和可操纵性,从而实现对真实图像和生成图像的修改和重新创建。FLU…...
Lecture 19
冯诺依曼模型 (The von Neumann Model) 核心概念: 1. 冯诺依曼模型的基本结构: • 该模型描述了现代计算机的基本结构,包含以下关键组件: • 输入设备 (Input device): • 用于从用户向计算机传递信息,…...
学习EDK2显示图片
原本想看看Logo是怎么显示的,但是发现可以通过EDK显示Logo的方式显示图片,因为我发现它并没有解码函数,就是写个Driver,代码会有点乱,我后面会整理后修改的。 在MdeModulePkg下,我们可以找到Logo此文件夹。 Logo.ibf中…...
MYSQL如何重置root密码
如果您从未为MySQL分配root密码,则服务器根本不需要以root身份连接的密码。但是,这是不安全的。建议一定要设置root密码。 如果您知道root密码并想要更改它,推荐使用ALTER USER user IDENTIFIED BY auth_string; 如果您之前分配了root密码但…...
基于Python实现车辆检测、机动车检测、识别位置标记、计数
目录 引言背景与应用场景车辆检测的研究意义相关工作车辆检测概述机动车检测方法分类基于传统计算机视觉的检测方法基于深度学习的检测方法技术与方法车辆检测技术概述基于Python的车辆检测方法图像处理与特征提取深度学习方法(如YOLO、SSD、Faster R-CNN等)数据集与标注常用…...
277-基于八路256Ksps 24bit AD生物电震动检测FMC子卡
一、板卡概述 板卡基于AD7768 AD芯片设计的八路低速采集的FMC 子卡,支持直流耦合,产品应用于生物电、脑电波、声音,震动等信号采集。 二、板卡参数及性能 板卡功能 参数 内容 ADC 芯片型号 AD7768 路数 8路ADC, 采样率 2…...
连接Milvus
连接到Milvus 验证Milvus服务器正在侦听哪个本地端口。将容器名称替换为您自己的名称。 docker port milvus-standalone 19530/tcp docker port milvus-standalone 2379/tcp docker port milvus-standalone 192.168.1.242:9091/api/v1/health 使用浏览器访问连接地址htt…...
GitHub 上排名前 11 的开源管理后台(Admin Dashboard)项目
如果你是一名开发者,经常处理数据或参与项目管理,那么这篇文章绝对值得收藏!当你需要一个高效、易用的管理后台(Admin Dashboard)项目时,本文会给你灵感。 在现代企业管理和业务运营中,管理后台…...
C++ 实现map容器从大到小排序
map容器默认从小到大排序 利用仿函数可以修改map容器的排序规则为从大到小 示例: #include<iostream> #include<string> #include<map> using namespace std; class MyCompare { public: bool operator()(const int v1, const int v2) co…...
vue项目利用webpack进行优化案例
使用 Webpack 优化 Vue 项目是提升性能和减少打包体积的关键步骤。以下是几个常见的优化案例及其详细实现方法: 1. 优化打包大小 1.1 按需加载 (Lazy Loading) Vue 提供了路由懒加载功能,可以将组件拆分成独立的块,按需加载,从而…...
centos双网卡不能上网
双网卡类型 ens33 仅主机 ens34 NAT 问题 window配置一切正常,虚拟机不能上网 解决 方案1:路由引起 查看路由 route结果如下: [rootdata-repository ~]# route Kernel IP routing table Destination Gateway Genmask …...
十个Scala的小知识
# 1. 与Java的互操作性 Scala与Java有很好的互操作性。可以在Scala项目中直接使用Java类库,也可以将Scala代码编译后供Java项目使用。例如,一个Java框架可以轻松地集成Scala编写的代码模块。 # 2. 强大的集合库 Scala拥有功能丰富的集合库。像List、Se…...
Redis Stream:实时数据处理的高效解决方案
Redis Stream:实时数据处理的高效解决方案 引言 在当今这个数据驱动的时代,实时数据处理对于各种应用场景都至关重要。Redis,作为一个高性能的键值存储系统,自然也紧跟这一趋势,推出了Redis Stream——一种用于处理实…...
Bert中文文本分类
这是一个经典的文本分类问题,使用google的预训练模型BERT中文版bert-base-chinese来做中文文本分类。可以先在Huggingface上下载预训练模型备用。https://huggingface.co/google-bert/bert-base-chinese/tree/main 我使用的训练环境是 pip install torch2.0.0; pi…...
【Rust自学】8.5. HashMap Pt.1:HashMap的定义、创建、合并与访问
8.5.0. 本章内容 第八章主要讲的是Rust中常见的集合。Rust中提供了很多集合类型的数据结构,这些集合可以包含很多值。但是第八章所讲的集合与数组和元组有所不同。 第八章中的集合是存储在堆内存上而非栈内存上的,这也意味着这些集合的数据大小无需在编…...
使用云计算开发App 有哪些坑需要避免
当我们在云计算环境下开发App时,往往会觉得一切都变得“轻松”了。毕竟,云计算提供了无限的计算资源、灵活的存储方案,还有自动化的服务,仿佛有了一个万能的工具箱,啥都能搞定。可是,别被这种“轻松”外表骗…...
arcgis模版空库怎么用(一)
这里以某个项目的数据为例: 可以看到,属性表中全部只有列标题,无数据内容 可能有些人会认为空库是用来往里面加入信息的,其实不是,正确的用法如下: 一、下图是我演示用的数据,我们可以看到其中…...
C#控件开发4—仪表盘
目录 思路(GDI绘图)1.定义属性2.绘制图形3.最后生成(自定义各种监控值显示)End 如何让温度、湿度、压力等有量程的监控值如仪表盘(DashBoard)一样显示? 思路(GDI绘图) 定…...
基于BiTCN双向时间卷积网络实现电力负荷多元时序预测(PyTorch版)
Bidirectional Temporal Convolutional Network \begin{aligned} &\text{\Large \color{#CDA59E}Bidirectional Temporal Convolutional Network}\\ \end{aligned} Bidirectional Temporal Convolutional Network Bidirectional Temporal Convolutional Network (BiTC…...
No.2十六届蓝桥杯备战|练习题4道|数据类型|字符型|整型|浮点型|布尔型|signed|unsigned(C++)
B2002 Hello,World! - 洛谷 #include <iostream> using namespace std; int main() { cout << "Hello,World!" << endl; return 0; }打印飞机 #include <iostream> using namespace std;int main() {cout << " …...
前端项目 npm报错解决记录
1.首先尝试解决思路 npm报错就切换yarn , yarn报错就先切换npm删除 node_modules 跟 package-lock.json文件重新下载依 2. 报错信息: Module build failed: Error: Missing binding D:\vue-element-admin\node_modules\node-sass\vendor\win32-x64-8…...
正弦函数解析(sin.rs)
sin.rs文件提供了sin函数的实现,它计算并返回一个浮点数(f64类型)的正弦值。这个函数首先处理了一些特殊情况,如极小的值、无穷大和NaN(非数字),然后使用rem_pio2函数将输入参数x归约到[-π/2, …...
python 归并排序(Merge Sort)
归并排序(Merge Sort) 归并排序是一种高效的排序算法,采用分治法(Divide and Conquer)策略。它的基本思想是:将数组递归地分成两半,分别对两半进行排序,然后将排序后的两半合并成一…...
Zeotero安装”translate for Zotero“插件
一、Zeotero6translate for Zotero 1.0.28 二、打开Zeotero官网,找到下面圈起来的 三、点击以上连接跳转,Releases windingwind/zotero-pdf-translate 下载 zotero-pdf-翻译.xpi 四、打开zeotero,工具>附加组件(或插件&am…...
python 选择排序(Selection Sort)
选择排序(Selection Sort) 选择排序是一种简单的排序算法。它的基本思想是:每次从未排序的部分中选择最小(或最大)的元素,将其放到已排序部分的末尾。重复这个过程,直到所有元素都被排序。 选…...
履约系统:应用层、领域层、集成关系设计
在这篇文章中,我们一起探讨订单履约系统的应用架构设计。 应用架构设计 我们前面讨论了系统的核心概念模型和拆单逻辑。接下来,让我们从应用架构的角度,深入了解系统的各个层次。这包括应用层、领域层,以及与其他系统的集成关系。…...
SpringBoot开发——整合 Elasticsearch 实现数据高效搜索
文章目录 一、Elasticsearch 简介二、Spring Boot 整合 Elasticsearch 的准备工作1. 安装 Elasticsearch2. 创建 Spring Boot 项目3. 添加 Maven 依赖三、配置 Elasticsearch 连接四、定义实体类和仓库接口1. 定义实体类2. 定义仓库接口五、实现业务逻辑和控制器1. 实现业务逻辑…...
风力涡轮机缺陷检测数据集,91.4%准确识别率,18912张图片,支持yolo,PASICAL VOC XML,COCO JSON格式的标注
风力涡轮机缺陷检测数据集,91.4%准确识别率,18912张图片,支持yolo,PASICAL VOC XML,COCO JSON格式的标注 数据集下载: yolo v&#…...
直观解读 JuiceFS 的数据和元数据设计(一)
大家读完觉得有意义和帮助记得关注和点赞!!! 1 JuiceFS 高层架构与组件2 搭建极简 JuiceFS 集群 2.1 搭建元数据集群2.2 搭建对象存储(MinIO) 2.2.1 启动 MinIO server2.2.2 创建 bucket2.3 下载 juicefs 客户端2.4 创…...
【数据结构】(Python)差分数组。差分数组与树状数组结合
差分数组: 基于原数组构造的辅助数组。用于区间修改、单点查询。区间修改的时间复杂度O(1)。单点查询的时间复杂度O(n)。差分数组的元素:第一个元素等于原数组第一个元素,从第二个元素开始是原数组对应下标的元素与前一个元素的差࿰…...
基于zynq在linux下的HDMI实战
ZYNQ系列文章目录 第一章:基于zynq在linux下的phy调试记录 第二章:qemu制作ubuntu文件系统 第三章:基于zynq在linux下的AXI-CAN实战 第四章:基于zynq在linux下的HDMI实战 文章目录 ZYNQ系列文章目录前言一、vivado中HDMI的配置1.…...
HT-HaiBOX边缘计算盒 智慧工厂方案,智慧医疗方案,智慧加油站方案,智慧安防方案,智慧城市方案;方案定制开发
背景介绍 在当今数字化时代,各个行业对于智能化视频监控设备的需求日益增长。无论是安防监控,还是智慧工厂、智慧城市等领域,都需要高效、智能的设备来保障安全和提高生产效率。然而,传统的视频监控设备存在诸多痛点:…...
【JMeter详解】
JMeter详解 Apache JMeter 是一个开源的、100%纯Java应用程序,设计用于负载测试和性能测量。它最初是为测试Web应用程序而设计的,但后来扩展到其他测试功能。JMeter可以用来对静态和动态资源(如静态文件、Servlets、Perl脚本、Java对象、数据…...
《PHP Switch》
《PHP Switch》 介绍 PHP 是一种广泛使用的服务器端编程语言,而 switch 语句是 PHP 中用于基于不同条件执行不同代码块的关键字。在本篇文章中,我们将详细介绍 PHP 中的 switch 语句,包括其语法、用法、以及在实际编程中的应用场景。 语法…...
如何确保涡度通量观测数据的准确性?涡度通量光敏感性分析、温度敏感性分析、数据风浪区分析等
确保涡度通量观测数据的准确性,可以采取以下几个步骤: 1.数据预处理:在进行数据分析之前,需要对原始的高频涡度通量数据进行预处理,包括剔除异常值和进行数据缺失插补。异常值剔除可以通过设定合理的阈值来识别并剔除数…...
linux自动化批量分发SSH密钥同时批量测试SSH连接教程(包含自动化脚本代码)
1、检查端口 检查分发对象22端口是否打开 nmap -p22 ip地址如果要批量检查端口可以参考我写的这篇文章:linux自动化一键批量检查主机端口 2、命令行分发密钥原理 Linux分发密钥原理主要涉及SSH(Secure Shell)协议,该协议用于…...