自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

流痕的博客

谈笑有鸿儒,往来无白丁

  • 博客(84)
  • 收藏
  • 关注

原创 Linux笔记-2

make:一般说GNU Make,是一个软件,用于将源代码文件编译为可执行的二进制文件,make工具主要用于完成自动化编译,make工具编译的时候需要Makefile文件提供编译文件。Makefile:make工具 所使用的文件,Makefile指明了编译规则。make工具完成的编译工作,包括:好处是这种自动编译大大简化开发工作,避免 不必要的重新编译。Make工具通过Makefile文件来完成自动维护编译工作,Makefile文件描述了整个工作的编译、连接规则。工程要求:通过键盘输入两个整形数字,然

2022-07-11 23:48:21 198 1

原创 Linux笔记-1

Linux是一个多用户操作系统,不同的用户拥有不同的权限,可以查看和操作不同的文件。Ubuntu有三种用户:为方便管理,将用户进行分组,控制文件的访问权限安装使用gnome-system-tools工具文件三种状态:r:读 w:写 x:可执行eg:—(拥有者)|—(拥有者所在组)|—(其他用户)rw-:有读写权限,没有执行权限rwx:有读写执行权限文件权限有10位,第一位表示文件类型,剩下每三位表示一组权限,分别对应拥有者权限,拥有者所在组权限,其他用户权限修改文件权限:chmod命令修改文

2022-07-11 21:58:43 558

原创 Ubuntu基础操作

注:在操作名后加 --help可以查看详细信息ls:目录信息查看cd:目录切换pwd:系统信息查看clear:清理屏幕cat:显示文件内容sudo:切换用户身份cp:文件拷贝命令su:切换用户mv:移动文件mkdir:创建文件夹touch:创建文件ifconfig: 显示网络配置// sudo ifconfig ens33 up/down 打开或关闭网卡reboot : 重启poweroff:关机man:系统帮助命令sync:数据同步写入磁盘命令find:查找文件gre

2022-06-26 23:03:14 423

原创 WAV和WM8978

文章目录WAV简介组成RIFF ChunkFormat块Fact ChunkData Chunk数据WM8978特点接口寄存器(9位)初始化初始化WM8978初始化I2S解析WAV文件设置DMA编写DMA传输完成中断服务函数开启DMA传输 填充数据代码WAV简介WAVE文件 是最常用的数字化声音文件格式之一扩展名为 .wav 符合RIFF文件规范适用Windows平台支持MS ADPCM 、CCITT A LAW等压缩运算法支持多种音频数字 取样频率和声道(MS ADPCM 针对16bit

2021-12-29 23:28:05 1174

原创 FATCH文件系统

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2021-12-19 16:59:20 1428

原创 Maix Bit(k210)

文章目录简介特性功能参数环境配置MAIXP源码驱动烧录MaixPy IDE固件库简介SIPEED公司MAIX产品线成员基于边缘智能计算芯片K210(RISC-V架构 64位双核)设计的AIOT开发板设计方式:模块+底板配置128Mbit Flash LCD DVP Micro SD卡等接口并引出所有IO 方便扩展特性AI机器视觉 听觉性能表现突出内置多种硬件加速单元(KPU、FPU、FFT等)总算力可达1TOPS方便实现各类场景机器视觉听觉算法灵敏度:-26功能maixbit

2021-12-12 18:18:29 4458

原创 FS00702型酒精传感器

文章目录主要原理特点管脚说明通讯协议通用设置通讯命令命令方式校验算法主要原理酒精传感器根据电化学原理工作,利用待测气体在电解池中工作电极电位上的电化学氧化过程,待测气体电化学反应所产生的电流与其浓度成正比并遵循法拉第定律,通过检测电流的大小就可以确定待测气体的浓度。对被测者呼出气体中酒精浓度的反应以采样电阻R1来获取采样电压,通过运放负反馈放大电路,对采样电压进行放大。放大后的电压信号送入STM32的ADC中,对经过A/D转化后的数据进行分析处理,最后计算出酒精浓度的大小。特点高灵敏度 高稳定性

2021-12-05 18:47:56 593

原创 socket

文章目录原理TCP/IP 协议连接的建立连接建立过程连接断开过程原理套接字,计算机之间通信的一种约定 或 方式标识主机问题:TCP/IP 协议簇解决 网络层的IP地址可以唯一标识网络中的主机标识唯一进程问题:传输层 协议加端口 唯一标识主机中的应用程序(进程)三元组(ip地址 协议 端口)就可以标识网络的进程socket 利用三元组解决网络通信的中间件工具TCP/IP 协议连接的建立即用connect()进行连接时,客户端与服务端都可以互相发送三个数据包 即三次握手连接建立过程1.客

2021-11-29 21:12:57 1311

原创 ESP8266(2)

文章目录TCP/IP应用层传输层网络层网络接口层ESP8266apsta.c主函数TCP/IPTransmission Control ProTocol/Internet Protocl传输控制协议与网络协议是由FTP、SMTP、TCP、UDP、IP等协议构成的协议簇其中TCP/IP最为代表性四层体系结构 应用层 传输层 网络层 数据链路层应用层:Telnet FTP SMTP传输层:UDP TCP网络层:ICMP IP IGMP网络访问层(网络接口层 数据链路层):ARP RARP

2021-11-21 17:26:17 4862

原创 ESP8266

文章目录RS232通信协议接口形态接口定义硬件连接电平时序ESP8266配置ESP8266原理特点AT指令工作模式STA模式AP模式STA+AP模式硬件连接代码“掌握esp8266使用可实现真正的万物互联”掌握RS232通信协议 SPI通信协议 esp8266的配置就可以基本搞定WiFi模块的使用RS232通信协议广泛用于DCE(Data Communication Equipment)和DTE(Data Terminal Equipment)之间的连接DCE数据通信端 DTE终端接口形态以

2021-11-14 22:29:27 7583

原创 FLASH闪存

文章目录FLASH闪存模块存储器组织组成FLASH闪存的读取编程和擦除操作注意事项标准编程步骤闪存擦除FLASH操作相关寄存器FLASH访问控制寄存器FLASH秘钥寄存器FLASH控制寄存器FLASH通常指FLASH MEMORY 即闪存 全名叫FLASH EEPROM Memory结合了POM和RAM的长处 不仅具备电子可擦除编程性能 还可以 快速读取数据(NVRAM的优势)数据断电不会消失应用有U盘 MP3闪存模块存储器组织组成① 主存储器存放代码 和 数据常数 分12个扇区②

2021-11-07 17:20:18 1021

原创 外部SRAM

文章目录IS62WV51216特点框图FSMC驱动原理IS62WV5121616位宽512K容量的CMOS静态SRAM芯片特点高速;低功耗;兼容TTL电平;全静态操作;三态输出;字节控制功能。框图A0~18地址线 总共19根地址线I/00~15数据线 总共16根数据线CS2 CS1片选信号 CS2高电平有效 CS1低电平有效OE输出使能信号 WE写使能信号 UB高字节控制 LB低字节控制信号FSMC灵活静态存储控制器 可同步或异步存储器和16位PC存储器卡连接驱动原理FSMC驱

2021-11-06 23:33:17 939

原创 MPU6050实验

文章目录MPU6050特点MPU6050DMP:Digital Motion Processor6轴运动处理组件 3轴陀螺仪+3轴加速度传感器 第二IIC接口 连接外部磁力传感器利用自带数字运动处理器硬件加速引擎 通过主IIC接口 向应用端输出完整的9轴姿态融合演算数据DMP 可使用运动处理资料库 实现姿态演算 降低运动处理运算对操作系统的负荷 大大降低开发难度特点自带数字处理 可输出6轴或9轴(外接磁传感器)姿态解算数据(姿态解算需要解决的是无人机飞行器在地球坐标系中姿态。地球坐标系R是固

2021-10-17 18:14:38 846

原创 DHT11温湿度传感器实验

文章目录DHT11技术性能特征数据发送流程DHT11单总线数据格式 双向传输 数据分小数部分和整数部分 一次完整的数据传输40bit 高位先出数据格式:8bit湿度整数 + 8bit湿度小数数据 + 8bit 温度整数+ 8bit温度小数数据 + 8bit校验和技术性能特征工作电压范围:3.3V - 5.5V工作电流:平均0.5mA输出:单总线数字信号测量范围:湿度20-90% 温度0~50℃精度:湿度±5% 温度±2℃分辨率:湿度1% 温度1℃数据发送流程主机拉低数据线 保持t

2021-10-17 01:26:19 4234

原创 排序

文章目录基本概念稳定性关键操作内排序和外排序排序审判选择法插入排序冒泡排序希尔排序快速排序归并排序基本概念排序目的:将一组数据无序变有序数学定义:排序数学定义:假设含n个数据元素的序列为{ R1, R2, …, Rn} 其相应的关键字序列为{ K1, K2, …, Kn}这些关键字相互之间可以进行比较,即在它们之间存在着这样一个关系 :Kp1≤Kp2≤…≤Kpn;按此固有关系将上式记录序列重新排列为{ Rp1, Rp2, …,Rpn}的操作称作排序稳定性如果在序列中有两个数据元素r[i]和r[j

2021-10-15 22:17:06 66

原创 DS18B20实验

文章目录数字温度传感器技术性能特征封装连接方式信号类型复位脉冲应答信号写时序读时序温湿度读取过程主函数数字温度传感器技术性能特征1️⃣ 独特的单总线接口方式 系统抗干扰性强2️⃣ 测温:-55℃ – + 125℃ 精度:±0.5℃3️⃣支持多点组网功能 8个DS18B20可以并联到唯一的三线上4️⃣ 工作电源:3.0~5.5V/DC(可以数据线寄生电源)5️⃣ 在使用中不需要任何外围元件6️⃣ 测量结果以9~12位数字量方式串行传送封装连接方式信号类型复位脉冲 应答脉冲 写0

2021-10-14 00:16:44 489

原创 DS18B20数字温度传感器实验

文章目录DS18B20技术性能特征DS18B20封装连接方式信号类型复位脉冲应答信号写时序温度读取过程实验代码DS18B20技术性能特征1️⃣独特单总线接口方式 与微处理器连接仅需要一条口线 实现双向通讯 提高系统的抗干扰性2️⃣测温范围-55℃~+125℃ 精度±0.5℃3️⃣支持多点组网 并联8个实现多点测温4️⃣工作电源 3.0~5.5V DC5️⃣不需要任何外围电路6️⃣测量结果以9~12位数字方式串行传送DS18B20封装连接方式信号类型复位脉冲 应答脉冲 写0 写

2021-10-10 17:38:51 1326

原创 红外遥控器通信

文章目录红外遥控器协议特点外形NEC协议特征NEC码位定义NEC遥控器指令格式连发码硬件连接程序设计思路实验程序红外遥控器协议无线 非接触控制技术红外遥控的编码目前广泛使用NEC Protocol 的PWM(脉冲宽度调制) 和 Philips RC-5 Protocol的PPM(脉冲位置调制)特点抗干扰能力 信号传输可靠 功耗低 成本低 易实现外形接收头:OUT GDN 3.3VNEC协议特征① 8位地址和8位指令长度② 地址和命令二次传输③ PWM脉冲宽度调制 以发射红外载波的占空

2021-10-10 16:39:16 1322

原创 霍夫曼树

文章目录定义路径路径长度结点的权结点带权路径的长度WPL概念准则举例定义路径树中一个结点往下可以达到孩子或孙子的通路路径长度通路中分支数目结点的权树的结点赋有的特殊的数值结点带权路径的长度WPL根节点到该结点的路径长度与该结点的权的乘积概念霍夫曼树是一种特殊的二叉树,是一种带权路径长度最短的二叉树,又称为最优二叉树。 给定 N 个权值作为二叉树的 N 个叶节点的权值,构造一棵二叉树,若该二叉树的带权路径长度达到最小,则称该二叉树为霍夫曼树。即WPL最小压缩算法的基础作用:编码压缩

2021-10-10 00:11:05 132

原创 二叉线索树

文章目录概念代码概念普通二叉树 只能找到结点 左右孩子信息 该结点的直接前驱和直接后继只能在遍历过程中获得若可将遍历后对应的有关前驱和后继预存 则从第一个结点开始 便可遍历整个树运用叶子结点的悬空指针可规定:若结点有左子树 则lchild指向其左孩子否则 lchild指向其直接前驱(即线索)若结点有右子树 则rchild指向其右孩子 否则rchild指向其直接后继(即线索)代码void InThreading(BithrTree p){ if(p) {

2021-10-08 23:49:52 60

原创 树--#法

确定树1.通过中序遍历和先序遍历可以确定一棵树2.通过中序遍历和后序遍历可以确定一棵树算法1.通过先序遍历找到根节点A 根据A再在中序遍历中找到左子树和右子树2.先序遍历在A的左子树中找到左子树的根节点,转步骤13.先序遍历在A的右子树中找到右子树的根节点,转步骤1#法创建树BiTNode* CreateBiThrTree(BiTNode *T){ BiTNode *node = NULL; BiTNode *pL = NULL; BiTNode *pR = NU

2021-10-07 23:41:37 51

原创 树 中序遍历非递归算法

文章目录算法代码算法左子树为空或者左子树已经访问完毕后,再访问根 访问根完毕后 再访问右子树栈结构 符合先入后出步骤一:结点有左子树 结点入栈;结点没有左子树 访问该结点步骤二:结点有右子树 重复步骤一;结点没有右子树 结点访问完毕 根据栈顶指示回退 访问栈顶元素 并 访问右子树重复步骤一栈为空则遍历结束结点入栈表明 本身没被访问 自身的右子树也没有被访问代码typedef struct BiTNode* BiTree;void inOrder(BiTNode * root){

2021-10-06 23:40:49 187

原创 树的三种基本操作

文章目录求叶子结点的数目copy二叉树求树的深度求叶子结点的数目用任何一种递归算法 凡是左右指针均为空的 是叶子 统计数目即可int sum=0;void countLeaf(BiTNode *T,int *sum){ if(!T) { if(!T->lchild && !T->rchild) { (*sum)++; //指针指向的数据+1 } if(T-&gt

2021-10-05 22:58:07 133

原创 三叉链表及树的遍历

文章目录树的三叉链表双亲链表二叉树遍历树的三叉链表元素:lchild data rchild parenttypedef struct TriTNode{ int data; //左右孩子指针 struct TriTNode *lchild, *rchild; struct TriTnode *parent;}TriTNode,*TriTree;双亲链表两个结构表示一个树typedef struct BPTNode{ int data;

2021-10-04 22:46:38 3822

原创 二叉树(二叉链表)

定义n个结点的有限集合 由一个根节点以及两棵互不相交的 分别称为左子树 和 右子树的二叉树组成逻辑结构一对二基本特征每个结点最多只有两棵子树(不存在大于2的结点)左子树和右子树次序不能颠倒基本形态性质1) 二叉树的第i层上 至多有2的i-1次方个结点2)深度为K的二叉树至多有2的K次方-1个结点3)对于二叉树 2度的结点数有n个 则叶子有n+1个4)具有n个结点的完全二叉树 其深度必为以二为底n的对数+15) 对完全二叉树 从上到下 从左到右 编号 则编号为i的结点 其左孩子编号

2021-10-03 23:55:15 1008

原创 触摸屏实验

文章目录触摸屏红外线式触摸屏表面声波式触摸屏电容触摸屏原理分类表面电容式电容触摸屏投射式电容触摸屏自我电容交互电容硬件连接电阻触摸屏电阻屏和电容屏的区别触摸屏红外线式触摸屏由装在触摸屏外框上的红外线发射与接收感测元件构成在屏幕表面上形成红外线探测网任何触摸物体可改变触点上的红外线来实现触摸屏操作表面声波式触摸屏由触摸屏 声波发生器 反射器 声波接收器组成 其中声波发生器能发生一种高频声波跨越屏幕表面 手指触及屏幕时 触点上的声波即被阻止 由此确定坐标位置不怕电磁干扰 无漂移 防刮性 寿命长

2021-10-03 18:12:11 1712

原创 链式存储复习及树

动态链表操作无名结构体变量typedef struct LinkListNode{ struct LinkLinkNode* next;}LinkListNode;typedef struct LinkList{ LinkListNode header; int length;}LinkList;LinkList* LinkList_Create(){ LinkList *ret = NULL:ret = (LinkList*)malloc(size

2021-10-02 23:58:07 75

原创 线性表复习及队列的链式存储

文章目录线性表回顾队列线性表回顾相同类型 数据有限排列可逐项访问 顺序存储#define MAXSIZE 50typedef struct LIST{ int data[MAXSIZE];//数组 int length;}List;//初始化 建立一个新的线性表void ListInit(List* L){ L->length = 0; memeset(L->data,0,sizeof(L->data));}//线性表是否为空int Li

2021-10-01 23:56:37 68

原创 队列的链式存储

主函数void main(){ int i,a[10]; LinkQueue *queue = NULL; queue = LinkQueue_Create(); if(queue ==NULL) { return; } //添加元素 for(i=0;i<5;i++) { a[i]=i+1; LinkQueue_Appecd(queue,&a[i]); } //求队列的属性 cout<<LinkQueue_Len

2021-09-30 22:48:23 52

原创 队列(Queue)的顺序存储

基本概念队列是一种特殊的线性表在线性表的两端进行操作队头(Front):取出数据元素的一端队尾(Rear): 插入数据元素的一端即:队列是只允许在一端进行插入操作 而在另一端进行删除操作的线性表常用操作销毁队列清空队列进队列出队列获取队头元素获取队列长度SeqQueue* SeqQueue_Create(int capacity);void SeqQueue_Destroy(SeqQueue* queue);void SeqQueue_Clear(SeqQueue* qu

2021-09-29 23:45:39 249

原创 栈 -- 中缀转后缀

中缀转后缀中缀表达式适应人的阅读和思维习惯后缀表达式符合计算机的运算习惯算法数字:直接输出符号:左括号 进栈运算符号:与栈顶符号进行优先级比较 若栈顶符号优先级低 该符号进栈 若栈顶符号优先级不低 将栈顶符号弹出并输出 之后进栈右括号:将栈顶符号弹出并输出 直到匹配左括号遍历结束:栈中所有符号弹出并输出计算机基于后缀表达式的计算算法:遍历后缀表达式的数字和符号对数字: 直接进栈对符号:从栈中弹出右操作数从栈中弹出左操作数根据符号运算将运算结果压入栈中遍历结束:栈中的唯

2021-09-28 23:32:06 57

原创 栈的应用

就近匹配几乎所有编译器都具有检测括号是否匹配的能力实现编译器中的符号成对检测eg:检测#include <stdio.h> int main(){int a[4][4];int (*p)[4];p=a[0];return 0;算法思路从第一个字符开始检测当遇到普通字符时忽略遇到左符号时压入栈中遇到右符号时从栈中弹出栈顶符号 并进行匹配匹配成功 继续读入下一个字符匹配失败 立即停止 并报错结束:成功 :所有字符扫描完毕 且栈为空结束 : 匹配失败或所有字符扫描完毕但栈

2021-09-27 23:45:34 51

原创 栈的链式存储

文章目录链表模拟栈设计与实现链表模拟栈设计与实现//头文件#ifndef_MY_LINKSTACK_H_#define _MY_LINKSTACK_H_typedef void LinkStack;LinkStack* LinkStack_Create();void LinkStack_Destroy(LinkStack* stack);void LinkStack_Clear(LinkStack* stack);int LinkStack_Push(LinkStack* st

2021-09-26 23:30:49 63

原创 CAN通信

CAN(Controller Area Network)ISO国际标准化 串行通讯协议现在是欧洲汽车网络标准协议可靠性高 广泛应用于 汽车电子 工业自动化 船舶 医疗设备 工业设备等CAN协议标准ISO11898标准针对通信速率为125Kbps~1Mbps 的高速通信标准ISO11519-2标准针对通信速率为125Kbps以下的低速通信标准CAN协议特点多主控制总线空闲 所有单元可发送消息两个及以上单元同时发送 根据标识符(ID) 决定优先级对个各ID的每个位进行仲裁比较 仲裁获胜

2021-09-26 18:59:36 1511

原创 栈的顺序存储

文章目录线性表模拟栈调用实现线性表模拟栈栈是一类特殊的线性表,则可以用线性表模拟栈//引入线性表 的 头文件 间接实现栈的顺序存储#include "seqstack.h"#include "seqlist.h"//创建栈 == 创建线性表 SeqStack* SeqStack_Create(int capacity){ return SeqList_Create(capacity);}//销毁栈==销毁线性表void SeqStack_Destroy(SeqStack* st

2021-09-25 23:56:49 56

原创 栈 stack

基本概念一类特殊的线性表 仅能在一端进行操作栈顶(Top):允许操作的一端栈底(Bottom):不允许操作的一端有线性(前驱后继)关系栈底固定 先进栈的在栈底操作创建栈 销毁栈 清空栈 进栈(也叫入栈 压栈) 出栈 获取栈顶元素 获取栈的大小#ifndef _MY_STACK_H_#define _MY_STACK_H_typedef void Stack;Stack* Stack_Create();void Stack_Destroy(Stack* stack);vo

2021-09-24 23:44:28 63

原创 双向链表函数

头文件typedef void DLinkListtypedef struct_tag_DLinkListNode{ struct _tag_DLinkListNode* next; struct _tag_DLinkListNode* pre;}DLinkListNode;DLinkList* DLinkList_Create();void DLinkList_Destroy(DLinkList* list);void DLinkList_Clear(DLinkList*

2021-09-23 23:11:14 72

原创 循环链表函数及双向链表

循环链表删除结点CircleListNode* CircleList_Delete(CircleList* list,int pos){ TCircleList* sList = (TCircleList*)list; int i=0; if(sList !=NULL)&&(pos>=0)&&(sList ->length >0)) { CircleListNode* current =(CircleListNode*

2021-09-22 23:38:23 81

原创 循环链表

文章目录基本概念新增功能游标重置获取当前游标指向的数据元素游标移动指向下一个数据元素指定删除链表的某个数据元素特点循环链表插入结点头插法尾插循环链表删除结点基本概念循环链表的定义:将单链表的最后一个数据元素的next指针指向第一个元素循环链表拥有单链表的所有操作创建链表销毁链表获取链表长度清空链表获取第pos个元素操作插入元素到位置pos删除位置pos处的元素新增功能游标即在循环链表中可以定义一个“当前”指针,这个指针通常称为游标,可以通过这个游标遍历链表中所有的元素游标重置

2021-09-21 23:28:45 111

原创 单向链表的设计实现

文章目录要素运算符结构图分类静态链表动态链表动态链表的建立动态链表的插入动态链表的删除动态链表的输出主函数调用实现要素1.结构体变量2.指向结构体变量的指针运算符-> :指向运算符eg:p->成员名 即 (*p).成员名即三种形式等价:结构体变量.成员名 <=> (*p).成员名 <=> p->成员名new delete运算符(相对于C语言中的malloc free函数,new delete作为运算符执行效率更高)动态分配撤销存储空间格式:n

2021-09-20 23:05:39 189 1

考研英语常用词根电子版讲义.pdf

考研英语常用词根电子版讲义.pdf

2023-10-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除