- 博客(63)
- 收藏
- 关注
原创 树莓派5一键安装C++版本OpenCV
我这里是将镜像安装好后直接安装opencv,如果不是刚安装好的镜像需要注意是否有openCV的python之类的安装过,不然可能出现编译错误。
2024-01-31 15:51:54
2475
14
原创 Linux上搭建mqtt开发环境及服务器部署(Mosquitto&EMQX)
Mosquitto是一个开源的MQTT消息代理服务器,它实现了MQTT协议,是一个轻量级的、基于发布/订阅模式的消息传输协议。它可以用于构建物联网应用程序,实现设备之间的通信。是一个开源的分布式物联网消息中间件,它实现了MQTT协议,用于连接和交换物联网设备之间的消息。EMQX具有高可用性、高性能和可扩展性,可以支持大规模的物联网应用。用于在Linux系统上进行SSL/TLS加密通信的开发。它提供了一组用于加密和解密数据、生成和验证数字证书以及进行安全通信的函数和工具。
2024-01-30 15:41:51
2517
2
原创 Linux 学习记录59(ARM篇)
二、系统框图2. 数据传输信号3. 应答信号 / 非应答信号4. 寻址信号四、IIC协议1. 主机给从机发送一个字节(写)2. 主机给从机发送多个连续字节4. 从机给主机发送多个连续字节
2023-07-27 17:56:05
1626
原创 Linux 学习记录58(ARM篇)
GIC层一共管理288个中断号(ID:0 ~ 287),16个SGIS,16个PPIS,256个SPIS。功能:使能cpu中断。
2023-07-26 20:48:30
2112
3
原创 Linux 学习记录56(ARM篇)
在1位停止位的情况下,发送端在每个数据字节传输完之后会发送一个逻辑高电平的停止位,用于告知接收端数据传输结束。其原理是将数据分成多个位元,每个位元通过不同的线路传输,这些线路同时工作,从而实现数据的并行传输。串口的停止位(Stop Bit)是指在每个数据字节传输完之后,发送端发送的一个额外的位,用于标识数据传输的结束。在串口通信中,发送端和接收端必须统一设置停止位的配置,否则可能导致数据传输出错。数据位:串口数据传输(进行数据的收发),先发送低位,在发送高位,串口配置信息常用配置8位数据位。
2023-07-25 08:59:47
1600
原创 Linux 学习记录53(ARM篇)
栈指针寄存器(R13 [SP]),sp始终保存栈顶元素的首地址栈的本质就是一段内存空间,被分出来用于存放一些临时数据,我们可以用过对栈区内存读写来保护现场。
2023-07-19 19:15:59
2365
原创 Linux 学习记录52(ARM篇)
格式:opcode:比较指令的指令码是cmp功能:将第一操作寄存器和第二操作数的值进行比较本质:比较指令的本质就是拿进行比较的两个数值进行减法运算,并且减法运算的结果会影响到CPSR的条件位我们可以根据条件位的数值进行两个数值的判断,再根据判断的结果做不同的操作一般比较指令和条件码都是一起使用的格式:opcode {功能:跳转到指定的标签下功能码: 1. b : 跳转到指定的标签下,返回地址不保存 2. bl : 跳转到指定的标签下,返回地址保存至 LR寄存器中。
2023-07-18 20:03:10
2040
原创 Linux 学习记录51(ARM篇)
点击此查看ARM发展史ARM :Advanced RISC Machines(最初命名为Acorn RISC Machine)简称ARM。对ARM可以有三种理解:1)ARM公司:Advanced RISC Machines Limited;2)ARM处理器架构;3)一种技术——ARM技术。里程碑1——ARM成立ARM前身为艾康电脑(Acorn),于1978年,英国剑桥成立,大学的孵化物。1980年代晚期,苹果开始与艾康合作,开发新版ARM核心。
2023-07-18 09:28:31
694
原创 Linux 学习记录49(QT篇)
事件是由窗口系统或者自身产生的,用以响应所发生的各类事情,比如用户按下并释放了键盘或者鼠标、窗口因暴露而需要重绘、定时器到时而应有所动作,等等从某种意义上讲,事件比信号更原始,甚至可以认为大多数信号其实都是由事件产生的。比如一个下压式按钮首先感受到的是鼠标事件在进行必要的处理以产生按钮下沉继而弹起的视觉效果之后,才会发射 clicked()信号Q_OBJECT//关闭当前窗口 void min_signals(void);
2023-07-11 08:48:15
351
原创 Linux 学习记录46(QT篇)
pro是一个工程管理文件,依据这个文件来生成makefile文件来编译源文件#添加相关的类库,例如进程线程库、网络编程库、数据库等待 QT += core gui #默认提供两个类库: core包含了核心库,io相关操作等 gui库提供了图形化相关的类库 #如果qt版本超过4.0,就会多加一个widgets类库,大部分组件全部来自于该库 greaterThan(QT_MAJOR_VERSION, 4) : QT += widgets。
2023-07-07 21:08:16
518
原创 Linux 学习记录45(C++篇)
模板定义:template<typename T1,typename T2> 定义了一个模板,模板可以接收两个不同的数据类型[T1/T2]/*定义模板*/ template < typename T1 , typename T2 > T1 add(T1 a , T1 b) {/*显式调用*/ cout << add < int , int >(num1 , num2) << endl;
2023-07-04 18:45:31
272
原创 Linux 学习记录44(C++篇)
定义英雄类hero,受保护的属性string name,int hp,int attck;公有的无参构造,有参构造,虚成员函数 void Atk(){blood-=0;},法师类继承自英雄类,私有属性 int ap_atk=50;重写虚成员函数void Atk(){blood-=(attck+ap_atk);重写虚成员函数void Atk(){blood-=(attck+ac_atk);多态按字面的意思就是多种形态,相同的方法调用,但是有不同的实现方式。使用virtual修饰的函数就是虚函数。
2023-07-03 19:25:20
308
原创 Linux 学习记录43(C++篇)
把A类声明为B类的友元(friend class A),A类内可以访问B类中的所有成员。把一个类声明为另一个类的友元。
2023-06-30 20:01:15
424
1
原创 Linux 学习记录42(C++篇)
用于实例化类对象时,系统自动调用功能:实例化类对象时,给类对象开辟空间和初始化格式:类名(形参列表)函数体;例: class test {private ://私有的成员属性/方法 int a;string b;double c;public ://公有的成员属性/方法 /*有参构造和无参构造构成函数重载*/ test(int a , string b , double c) {//有参构造 this -> a = a;} test() {
2023-06-29 19:34:16
534
原创 Linux 学习记录41(C++篇)
引用:是C++对C的一个重要的扩充引用可以理解为给变量取别名不会额外开辟空间左值一般是变量,栈区、堆区、.bss、.data右值一般是常量或者是临时值(4+5),.ro定义格式:变量类型 &引用目标=要引用的变量;int a = 99;return 0;
2023-06-28 18:51:42
401
原创 Linux 学习记录40(C++篇)
1. cout是由ostream提供的C++中的标准输出流类2. cout还包含在std中,cout就是一个类对象istream类中提供的输入流对象1. 不需要加格式符2. 不能加endlreturn 0;命名空间的作用:为了解决命名污染问题(命名冲突问题)查看std: 按住ctrl点击std//用于全局导入命名空间内的所有标识符 using std :: cout;
2023-06-27 19:02:06
1222
原创 Linux 学习记录39(C高级篇)
enum 类型名 {枚举项 1 , 枚举项 2 , 枚举项 3 , . . . 枚举项n , };1. 枚举项能直接使用2. 枚举项默认整形常量3. 能够给枚举项直接赋值4. 枚举项值是按顺序递增的5. 枚举是适用于typedef类型重定义的6. 枚举一般用于数据间有相互关系并连续的return 0;使用场景:用于是v要使用连续的常量,并且每个常量特殊含义的时候Makefile 是一个名为Makefile的工程管理文件。
2023-06-25 20:16:32
794
原创 Linux 学习记录38(C高级篇)
字符串列表在的是变量可能出现的所有情况,for循环执行的次数和字符串的个数有关,变量要顺序遍历结果字符串列表中的每一种情况,for循环才结束。函数名 参数1 参数2 参数3。=用以输出连续的序列=
2023-06-23 08:34:30
964
原创 Linux 学习记录37(C高级篇)
所以shell擅长执行指令,不擅长做运算操作,所以通常需要借助工具完成运算。格式:变量名=$[表达式1,表达式2,表达式3…
2023-06-20 20:34:28
1267
原创 Linux 学习记录36(C高级篇)
存储类型 数据类型 变量名;存储类型 : auto const static volatile register externshell是一个弱数据类型的语言,都是当作字符串处理的shell脚本中定义变量时,等号两边不能有空格变量名 = 变量的值变量名 = '变量的值' 变量名 = "变量的值" #!
2023-06-19 19:02:19
1582
原创 Linux 学习记录35(C高级篇)
1. 压缩效率:xz>bz2>gz2. 压缩时间:xz>bz2>gz适用场合:xz一般用于需要将文件归档(长时间不再去使用),gz一般用于即时的文件传输。
2023-06-16 18:47:29
2211
原创 Linux 学习记录33(网络编程篇)
上下文切换: 从A进程切换到B进程,A进程的资源要完全替换成B进程的,是一个耗时操作。不需要创建新的进程和线程,减少系统的资源开销,减少上下文切换的次数。上下文: 运行一个进程所需要的所有资源。IO多路复用(重点)
2023-06-12 19:55:10
337
原创 Linux 学习记录31(网络编程篇)
仅仅是将对端的IP和端口号记录到内核套接字中。记录后只能与记录的端口和IP进行通信。此时UDP只能与记录的对端进行通信。TCP中这个函数只能成功一次。UDP中这个函数可以成功多次。
2023-06-08 21:00:19
404
原创 Linux 学习记录30(网络编程篇)
*输入打印的错误类型 打印错误信息,行,具体函数*/ # define ERR_MSG(msg) do {/*输入打印的错误类型 打印错误信息,行,具体函数*/ # define ERR_MSG(msg) do {/*输入打印的错误类型 打印错误信息,行,具体函数*/ # define ERR_MSG(msg) do {do/*输入打印的错误类型 打印错误信息,行,具体函数*/ # define ERR_MSG(msg) do {fprintfstderr。
2023-06-07 21:10:23
253
原创 Linux 学习记录29(网络编程篇)
windows+R 输入cmd回车输入ipconfig然后回车或者ipconfig/all查看IP+/all。
2023-06-06 18:39:50
260
原创 Linux 学习记录27(进程线程篇)
当子进程结束时,父进程会拿到哟个SIGCHLD的信号,我们可以将该信号进行捕获,在该信号对应的信号处理函数中手动回收子进程的资源。所谓信号,就是软件模拟的中断的功能,信号是软件实现的,而中断是硬件实现的。异步通信:进程在要执行前不需要一直阻塞等待其他进程结束。同步通信:进程在要执行前一直阻塞等待其他进程结束。ipcs -想要删除的信息 信息ID。可以使用kill -l查看所有信号。系统5又提供了三种进程间通讯。
2023-06-02 20:48:22
105
原创 Linux 学习记录26(进程线程篇)
无名信号量维护了一个value,生产者线程每生产一个,value就会自增1,消费者线程每消费一个,value就会自减1,当value为0时,生产者线程可以执行,但是消费者线程,阻塞等待。在linux系统中,如果有多个线程需要同步的话,如果只使用无名信号量来完成,需要定义多个无名信号量,使用起来比较麻烦,此时我们可以采用系统开发的条件变量来完成这个工作。条件变量维护了一个队列,可以将多个线程先放入该队列中进行休眠,当有信号唤醒该线程时,那么该线程进入执行状态。已经知道线程的执行顺序,并且线程是顺序执行的。
2023-06-01 19:47:08
175
原创 Linux 学习记录25(进程线程篇)
与斥是多个线程共同强占临界资源的过程中,只有抢占成功,就可以操作临界资源,如果没有抢占成功,就不能操作临界资源,这里没有体现按顺序进行使用临界资源问题,可能在某个线程执行多次后,才抢占到临界资源,也有可能永远枪不到,还有可能是多个线程同时抢到,为了解决这个问题,我们引入互斥机制,,不依赖于终端而存在因为在终端上运行的进程,随着终端被关闭,进程也随之关闭而且一般不会被打断,需要将其执行放在根目录下。,默认是结合态,结合态的线程,结束后需要使用pthread_join回收资源。所谓守护进程,其实就是一个服务,
2023-05-31 18:36:54
135
原创 Linux 学习记录24(进程线程篇)
进程创建过程,是通过拷贝父进程得到的,进程的内核空间中是通过task_struct结构体表述的,新经常在创建过程中,直接拷贝父进程的该结构体得到,只需要稍微修改即可,保留了父进程的的大部分遗传信息。2进程(kthreadd进程):也称为调度进程,这个进程也是由0号进程产生,他的任务是完成任务调度工作。1进程(init进程):他是在0号进程产生,这个进程主要用于硬件的初始化工作。0进程(idel进程):是linux系统启动后的第一个进程。进程6041,进程6042,进程6043,进程6044。
2023-05-30 19:10:22
185
原创 Linux 学习记录23(IO篇+静/动态库+多进程理论)
在使用gcc编译时,会将你的我加你和库文件一起生成一个可执行文件,但是程序体积较小,但是在执行程序时,需去寻找该库的位置,效率较低,但是可以由多个文件共享一个文件,动态库又称共享库。静态库只,将xxx.c文件编译生成的一个库名为.a的二进制文件,当需要使用该库中的某个函数时,直接调用该函数即可,前提是编译时链接了该库。将xxx.c文件编译生成的一个库名为.a的二进制文件,当需要使用该库中的某个函数时,直接调用该函数即可,前提是编译时链接了该库。命令:gcc main.c -L ./ -ladd -I ./
2023-05-29 20:05:54
207
树莓派64位系统编译openCV-4.5.5报错
2024-01-23
求SCL3400倾角传感器角度计算公式
2024-01-09
SCL3400倾角传感器角度计算
2024-01-09
stm32mp157清除出厂固件
2023-08-03
芯片上电程序不自动运行
2023-03-29
STM32F411CEU6
2023-02-15
TA创建的收藏夹 TA关注的收藏夹
TA关注的人