自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 资源 (2)
  • 收藏
  • 关注

原创 网络知识总结

已知TCP/IP协议分为四层/五层,分别是应用层,传输层,网络层,接入层(数据链路、物理层)。其中物理层做一些简单的电平传输,通过光纤、双绞线、无线电等外部介质进行0、1电平信号的传输。 数据链路层:相互连接的端口之间如何知道是发送给本机的呢,这时候就需要MAC地址作为标记,由于物理层有的介质可靠性不高,所以需要数据链路层进行数据校验,数据链路层会将物理层的长度未知比特流切分成各个段,每一段分别进行CRC校验,将MAC地址等信息加在包头,将CRC校验和加在包尾,这就是数据链路层的帧格式。对比特流

2022-07-06 20:48:19 341

原创 STM32F429 之EXTI外部中断

EXTI外部中断 EXTI external interrupt event control 外部中断事件控制器 1)EXTI就是可以将IO口的电平变化(上升/下降沿)转化成一个中断或者事件 2)F429的EXTI由23条线,其中EXTI0-15是配置GPIO的,通过SYSCFG进行EXTI的配置,其余七条是特定的连接 3)EXTI框图 从输入线进入后会进行边缘检测电路,这时配置上升沿触发选择/下降沿寄存器来确认是上升沿/下降沿有效 即配置EXTI_RTSR...

2022-04-03 14:24:17 4498

原创 Modbus数据包分析

(一)10H功能码 数据报格式为: 从机ID(1) 功能码(1) 起始地址(2) 读取寄存器个数(2) 写入或读取的字节数(2) 数据(---) 从机往主机写 从机监测7个数据 数据分析:01 10 00 00 00 08 10 00 09 01 0A 00 08 00 07 00 01 00 00 00 00 00 00 01: 从机ID是1所以这里是01 10: 功能码是16,说明为写多寄存器 00 00 起始寄存器地址 00...

2022-03-03 16:36:37 1631

原创 IO-总结

标准IO函数? ftell ->获取流指针当前的位置 freopen ->重定向流指针 fopen ->打开流指针 fgets ->从流指针中获得字符串(char *buf,int size,FILE*) fputs ->向流指针中写入字符串(char *buf,int size,FILE *) fclose ->关闭流指针 fprintf ->printf的流指针升级版,向流指针中输入固定格式的字符串 rewink -...

2022-02-26 19:37:40 787

原创 三方库移植

再说一下三方库移植,为什么要移植三方库呢,因为很多时候开发为了节省时间需要调用其他的库函数,但是很多库不像之前的cJSON和sqlite3等这种非常知名的库会提供deb,只提供源码,所以如果要在linux和arm上使用就需要用到三方库移植,三方库的移植步骤: 1.先在官网或者git获取该库的源码压缩包 2.解压并进入目录 3.创建一个空的install文件夹便于安装 4.配置编译选项,一般源码目录下有configure --host:指定编译器 --prefi...

2022-02-26 09:15:25 522

原创 MQTT初识

今天学的是MQTT,结合了之前TCP和JSON的知识,我对MQTT的理解是他是一种轻量级的通信协议,小带宽,适合嵌入式这种窄带传输的应用场景下,它基于TCP,并且他在TCP基础上更加可靠,与TCP不同的是,MQTT引入了几个新的概念,MQTT仍然分客户端和服务器,服务器在MQTT中叫Broker即代理人,做信息传输的桥梁,客户端在MQTT中分为发布者(publish)和订阅者(subscribe),客户端之间是平等关系,两个客户端之间既可以是发布者也可以是订阅者的关系,还有一点不同的是MQTT的消息有主题,

2022-02-25 19:44:49 634

原创 C/C++面试题

C/C++经典面试题 首先Volatile的字面意思是易变的,Volatile关键字一般用于寄存器变量,起到防止编译器优化作用 因为寄存器是会经常做存取操作,而对于经常做存取操作的变量来说,编译器一般 会对其进行优化,举个例子 XBYTE[2]=0x55; XBYTE[2]=0x56; XBYTE[2]=0x57; XBYTE[2]=0x58; 编译器优化过后就只有XBYTE[2]=0x58这一条,如果在变量XBYTE前添加Volatile关键字 就会防...

2022-02-23 08:46:51 487

原创 QT-10-程序打包

更换程序图标 1. 设计一款图标(略),教学可参考:阿里巴巴矢量图标库 2. 转换为.ico图标格式,可参考:直接下载ico、png转ico 3. 把ico文件拷贝到工作目录 4. 在Qt Creator中选中项目名称,鼠标右键,点击“添加新文件”。 5. 按照下图方式选择。 6. 创建图标配置文件,一定要写扩展名! 7. 直接点击完成后,打开icon_configure.rc,在.rc文件中添加一行代码 IDI_ICON1 ICON DISCARDABLE "XXX.ico" X

2022-02-22 14:37:45 956

原创 QT-9-TCP网络编程

TCP和UDP 在嵌入式中,主要使用网络编程进行传感器数据的获取,以及控制命令的发送,对数据完整性的要求较高,Qt课程中以TCP的使用为主。 IP地址和端口号 IP地址 为每台在网络的计算机分配一个网络地址,类似于“门牌号”。功能是让同一个网络的其它网络设备可以找到对应的网络设备。 端口号Port 为每个进程(应用程序)分配一个端口号,用于从一台网络设备上找到对应的软件程序。 通信条件 1. 在同一个网络下,无论是IP地址还是端口号,都必须保持唯一。 2. 在Qt中使用

2022-02-20 19:22:40 1348

原创 QT-8-使用SQL数据库

数据库(掌握) Qt本身并没有数据库,但是Qt支持市面上绝大多数主流的数据库的连接,前提是运行Qt的电脑上也有对应的数据库产品。 在嵌入式领域、纯软件客户端领域都在使用SQLite数据库作为程序本地数据存储的方式。原因在于SQLite数据库十分轻巧,因此Qt(Qt5以上)中内置了SQLite数据库,不需要单独安装和配置。 Qt支持以下数据库的连接,以下是各个数据库的驱动名称: 除了SQLite之外,其它的数据库都需要单独安装和配置驱动程序。并且Qt为这些数据库统一了操作的API,基本上可以做到操

2022-02-18 14:18:59 2670

原创 QT-7-多线程

复现程序未响应 QThread类是Qt中的线程类,其中有三个睡眠的函数: 分别表示在当前线程下不同单位(毫秒、秒、微秒)的睡眠,睡眠指的是强行占用CPU,但是什么事情都不做,后续的代码都被阻塞,直到睡眠结束。 复现程序卡顿未响应的代码如下: dialog.h #ifndef DIALOG_H #define DIALOG_H #include <QDialog> #include <QThread> #include <QMessageBox>

2022-02-17 20:00:05 945

原创 QT-6-文件IO

QFileDialog 是QDialog的派生类,专门用于弹出对话框选择打开的文件和目录,或保存的文件。使用静态函数调用。 弹出选择要读取(保存)文件的对话框 QString QFileDialog::getOpenFileName(QWidget * parent = 0, const QString & caption = QString(), const QString & dir = QString(), const QString & filter = QStr

2022-02-17 11:38:30 684

原创 QT-5-多窗口编程

QMessageBox(掌握) 是一个用于通知用户或询问用户一个问题并接收答案的模态对话框,是一个QDialog的派生类,分为四种类型: 上面四种是最基础的QMessageBox类型,且Qt官方已经设计好了,我们只需要调用并显示即可。这四个弹窗都使用以下格式的静态函数调用。 StandardButton QMessageBox::information(QWidget * parent, const QString & title, const QString & text)

2022-02-17 08:58:24 2534

原创 QMetaObject::connectSlotsByName: No matching signal for问题的解决方法

今天在写自定义窗口的时候遇到的问题。 因为前面在designer用了隐式调用槽函数,所以我直接拿隐式调用的函数名cp过来改了一下 没想到竟然会报错,查了一下资料发现是因为隐式调用有固定的格式on_xxx,如果你显式调用 还是用这个格式就会触发这个error ...

2022-02-16 17:34:25 774

原创 Epoll为什么高效?

Epoll的底层实现如上图:(了解) (红黑树,是特殊的二叉树,Epoll怎样能监听很多个呢?首先创建树的根节点,每个根节点都是一个fd以结构体的形式存储(节点里面包含了一些属性,包含callback函数),对于树来说可以随意挂接节点。 链表,当某一个文件描述符产生事件后,会自动调用callback函数,通过回调callback函数来找到链表对应的事件(读时间还是写事件),链表为事件链表。 epoll为什么高效? 1.select和poll在操作系统和内核层之间需要将监测的文件进行拷贝传输,每..

2022-02-16 09:53:43 793 1

原创 QT-4-常用类和组件

命名规范(熟悉) 1. 类名、枚举必须使用大驼峰命名法(帕斯卡命名法),即每个单词的首字母大写,例如ComputerInfo.h;Qt自带的类都是以Q开头的。 2. 函数、变量名使用小驼峰命名法(驼峰命名法),即第一个单词全小写,其它单词的首字母大写,例如autoFillBackground、backgroundRole。 3. 常量使用全大写,单词之间使用下划线分割。 QString类(掌握) QString类是Qt中的字符串类,Qt中不使用char*和std:string。QString类..

2022-02-15 20:07:00 1235

原创 QT-3-基本组件2

4. QLineEdit 单行文本编辑框 QLineEdit是一个单行的用于录入用户输入文字的文本框,常用属性如下: 常用信号如下: 代码链接:百度网盘 请输入提取码 提取码:hqyj 5. 一堆类似的组件 QDial 与其它几个组件的区别是只能看,不能操作。 上述组件都有以下属性 ,且功能相似。 常用信号如下: 当value值发生变化时发射。 代码链接:百度网盘 请输入提取码 提取码:hqyj 6.

2022-02-15 14:43:43 266

转载 数据结构快排

快排的理解: 首先快排的作用是将一串数列排序,比冒泡和选择好的地方在于时间复杂度小->O(nlogn) 空间复杂度小,但是缺点是不稳定,如果原数列比较有序,那么该算法的优势就不是很大。 基本的原理是先确定一个基准数,同时有两个指针low,high分别指向第一位和最后一位, 然后从high开始往第一位走,找到一个比基准数小的数字,将基准数换成该数字,然后用 temp记录下来基准数,同时low往最后一位走,找到一个比high大的数,然后替换high,然后 high往前走找到一个比lo...

2022-02-14 20:48:55 380

原创 QT-3-基本组件

Designer(掌握) Designer(设计师)程序是Qt中内置的独立程序,可以通过可视化的方式帮助开发者快速设计软件的页面。 通常不使用独立的Designer程序,因为在Qt Creator中直接打开.ui文件就可以使用Qt Creator集成的Designer程序。当然,使用集成的Designer程序的前提是项目中要包含界面文件。 软件区域功能如下: 正在上传…重新上传取消 需要注意的是,界面涉及区域中红色的表示实际运行不可见。另外,此区域仅代表预览的效果,实际效果以运行为准。..

2022-02-14 16:55:06 2536

原创 QT-2-信号与槽

信号与槽 信号与槽是Qt在C++的基础上新增的特性,类似于Java、C#回调的机制,但是使用起来更加方便,可以很容易做出不同组件之间的函数被动调用,是一种通信的机制。 信号是一种函数 槽也是一种函数 要使用信号函数与槽函数,有两个先决条件: 通信的对象必须是从QObject派生出来的 类中必须要加入O_OBJECT宏 函数原型 QObject::connect(const QObject * sender, const char * signal, const QObjec

2022-02-14 08:53:43 944

原创 QT-1-UI入门

QWidget(掌握) 所有的UI组件的基类,内部规定了很多组件的基本属性和函数。 属性: height 高度,单位像素 width 宽度,单位像素 x是横坐标,y是纵坐标,单位像素。x轴正方向是右,y轴的正方向是下。原点是左上角。坐标以组件的左上角为准。 dialog.h #ifndef DIALOG_H #define DIALOG_H #include <QDialog> // 引入头文件 #include <QDebug> #include &l

2022-02-14 08:52:00 465

原创 STM32F0-DAY1

时钟周期:时钟周期就是外接晶振的倒数 周期(S) = 1/频率(HZ) 机器周期:完成一个基本操作所需要的时间叫机器周期,根据不同的板子它的机器周期不同 指令周期:是指完成一条指令所需要的时间,取址-解析-执行所需要的时间。通常含一个机器周期的指令称为单周期指令,包含两个机器周期的指令称为双周期指令 rigester修饰的变量不能取地址 volatile 防止编译器优化:有时候编译器会将一个地址当成寄存器的值。为了防止出错需要用volatile来修饰该变量。 中断和异常:异常是系...

2022-02-13 14:33:46 1609

原创 TCP/IP常见问题

1.TCP/IP七层的作用是什么? 2.三次握手,四次挥手? 三次握手: 3.为什么三次握手却要有四次挥手? 因为握手连接的过程中在服务器第一次接收客户端发送的连接请求SYN包后,可以同时发送ACK确认包和SYN同步包,而挥手释放的过程中服务器在接收到客户端发送的FIN包后,很可能不会立即关闭socket,而是需要先发送ACK确认包告诉客户端我收到请求了,在服务器报文发送完毕后才能发送FIN结束包,断开连接,这样就多了一次发送。 4.挥手时客户端为什么要等待...

2022-02-13 14:26:32 1239

原创 C++智能指针思考

C++,智能指针

2022-02-12 10:51:03 609

原创 LinuxC高级 Day5

LinuxC高级_day4 【1】功能性语句 read 1)read var1 var2 var3 把读入行的第一个参数给var1 第2个参数给var2 把剩下的所有单词都给var3 2)read -n 5 var 从终端读取5个字符,输入到5个就自动结束 3)read -p “提示语句” var 4) read -s var 输入的时候取消回显 5)read -t 3 var 3秒内没有动作就跳过了 6)read -a 数组名 输入一个数组,数组之间的成员以空格隔开 [练习] 提示用户输入密码,密码不

2021-10-27 18:51:10 172

原创 LinuxC高级Day4

LinuxC高级_day4 【1】功能性语句 read 1)read var1 var2 var3 把读入行的第一个参数给var1 第2个参数给var2 把剩下的所有单词都给var3 2)read -n 5 var 从终端读取5个字符,输入到5个就自动结束 3)read -p “提示语句” var 4) read -s var 输入的时候取消回显 5)read -t 3 var 3秒内没有动作就跳过了 6)read -a 数组名 输入一个数组,数组之间的成员以空格隔开 [练习] 提示用户输入密码,密码不

2021-10-26 19:31:41 201

原创 LinuxC高级Day3

2021-10-25 18:55:27 188

原创 LinuxC高级day1

LinuxC高级_day1 【0】授课任务 Linux命令 复习补充 shell脚本 独立的语言 语法规则 C高级 学生管理系统(新) makefile 【1】什么是嵌入式? 以计算机为中心,软硬件可裁剪的专用计算机系统(通用计算机系统windows) 对体积功耗都有特定的要求 *系统的裁剪 操作系统 - 内核 windows - NT Ubuntu - Linux macOS - unix ios - unix Android - linux 【2】linux起源 1965 - mult

2021-10-23 14:32:42 947

原创 Linux_C高级day2

LinuxC高级_day2 【1】 学生管理系统 拆分文件 主函数文件 - 整体框架 - 调其他功能函数 接口文件 - 很多功能函数 头文件 - 结构体声明 函数声明 共同体 枚举 宏定义 H文件 student.h #ifndef STUDENT_H //防止头文件重复包含 #define STUDENT_H #endif 主函数文件 #include <stdio.h> // 头文件放在/user/bin #include “student.h” //先到自己的目录去找,找不到去/u

2021-10-22 18:40:29 278

原创 C语言简易计算器项目

C语言简易计算器项目 C语言项目练习之简易计算器 #include <stdio.h> #include <math.h> int main(int argc, const char *argv[]) { int data1,data2,xunhuan4,mode = 1; char op; start: printf("该计算器有普通计算模式(1)特殊模式(2):\n"); scanf("%d",&mode); if(mode == 1){ printf("|

2021-09-30 11:56:10 632

原创 Quartus ii 波形仿真出现error occured during modelsim simulation

我的代码编译没有问题,一仿真就出现这个错误,而且还不是在文本框里,有没有大佬知到该如何解决?

2020-10-28 21:41:47 5142 17

STM32F051开发环境搭建文档

STM32F051开发环境搭建文档

2022-02-15

鲸鲨笔试题-IO/C/C++

鲸鲨笔试题-IO/C/C++

2022-02-15

空空如也

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

TA关注的人

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