- 博客(33)
- 收藏
- 关注
原创 SPI协议
在master模式下,SS、SCLK、MOSI作为信号输出接口,而MISO作为数据输入接口,通过片选信号使能SPI设备,SCLK用于同步数据的传输,下图为工作在模式1的情况下SPI通信图,即初始时钟为低电平,在第二个时钟沿采样数据,输出数据为0xD2,输入数据为0x66。SPI支持不同的SPI时钟信号极性以及相位,总共有4个模式,通过设置POL和PHA值的不同来设置相位和极性。CHA表示相位,即在第一个还是第二个时钟沿采样数据,0代表在第一个时钟沿采样,1表示在第二个时钟沿采样。
2023-10-31 22:35:11
95
原创 IIC协议
1 IIC协议概述I2C 是一种串行通信总线,使用多主从架构,最初设计目的为了让主板、嵌入式系统或手机用来连接低速周边设备。多用于小数据量的场合,有传输距离短,任意时刻只能有一个主机等特性。严格意义上讲,I2C 应该是软硬件结合体。2 IIC结构图数据在传输时,需要把数据从主机发送到从设备上去,也需要将数据从从设备传输到主机设备,这涉及到数据的双向传输。我们从一个例子来说明IIC协议工作原理:有这样一个场景,在体育课上,老师将球传给学生,给哪个学生需要老师来指出,同样,当老师要求时,球
2023-10-28 19:51:13
102
原创 Linux——C静态库与动态库
静态库与动态库一、静态库与动态库的区别1、静态库2、动态库一、静态库与动态库的区别1、静态库这类库的名字一般是libxxx.a;利用静态函数库编译成的文件比较大–空间,因为整个函数库的所有数据都会被整合进目标代码中,他的优点就显而易见了,即编译后的执行程序不需要外部的函数库支持,因为所有使用的函数都已经被编译进去了。当然这也会成为他的缺点,因为如果静态函数库改变了,那么你的程序必须重新编译。2、动态库这类库的名字一般是libxxx.so;相对于静态函数库,动态函数库在编译的时候并没有被编译进
2021-10-13 17:31:24
122
原创 socket:数据报套接字
数据报套接字一、什么是数据报套接字一、什么是数据报套接字socket,即套接字是一种通信机制,凭借这种机制,客户/服务器(即要进行通信的进程)系统的开发工作既可以在本地单机上进行,也可以跨网络进行。也就是说它可以让不在同一台计算机但通过网络连接计算机上的进程进行通信。也因为这样,套接字明确地将客户端和服务器区分开来。相对于流套接字,数据报套接字的使用更为简单,它是由类型SOCK_DGRAM指定的,它不需要建立连接和维持一个连接,它们在AF_INET中通常是通过UDP/IP协议实现的。它对可以发
2021-10-12 22:59:46
984
原创 socket:流套接字
socket套接字——流套接字一、什么是套接字二、套接字的属性1、套接字的域2、套接字的类型3、套接字的协议三、套接字地址1、AF_UNIX2、AF_INET一、什么是套接字socket,即套接字是一种通信机制,凭借这种机制,客户/服务器(即要进行通信的进程)系统的开发工作既可以在本地单机上进行,也可以跨网络进行。也就是说它可以让不在同一台计算机但通过网络连接计算机上的进程进行通信。也因为这样,套接字明确地将客户端和服务器区分开来。二、套接字的属性1、套接字的域它指定套接字通信中使用的网络介
2021-10-11 15:12:39
223
原创 java lambda常用函数式接口
常用函数式接口1、Runnable2、Supplier3、Consumer4、BiConsumer1、Runnable/** * Runnable 参数类型:无 返回类型:void 抽象方法名:run * 描述:作为无参数或返回值的动作运行 */public class App { public void text(int n, Runnable runnable) { for (int i = 0; i < n; i++) { runn
2021-08-21 15:12:18
124
原创 lambda表达式的变量作用域问题
lambda表达式的变量作用域问题1、合法引用外部变量2、非法引用外部变量(lambda改变)3、非法引用外部变量(外部改变)4、5、lambda中使用this关键字1、合法引用外部变量import javax.swing.*;import java.awt.event.ActionListener;public class App { public static void repeatMessage(String text, int delay) { ActionList
2021-08-19 21:40:49
338
原创 java 方法引用示例
java 方法引用1、separator::equals2、String::toString3、String::concat4、Integer::valueOf5、Integer::sum6、Integer::new1、separator::equals/*等价的lambda表达式: x -> separator.equals(x),这是包含一个对象和一个实例方法的方法表达式。lambda参数作为这个方法的显示参数传入。*/interface Test { String print
2021-08-19 20:25:31
318
原创 java之接口
java之接口1、接口的概念2、接口的属性3、接口与抽象类4、静态和私有方法5、默认方法6、解决默认方法冲突7、接口与回调1、接口的概念在java中,接口不是类,而是对符合这个接口的类的一组需求接口用interface声明声明一个Comparable接口可以将接口看成一个没有实例字段的抽象类public interface Comparable { 声明一个方法,方法的实现由实现这个接口的类来实现方法 接口绝不会有示例字段,在java8以前,在接口中绝对不会实现 方法。 priv
2021-06-07 22:21:10
2116
原创 java之泛型数组列表
java之泛型数组列表1、声明数组列表2、add方法3、ensureCapacity方法4、size方法5、trimToSize方法6、set方法7、get方法1、声明数组列表声明和创建一个保存Person对象的数组列表1、ArrayList<Person> person = new ArrayList<Person>(initCapacity);没有使用var声明可以省略右边的参数2、ArrayList<Person> person = new ArrayLi
2021-05-31 22:31:05
448
原创 java之抽象类
java之抽象类一、抽象方法1、抽象方法的定义2、抽象方法的作用二、抽象类1、抽象类的定义2、抽象类的扩展3、示例代码一、抽象方法1、抽象方法的定义abstract关键字声明,没有方法体的方法称为抽象方法例如:public abstract void print();2、抽象方法的作用规定了子类中必须有这样一个方法,而具体的方法实现由子类决定。二、抽象类1、抽象类的定义包含一个或多个抽象方法的类本身必须被声明为抽象的。抽象类使用abstract关键字声明抽象类不能
2021-05-30 17:26:46
168
原创 java之多态
java之多态1、在java中,对象变量是多态的。一个父类对象变量既可以访问自身对象,也可以访问子类对象。2、如果父类对象变量引用了子类对象,编译器也只会把父类对象变量当做父类对象。3、父类对象变量虽然可以引用子类对象,但是却不能调用除重写的方法之外的任何字段与方法。class Person { private int age; public void setAge(int age) { this.age = age; } public int
2021-05-29 01:36:28
640
原创 java之静态代码块与构造代码块
java之静态代码块与构造代码块1、在一个类的声明中,可以包含任意多个代码块。只要构造这个类的对象,只写代码块就会被执行 ,优先于构造器执行。2、构造代码块不是必须的,并不常见。通常会直接将初始化代码块放在构造器中。3、如果类的静态字段需要很复杂的初始化代码,那么可以使用静态的初始化块(静态代码块)4、在类第一次加载时,会加载静态代码块,并且只执行一次,优先于构造代码块执行。...
2021-05-29 00:39:50
134
原创 java之final与static的区别
这里写目录标题一、final关键字1、final修饰引用2、final修饰方法3、final修饰类二、static关键字1、静态字段(类变量或静态变量)2、静态方法(类方法)三、final与static的区别1、是否可以修改值2、何时加载四、静态常量1、静态常量的定义2、静态常量的特点一、final关键字final实例字段必须在构造对象时初始化。也就是说,必须在构造器执行完成之前,将字段赋予初值,否则将不能再修改这个字段。每创建一个实例,就会为实例变量分配一次内存1、final修饰引用
2021-05-27 01:36:51
3583
2
原创 java之构造方法
在类的方法中,使用this关键字指的是调用此方法的对象的引用。this可以看做一个变量,它的值是当前对象的引用使用this关键字处理方法中成员变量与形参列表同名的问题在类的构造方法中调用this([参数列表])来调用该类指定的构造方法//this是自身的一个对象class Student { int age; String name; double score; void This() { Student Stu = this;//当前对象的..
2021-05-26 23:33:56
302
原创 Linux多线程编程
1、线程与进程进程:是计算机中的程序关于某数据集合的一次运行活动,是系统进行资源分配和调度的基本单位(最小单位),是操作系统结构的基础。一个进程在同一时刻只做一件事,当进程中有多个线程时,进程可以再同一时刻做多件事,每个线程有不同的任务。进程是线程的容器。线程:线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。在Unix 系统 及类Unix系统中也被称为轻量进程(ligh
2021-03-10 19:45:02
96
原创 进程间通信
Linux使用的进程间通信方式包括:1、管道(pipe)和有名管道(FIFO)2、信号(signal)3、消息队列4、共享内存5、信号量6、套接字STREAMS(socket)1、管道(无名管道)它是半双工的,具有固定的写端和读端只能用于有亲缘关系的进程之间使用它可以看成一种特殊的文件,可以用read,write等函数读写,但它不是普通的文件,不属于文件系统,只存于内存中。#include<stdio.h>#include<stdlib.h>..
2021-03-10 00:07:53
120
1
原创 进程相关API
1、fork函数pid_t fork(void)返回值: 若成功调用一次则返回两个值,子进程返回0,父进程返回子进程ID;否则,出错返回-1调用fork函数后,子进程是父进程的一个副本,它将获得父进程数据空间、堆、栈等资源的副本;由于在复制时复制了父进程的堆栈段,所以两个进程都停留在fork函数中,等待返回。调用fork函数后,数据、堆栈共有两份,但是代码段两个进程共享。当父子进程有一个想要修改数据或堆栈时,两个进程真正分裂。但是由于fork后常常跟着exec,所以现在的很多实现并不执行一个父进
2021-03-02 20:35:29
590
原创 进程的概念
1、程序与进程程序:程序时静态的概念,是一组计算机能识别和执行的指令,在Linux下生成的pro文件,在Windows下生成的.exe文件都是程序。进程:进程是程序的一次运行活动。2、查看系统中的进程ps -aux用来在Linux下查看当前系统中所有的进程用ps -aux查看到所有的进程,在需要查看某个进程时不方便,我们使用命令ps -aux|grep init查看init进程top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的
2021-01-31 18:16:03
304
原创 二叉树前序遍历
二叉树递归遍历一#include<stdio.h>#include<stdlib.h>#include<string.h>typedef char ElemType;typedef struct TreeNode{ ElemType data; struct TreeNode *Lchild; struct TreeNode *Rchild;}TreeNode;//创建二叉树void CreatTreeNode(TreeNode*
2020-12-17 17:11:13
307
原创 基于ncurses的贪吃蛇
基于ncurses的贪吃蛇此贪吃蛇游戏需要安装ncurses#include<time.h>#include<unistd.h>#include<stdio.h>#include<stdlib.h>#include<pthread.h>int word;#define up 1#define down -1#define left 2#define right -2typedef struct snake
2020-11-19 16:44:26
227
原创 Linux常用指令
常用指令xrandr 列出支持的分辨率Xrandr -s 加上分辨率可改当前页面大小Ctrl +Alt+t 打开命令行Ctrl+Shift++ 放大字体Ctrl+Fn + - 缩小字体Ctrl+l 清屏ls 列出当前文件夹有哪些文件出现蓝色的为文件夹,绿色的为可执行文件ls -a 列出所有文件,包含隐藏的文件和文件夹Vi编辑器:vi a.c (进入vi的命令行模式,并打开a.c这个c文件,a.c也可以是其他文件类型)按i进入输入模式,按esc回到命令行模式
2020-09-26 23:59:18
274
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人