多点电容触摸屏实验
目录
一、简介
二、硬件原理
编辑1、CT_INT
2、I2C2_SCL和I2C2_SDA
3、RESET复位引脚
三、FT54x6/FT52x6电容触摸芯片
四、代码编写
1、编写ft5426.h
2、编写ft5426.c
3、main函数
一、简介
电容屏只需要手指轻触即可,而电阻屏是需要手指给予一定的压力才有反应,而且电容触摸芯片输出的触摸点坐标信息为对应的屏幕像素点信息,因此不需要校准,电阻屏需要校准。如今多点电容触摸屏已经得到了广泛的应用,手机、平板、电脑、广告机等等,如果要做人机交互设备的开发,多点电容触摸屏基本是不可能绕过去的
电容触摸屏需要一个IC驱动控制的,一般是I2C接口,多点触摸屏驱动最终就是一个I2C外设驱动
二、硬件原理
找到RGB的原理图
1、CT_INT
触摸中断线
连接到了GPIO1_IO09,查数据手册
可以复用为GPIO1_IO09
2、I2C2_SCL和I2C2_SDA
I2C2_SCL:连接到了UART5_TXD;I2C2_SDA:连接到了UART5_RXD,查数据手册
都可以复用
3、RESET复位引脚
连接到了SNVS_TAMPER9,查数据手册
可以看到就复位为GPIO5_IO09
三、FT54x6/FT52x6电容触摸芯片
使用到的部分寄存器如下
寄存器地址 | 位 | 寄存器功能 | 描述 |
0X00 | [6:4] | 模式寄存器 | 设置 FT5426 的工作模式: 000:正常模式。001:系统信息模式100:测试模式。 |
0X02 | [3:0] | 触摸状态寄存器 | 记录有多少个触摸点,有效值为 1~5。 |
0X03 | [7:6] | 第一个触摸点 X 坐标高位数据 | 事件标志: 00:按下。01:抬起10:接触11:保留 |
[3:0] | X 轴坐标值高 4 位。 |
0X04 | [7:0] | 第一个触摸点 X 坐标低位数据 | X 轴坐标值低 8 位 |
0X05 | [7:4] | 第一个触摸点 Y 坐标高位数据 | 触摸点的 ID。 |
[3:0] | Y 轴坐标高 4 位 | ||
0X06 | [7:0] | 第一个触摸点 Y 坐标低位数据 | Y 轴坐标低 8 位 |
0X09 | [7:6] | 第二个触摸点 X 坐标高位数据 | 与寄存器 0X03 含义相同。 |
[3:0] | |||
0X0A | [7:0] | 第二个触摸点 X 坐标低位数据 | 与寄存器 0X04 含义相同。 |
0X0B | [7:4] | 第二个触摸点 Y 坐标高位数据 | 与寄存器 0X05 含义相同。 |
[3:0] | |||
0X0C | [7:0] | 第二个触摸点 Y 坐标低位数据 | 与寄存器 0X06 含义相同 |
0X0F | [7:6] | 第三个触摸点 X 坐标高位数据 | 与寄存器 0X03 含义相同。 |
[3:0] | |||
0X10 | [7:0] | 第三个触摸点 X 坐标低位数据 | 与寄存器 0X04 含义相同。 |
0X11 | [7:4] | 第三个触摸点 Y 坐标高位数据 | 与寄存器 0X05 含义相同。 |
[3:0] | |||
0X12 | [7:0] | 第三个触摸点 Y 坐标低位数据 | 与寄存器 0X06 含义相同 |
0X15 | [7:6] | 第四个触摸点 X 坐标高位数据 | 与寄存器 0X03 含义相同。 |
[3:0] | |||
0X16 | [7:0] | 第四个触摸点 X 坐标低位数据 | 与寄存器 0X04 含义相同。 |
0X17 | [7:4] | 第四个触摸点 Y 坐标高位数据 | 与寄存器 0X05 含义相同。 |
[3:0] | |||
0X18 | [7:0] | 第四个触摸点 Y 坐标低位数据 | 与寄存器 0X06 含义相同 |
0X1B | [7:6] | 第五个触摸点 X 坐标高位数据 | 与寄存器 0X03 含义相同。 |
[3:0] | |||
0X1C | [7:0] | 第五个触摸点 X 坐标低位数据 | 与寄存器 0X04 含义相同。 |
0X1D | [7:4] | 第五个触摸点 Y 坐标高位数据 | 与寄存器 0X05 含义相同。 |
[3:0] | |||
0X1E | [7:0] | 第五个触摸点 Y 坐标低位数据 | 与寄存器 0X06 含义相同 |
0XA1 | [7:0] | 版本寄存器 | 版本高字节 |
0XA2 | [7:0] | 版本低字节 | |
0XA4 | [7:0] | 中断模式寄存器 | 用于设置中断模式: 0:轮询模式1:触发模式 |
这里使用设备的IIC地址为0X38
四、代码编写
创建文件
1、编写ft5426.h
#ifndef __BSP_FT5426_H
#define __BSP_FT5426_H#include "imx6ul.h"
#include "bsp_gpio.h"
#include "bsp_int.h"
#include "bsp_delay.h"
#include "bsp_i2c.h"
#include "stdio.h"/*寄存器宏*/
#define FT5426_ADDR 0X38 /* FT5426设备地址 */#define FT5426_DEVICE_MODE 0X00 /* 模式寄存器 */
#define FT5426_IDGLIB_VERSION 0XA1 /* 固件版本寄存器 */
#define FT5426_IDG_MODE 0XA4 /* 中断模式 */
#define FT5426_TD_STATUS 0X02 /* 触摸状态寄存器 */
#define FT5426_TOUCH1_XH 0X03 /* 触摸点坐标寄存器,* 一个触摸点用4个寄存器存储坐标数据*/#define FT5426_XYCOORDREG_NUM 30 /* 触摸点坐标寄存器数量 */
#define FT5426_INIT_FINISHED 1 /* 触摸屏初始化完成 */
#define FT5426_INIT_NOTFINISHED 0 /* 触摸屏初始化未完成 */#define FT5426_TOUCH_EVENT_DOWN 0x00 /* 按下 */
#define FT5426_TOUCH_EVENT_UP 0x01 /* 释放 */
#define FT5426_TOUCH_EVENT_ON 0x02 /* 接触 */
#define FT5426_TOUCH_EVENT_RESERVED 0x03 /* 没有事件 *//* 触摸屏结构体 */
struct ft5426_dev_struc
{ unsigned char initfalg; /* 触摸屏初始化状态 */unsigned char intflag; /* 标记中断有没有发生 */unsigned char point_num; /* 触摸点 */unsigned short x[5]; /* X轴坐标 */unsigned short y[5]; /* Y轴坐标 */};extern struct ft5426_dev_struc ft5426_dev;void ft5426_init();
void gpio1_io09_irqhandler(unsigned int gicciar,void *param);
unsigned char ft5426_writeonebyte(unsigned char addr,unsigned char reg, unsigned char data);
unsigned char ft5426_readonebyte(unsigned char addr,unsigned char reg);
void ft5426_read_len(unsigned char addr,unsigned char reg,unsigned char len,unsigned char *buf);
void ft5426_read_tpcoord();
#endif
2、编写ft5426.c
#include "bsp_ft5426.h"struct ft5426_dev_struc ft5426_dev;
/*初始化5426*/
void ft5426_init()
{unsigned char reg_value[2];/* 1、初始化IIC2 IO* I2C2_SCL -> UART5_TXD* I2C2_SDA -> UART5_RXD*/IOMUXC_SetPinMux(IOMUXC_UART5_TX_DATA_I2C2_SCL,1);/*复用为I2C2_SCL*/IOMUXC_SetPinMux(IOMUXC_UART5_RX_DATA_I2C2_SDA,1);/*复用为I2C2_SDA*//* 配置I2C2 IO属性 *bit 16:0 HYS关闭*bit [15:14]: 1 默认47K上拉*bit [13]: 1 pull功能*bit [12]: 1 pull/keeper使能 *bit [11]: 0 关闭开路输出*bit [7:6]: 10 速度100Mhz*bit [5:3]: 110 驱动能力为R0/6*bit [0]: 1 高转换率*/IOMUXC_SetPinConfig(IOMUXC_UART5_TX_DATA_I2C2_SCL,0x70b0);IOMUXC_SetPinConfig(IOMUXC_UART5_RX_DATA_I2C2_SDA,0x70b0);/*初始化INT引脚,使能中断*/gpio_pin_config_t ctint_config;IOMUXC_SetPinMux(IOMUXC_GPIO1_IO09_GPIO1_IO09,0);/*复用为GPIO1_IO09*/IOMUXC_SetPinConfig(IOMUXC_GPIO1_IO09_GPIO1_IO09,0xf080);/* 中断IO初始化 */ctint_config.direction =kGPIO_IntRisingOrFallingEdge;gpio_init(GPIO1 , 9 , &ctint_config);GIC_EnableIRQ(GPIO1_Combined_0_15_IRQn);system_register_irqhandler(GPIO1_Combined_0_15_IRQn,(system_irq_handler_t)gpio1_io09_irqhandler,NULL);gpio_enableint(GPIO1 , 9);/*复位引脚rst初始化*/gpio_pin_config_t ctrst_config;IOMUXC_SetPinMux(IOMUXC_SNVS_SNVS_TAMPER9_GPIO5_IO09,0);/*复用为GPIO5_IO09*/IOMUXC_SetPinConfig(IOMUXC_SNVS_SNVS_TAMPER9_GPIO5_IO09,0x10b0);gpio_init(GPIO5 , 9 , &ctrst_config);gpio_pinwrite(GPIO5 , 9 , 0);/*复位*/delayms(50);gpio_pinwrite(GPIO5 , 9 , 1);/*停止复位*/delayms(50);/*I2C2初始化*/i2c_init(I2C2);/*ft5426初始化*/ft5426_read_len(FT5426_ADDR,FT5426_IDGLIB_VERSION,2,reg_value);printf("touch frimware version:%#x\r\n",((unsigned short)reg_value[0] << 8) | reg_value[1]);/*设置工作在正常模式*/ft5426_writeonebyte(FT5426_ADDR,FT5426_DEVICE_MODE,0);/*设置中断模式*/ft5426_writeonebyte(FT5426_ADDR,FT5426_IDG_MODE,1);ft5426_dev.initfalg = FT5426_INIT_FINISHED;}
/*中断处理函数*/
void gpio1_io09_irqhandler(unsigned int gicciar , void *param)
{if(ft5426_dev.initfalg == FT5426_INIT_FINISHED){ft5426_read_tpcoord();}/*清除中断标志位*/gpio_clearintflags(GPIO1,9);
}
/*向FT5426写入数据*/
unsigned char ft5426_writeonebyte(unsigned char addr,unsigned char reg, unsigned char data)
{unsigned char status=0;unsigned char writedata=data;struct i2c_transfer masterXfer;/* 配置I2C xfer结构体 */masterXfer.slaveAddress = addr; /* 设备地址 */masterXfer.direction = kI2C_Write; /* 写入数据 */masterXfer.subaddress = reg; /* 要写入的寄存器地址 */masterXfer.subaddressSize = 1; /* 地址长度一个字节 */masterXfer.data = &writedata; /* 要写入的数据 */masterXfer.dataSize = 1; /* 写入数据长度1个字节 */if(i2c_master_transfer(I2C2, &masterXfer))status=1;return status;
}
/*从FT5426读数据*/
unsigned char ft5426_readonebyte(unsigned char addr,unsigned char reg)
{unsigned char val=0;struct i2c_transfer masterXfer; masterXfer.slaveAddress = addr; /* 设备地址 */masterXfer.direction = kI2C_Read; /* 读取数据 */masterXfer.subaddress = reg; /* 要读取的寄存器地址 */masterXfer.subaddressSize = 1; /* 地址长度一个字节 */masterXfer.data = &val; /* 接收数据缓冲区 */masterXfer.dataSize = 1; /* 读取数据长度1个字节 */i2c_master_transfer(I2C2, &masterXfer);return val;
}
/*从FT5426读多个寄存器数据*/
void ft5426_read_len(unsigned char addr,unsigned char reg,unsigned char len,unsigned char *buf)
{struct i2c_transfer masterXfer; masterXfer.slaveAddress = addr; /* 设备地址 */masterXfer.direction = kI2C_Read; /* 读取数据 */masterXfer.subaddress = reg; /* 要读取的寄存器地址 */masterXfer.subaddressSize = 1; /* 地址长度一个字节 */masterXfer.data = buf; /* 接收数据缓冲区 */masterXfer.dataSize = len; /* 读取数据长度1个字节 */i2c_master_transfer(I2C2, &masterXfer);
}
/*读取触摸坐标信息*/
void ft5426_read_tpcoord()
{unsigned char pointbuf[FT5426_XYCOORDREG_NUM],i=0,type=0;ft5426_dev.point_num = ft5426_readonebyte(FT5426_ADDR,FT5426_TD_STATUS);printf("touch num = %d\r\n",ft5426_dev.point_num);/*触摸点信息寄存器*/ft5426_read_len(FT5426_ADDR,FT5426_TOUCH1_XH,FT5426_XYCOORDREG_NUM,pointbuf);for(i=0;i<ft5426_dev.point_num;i++){unsigned char *buf = &pointbuf[i*6];ft5426_dev.y[i] = ((buf[0] << 8) | buf[1]) & 0xfff;ft5426_dev.x[i] = ((buf[2] << 8) | buf[3]) & 0xfff;type = buf[0] >> 6;if(type == FT5426_TOUCH_EVENT_DOWN){}else if(type == FT5426_TOUCH_EVENT_UP){}else if(type == FT5426_TOUCH_EVENT_ON){}else{}}}
3、main函数
#include "bsp_clk.h"
#include "bsp_delay.h"
#include "bsp_led.h"
#include "bsp_beep.h"
#include "bsp_key.h"
#include "bsp_int.h"
#include "bsp_uart.h"
#include "bsp_lcd.h"
#include "bsp_lcdapi.h"
#include "bsp_rtc.h"
#include "bsp_icm20608.h"
#include "bsp_spi.h"
#include "stdio.h"
#include "bsp_ft5426.h"
#include "bsp_gt9147.h"/** @description : main函数* @param : 无* @return : 无*/
int main(void)
{unsigned char i = 0;unsigned char state = OFF;int_init(); /* 初始化中断(一定要最先调用!) */imx6u_clkinit(); /* 初始化系统时钟 */delay_init(); /* 初始化延时 */clk_enable(); /* 使能所有的时钟 */led_init(); /* 初始化led */beep_init(); /* 初始化beep */uart_init(); /* 初始化串口,波特率115200 */lcd_init(); /* 初始化LCD */ /* 初始化触摸屏 */ gt9147_init();if(gt_init_fail==1) //判断gt系列初始化是否失败{ft5426_init();}tftlcd_dev.forecolor = LCD_RED;lcd_show_string(50, 10, 400, 24, 24, (char*)"ALPHA-IMX6UL TOUCH TEST"); /* 显示字符串 */lcd_show_string(50, 40, 200, 16, 16, (char*)"MY@4384"); lcd_show_string(50, 60, 200, 16, 16, (char*)"2023/2/22"); lcd_show_string(50, 110, 400, 16, 16, (char*)"TP Num :"); lcd_show_string(50, 130, 200, 16, 16, (char*)"Point0 X:"); lcd_show_string(50, 150, 200, 16, 16, (char*)"Point0 Y:"); lcd_show_string(50, 170, 200, 16, 16, (char*)"Point1 X:"); lcd_show_string(50, 190, 200, 16, 16, (char*)"Point1 Y:"); lcd_show_string(50, 210, 200, 16, 16, (char*)"Point2 X:"); lcd_show_string(50, 230, 200, 16, 16, (char*)"Point2 Y:"); lcd_show_string(50, 250, 200, 16, 16, (char*)"Point3 X:"); lcd_show_string(50, 270, 200, 16, 16, (char*)"Point3 Y:"); lcd_show_string(50, 290, 200, 16, 16, (char*)"Point4 X:"); lcd_show_string(50, 310, 200, 16, 16, (char*)"Point4 Y:"); while(1) {lcd_shownum(50 + 72, 110, ft5426_dev.point_num , 1, 16);lcd_shownum(50 + 72, 130, ft5426_dev.x[0], 5, 16);lcd_shownum(50 + 72, 150, ft5426_dev.y[0], 5, 16);lcd_shownum(50 + 72, 170, ft5426_dev.x[1], 5, 16);lcd_shownum(50 + 72, 190, ft5426_dev.y[1], 5, 16);lcd_shownum(50 + 72, 210, ft5426_dev.x[2], 5, 16);lcd_shownum(50 + 72, 230, ft5426_dev.y[2], 5, 16);lcd_shownum(50 + 72, 250, ft5426_dev.x[3], 5, 16);lcd_shownum(50 + 72, 270, ft5426_dev.y[3], 5, 16);lcd_shownum(50 + 72, 290, ft5426_dev.x[4], 5, 16);lcd_shownum(50 + 72, 310, ft5426_dev.y[4], 5, 16);delayms(10);i++; if(i == 50){ i = 0;state = !state;led_switch(LED0,state); }}return 0;
}
烧写到sd卡插到开发版上后就触摸,就会显示多少个触摸点和相关触摸点的坐标
相关文章:

多点电容触摸屏实验
目录 一、简介 二、硬件原理 编辑1、CT_INT 2、I2C2_SCL和I2C2_SDA 3、RESET复位引脚 三、FT54x6/FT52x6电容触摸芯片 四、代码编写 1、编写ft5426.h 2、编写ft5426.c 3、main函数 一、简介 电容屏只需要手指轻触即可,而电阻屏是需要手指给予一定的压力才…...

【算法与数据结构(C语言)】栈和队列
文章目录 目录 前言 一、栈 1.栈的概念及结构 2.栈的实现 入栈 出栈 获取栈顶元素 获取栈中有效元素个数 检测栈是否为空,如果为空返回非零结果,如果不为空返回0 销毁栈 二、队列 1.队列的概念及结构 2.队列的实现 初始化队列 队尾入队列 队头出队列 获…...

Uni-app使用vant和uview组件
目录 1.安装vant组件 1.1安装前需知 1.2.安装 1.3.创建uni-app项目 2.安装uview-ui组件 2.1官网 2.2安装 2.3安装成功 1.安装vant组件 1.1安装前需知 小程序能使用vant-weapp组件,且官网的安装是直接导入小程序中,不能直接导入uni-app框架中 V…...

2023年PMP考试应该注意些什么?
首先注意(报考条件) 2023年PMP考试报名流程: 一、PMP英文报名: 英文报名时间无限制,随时可以报名,但有一年的有效期,所以大家尽量提前报名,在英文报名有效期内进行中文报名。 英…...

selenium环境安装及使用
selenium简介官网https://www.selenium.dev简介用于web浏览器测试的工具支持的浏览器包括IE,Firefox,Chrome,edge等使用简单,可使用java,python等多种语言编写用例脚本主要由三个工具构成,webdriver,IDE,web自动化环境…...

高性能低功耗4口高速USB2.0 HUB 完美替代FE1.1S和FE8.1
该NS1.1s是一个高度集成的,高品质,高性能,低功耗,为USB 2.0高速4端口集线器又低成本的解决方案。 (点击即可咨询芯片详细信息) NS1.1s的特点 1.通用串行总线规范修订版2.0(USB 2.0)完…...

Go全栈学习(一)基础语法
Go语言基础语法 文章目录Go语言基础语法注释变量变量的定义变量的交换理解变量(内存地址)匿名变量变量的作用域常量2023.2.4日 总结// 关于Goland 中 执行的问题// 1、包下执行 (一个 main 函数来执行,如果有多个,无法…...

centos7搭建svn配置
基本概述 Apache Subversion(简称SVN,svn),一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS转移到Subversion。…...
趣味三角——第12章——tanx
第12章节 tanx In his very numerous memoires, and especially in his great work, Introductio in analysin infinitorum (1748), Euler displayed the most wonderful skill in obtaining a rich harvest of results of great interest. . . . Hardly any other work …...

Java - 数据结构,栈
一、栈 1.1、什么是栈 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈 顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。 压…...

某餐厅系统网络故障分析案例
背景 针对食堂经营企业,某堂食软件为客户提供优化堂食就餐流程、提高食堂服务水平和管理效率。 某上海客户使用该堂食系统,在就餐高峰时段,总是出现支付、点餐等操作缓慢,动辄一个操作需要等待几十秒。该客户联系软件厂商&#…...

华为OD机试题,用 Java 解【密室逃生游戏】问题
最近更新的博客 华为OD机试 - 猴子爬山 | 机试题算法思路 【2023】华为OD机试 - 分糖果(Java) | 机试题算法思路 【2023】华为OD机试 - 非严格递增连续数字序列 | 机试题算法思路 【2023】华为OD机试 - 消消乐游戏(Java) | 机试题算法思路 【2023】华为OD机试 - 组成最大数…...

如何重命名SQL Server数据库
重命名SQL Server数据库 使用T-SQL重命名SQL Server数据库使用分离和附加重命名SQL Server数据库使用T-SQL查询分离和重新连接在SSMS中分离和重新连接通过SSMS重命名SQL Server数据库当使用SQL数据库很长一段时间时,你可能会遇到需要为数据库命名的情况。它可以用几种不同的方…...

联想昭阳E5-ITL电脑开机后绿屏怎么U盘重装系统?
联想昭阳E5-ITL电脑开机后绿屏怎么U盘重装系统?有用户电脑正常开机之后,出现了屏幕变成绿屏,无法进行操作的情况。这个问题是系统出现了问题,那么如何去进行问题的解决呢?接下来我们一起来分享看看如何使用U盘重装电脑…...

车载开发知识交流【学习路线】
前言 在2023国内百废待兴;经济复苏的号召一直在响应,这对于压抑了三年的人民来说无疑是福音。这篇我们主要说一下拉动经济的其中大板块——车企;我们知道我们最大的经济除了房地产,第二就是车企。而在造车领域中也不断的加入了许…...

【读书笔记】《深入浅出数据分析》第二章 检验你的理论
文章目录一,相关分析方法1,相关系数二,相关性不等于因果关系三,证明因果关系,“控制变量法”?本章主要说明了两个问题: 1,相关性不等于因果关系 2,如何判断两种数据之间是相关性&am…...

pyflink学习笔记(一):table_apisql
具体定义请参考官方文档:https://nightlies.apache.org/flink/flink-docs-release-1.16/zh/docs/dev/table/overview/本文主要针对实际使用中比较常用的api进行整理,大多数例子都是官网,如有歧义可与官方对照。一、 创建 TableEnvironmentTab…...

GCC 编译器套件说明
写在前面: 本文章旨在总结备份、方便以后查询,由于是个人总结,如有不对,欢迎指正;另外,内容大部分来自网络、书籍、和各类手册,如若侵权请告知,马上删帖致歉。 目录GCC 简述GCC 主要…...

IDEA集成Git
1:IDEA集合Git1.1:配置Git忽略文件-IDEA特定文件问题 1:为什么要忽略他们?答: 与项目的实际功能无关, 不参与服务器上部署运行。把它们忽略掉能够屏蔽 IDE 工具之间的差异。问题 2:怎么忽略?1&a…...

算法流程图
里程计定位: 优:定位信息连续,无离散的跳跃 缺:存在累计误差,不利于长距或长期定位 传感器定位: 优:比里程计定位更精准 缺:会出现跳变情况,且传感器定位在标志物较少的环…...

Java中安装JDK环境–javac命令无效
Java中安装JDK环境–javac命令无效 一,安装JDK1.8 阿里云盘地址推荐 我们可以选择安装地址,这个地址是我们用来配置环境变量的,唯一注意的是这个,其他的都是默认下一步。直至安装完成,jdk下载地址https://www.oracl…...

递推问题
递推:在面对一个大任务的时候,有时候我们可以将大任务划分为小任务,再将小任务划分为更小的任务......,直到遇到初始情况,最后由初始情况一直往前推进,最后解决大任务,这就是递推的思想。递推问…...

js中强制类型转换Number、parseInt、parseFloat、Boolean、String、toString的使用
文章目录一、Number() 转换为整数二、Number.parseInt() 将字符串转换为整数三、Number.parseFloat() 将字符串转换为浮点数四、Boolean() 转换为布尔值五、String() 转换为字符串六、.toString() 转换为字符串最近在巩固 js 的基础知识,今天复习到了 js 中的数据类…...

漏斗分析法
一什么是漏斗分析? 漏斗分析是数据领域最常见的一种“程式化”数据分析方法,它能够科学地评估一种业务过程,从起点到终点,各个阶段的转化情况。通过可以量化的数据分析,帮助业务找到有问题的业务环节,并进…...

pycharm入门快捷操作(部分)
altenter:提示意图动作shift两次或者crtlshifta:查找框(查找动作、类、项目等)crtlw:一次一个字符、两次整个字符串(if条件下选择整个判断体)、三次整个句子、四次整个引用ctrlshiftw࿱…...

宣布 Databricks 支持 Amazon Graviton2,性价比提高3倍
今天,我们很高兴地宣布 Databricks 对基于 Amazon Graviton2 的亚马逊弹性计算云(Amazon EC2)实例的支持的公开预览。Graviton 处理器由亚马逊云科技进行定制设计和优化,为运行在 Amazon EC2 上的云工作负载提供最佳性价比。当与高…...

18_FreeRTOS任务通知
目录 任务通知的简介 任务通知值的更新方式 任务通知的优势 任务通知的劣势 任务通知值和通知状态 发送通知相关API函数 接收通知相关API函数 任务通知模拟信号量实验 任务通知模拟消息邮箱实验 任务通知模拟事件标志组实验 任务通知的简介 任务通知:用来通知任务的…...

【华为OD机试模拟题】用 C++ 实现 - 整理扑克牌(2023.Q1)
最近更新的博客 华为OD机试 - 入栈出栈(C++) | 附带编码思路 【2023】 华为OD机试 - 箱子之形摆放(C++) | 附带编码思路 【2023】 华为OD机试 - 简易内存池 2(C++) | 附带编码思路 【2023】 华为OD机试 - 第 N 个排列(C++) | 附带编码思路 【2023】 华为OD机试 - 考古…...

mysql lesson1
常用命令 1:exit 退出mysql 2:uroot pENTER键,再输入密码,不被别人看见 3:完美卸载:双击安装包,手动删除program file中的mysql,手动删除Programedate里的mysql 4:use mysql 使用数据库 5:…...

联想笔记本无法下载 Lenovo Vantage
状况 在 Microsoft Store 下载时发生错误,可能是如下代码:0x80070005, 0x80073D05, or 0x80070017. 解决方法 1.在“开始”菜单搜索栏中输入PowerShell 2.当Windows PowerShell出现在“开始”菜单中,右键点击此图标,然后选择以…...