- 博客(59)
- 资源 (1)
- 收藏
- 关注
原创 【STM32开发】-FreeRTOS开发入手学习
pxTaskDefinition:指向一个结构体 TaskParameters_t,这个结构体描述了任务的任务函数、usStackDepth:任务堆栈大小,注意实际申请到的堆栈是 usStackDepth 的 4 倍。puxStackBuffer: 任务堆栈,一般为数组,数组类型要为 StackType_t 类型。pxCreatedTask: 任务句柄,任务创建成功以后会返回此任务的任务句柄,这个句柄其实就是。usStackDepth:任务堆栈大小,由于本函数是静态方法创建任务,所以任务堆栈由用户给出,
2024-11-09 21:35:27
1294
原创 【STM32开发】-RS485相关
RS485 总线最长可以传输 1200m 以上(速率≤100Kbps)一般最大支持 32 个节点,如果使用特制的 485 芯片,可以达到 128 个或者 256 个节点,最大的可以支持到 400 个节点。1、RS485电气特性:逻辑“1”以两线间的电压差为+(2-6)V表示,逻辑“0”以两线间的电压差为-(2~6)V 表示。10 米时,RS485 的数据最高传输速率可达 35Mbps,在 1200m 时,传输速度可达 100Kbps。RS485属于物理层,为2线,半双工、多点通信的标准。
2024-11-04 14:55:48
308
原创 【linux开发-LCD】-在LCD上显示字符
通过一些字符取模软件获取到字符的子模:就是一个二维数组,用于表示字符点阵中,哪些小方块应该要填充颜色、哪些小方块不填充颜色。例如一个宽64个小方块,高86个小方块的字符点阵,数组存储的其实是字符的位图数据,字符点阵中的每一个小方块对应一个bit位;填充颜色的方块使用 1 表示、不填充颜色的方块使用 0 来表示,所以一个小方块刚好可以使用一个 bit 位来描述。
2024-11-01 16:23:02
874
原创 【嵌入式面试高频知识点】-MQTT协议
MQTT(Message Queuing Telemetry Transport),消息队列遥测传输MQTT 是一种基于客户端服务端架构的发布/订阅模式的消息传输协议,MQTT 协议是应用层协议,工作在TCP/IP四层模型中的最上层(应用层),构建于 TCP/IP协议上。
2024-10-31 16:32:55
591
原创 【linux开发-应用】V4L2开发相关
V4L2(Video for linux two),是 Linux 内核中视频类设备的一套驱动框架,为视频类设备驱动开发和应用层提供了一套统一的接口规范。
2024-10-31 14:58:20
224
原创 【linux开发-驱动】-RS232/485相关
根据电平的不同,串口分为TTL和RS232。不管什么样的接口电平,其驱动程序都是一样的,通过外接RS485这样的芯片就可以将串口转换为RS485信号。
2024-10-29 14:01:46
539
原创 【linux开发-Qt】-Qt多线程开发
QThread 线程类是实现多线程的核心类。Qt 有两种多线程的方法,其中一种是继承 QThread的 run()函数,另外一种是把一个继承于 QObject 的类转移到一个 Thread 里。
2024-10-21 15:06:45
582
原创 【linux开发-驱动】-I2C驱动相关
I2C 是一种很常见的同步、串行、低速、近距离通信接口,用于连接各种 IC、传感器等器件,它们都会提供 I2C 接口与 SoC 主控相连,比如陀螺仪、加速度计、触摸屏等,其最大优势在于可以在总线上扩展多个外围设备的支持。
2024-10-16 17:02:57
569
原创 【linux开发-驱动】-根文件系统相关(使用buildroot构建根文件系统)
buildroot 比 busybox 更上一层楼,buildroot 不仅集成了 busybox,而且还集成了各种常见的第三方库和软件,需要什么就选择什么,就跟我们去吃自助餐一样,想吃什么就拿什么。buildroot 极大的方便了我们嵌入式 Linux 开发人员构建实用的根文件系统。
2024-10-15 17:16:20
833
原创 【linux开发-驱动】-根文件系统相关(使用 busybox 来构建根文件系统)
Linux 系统移植的最后一步,根文件系统构建好以后就意味着我们已经拥有了一个完整的、可以运行的最小系统。
2024-10-15 15:01:44
908
原创 【linux开发-驱动】-U-Boot相关
Linux 系统要启动需要通过 bootloader 程序引导,也就说芯片上电以后先运行一段 bootloader 程序。在实际开发中,我们一般不会直接用 uboot 官方的 U-Boot 源码的,一般使用开发板半导体厂商提供的更全面。
2024-10-12 17:03:32
1277
原创 【linux开发-驱动】-STM32MP157启动相关
STM32单片机是直接将程序下载到内部的Flash,上电以后直接运行内部Flash中的程序。STM32MP157 内部没用供用户使用的 Flash,系统都是存放在外部 Flash 里面的,比如 EMMC,因此 STM32MP157 上电以后需要从外部 Flash 加载程序到内存中。
2024-10-12 14:48:55
946
原创 【linux开发-驱动】-设备树
描述设备树的文件叫做DTS(Device Tree Source),采用树形结构描述板级设备,也就是开发板上的设备信息,比如IIC接口上接了那些设备,内存基地址等树的主干就是系统总线,枝干就是对应的控制器,比如IIC控制器,GPIO控制器等都是主线上的分支。
2024-10-10 17:28:25
838
原创 【linux开发-Qt】-信号与槽机制
信号(signal),就是在特定情况下被发射的事件,例如 PushButton 最常见的信号就是鼠标单击时发射的 clicked() 信号。槽(Slot)就是对信号响应的函数。槽就是一个函数,与一般的 C++函数是一样的,可以定义在类的任何部分(public、private 或 protected),可以具有任何参数,也可以被直接调用。槽函数与一般的函数不同的是:槽函数可以与一个信号关联,当信号被发射时,关联的槽函数被自动执行。
2024-10-10 11:09:06
824
原创 【问题记录】-无法获得锁
ubuntu输入命令:sudo apt install libxcb-xinerama0。或者使用apt install时出现错误
2024-09-25 10:58:58
486
原创 【C++学习】6、继承
继承描述的是类与类之间的关系,A类继承B类,A类就拥有B类的数据和方法。继承的方式:公有继承(public)保护继承(protected)私有继承(private)子类无法继承父类的函数:构造函数、析构函数、重载=运算符调用成员或父类的有参构造,必须使用初始化列表处理方法:加作用域是最安全、最方便的处理方式 子类重新定义了父类的同名函数,将屏蔽父类的所有同名函数。 如果子类非要用父类的同名函数,需要加作用域
2024-08-01 15:35:44
324
原创 【C++学习】5、类的补充
1、普通成员函数内部自带一个隐式的this指针变量2、this保存的是调用该成员函数的对象的地址关键字:friend不通过类的成员函数直接访问类的私有数据,破坏了类的封装性特殊的运算符重载,会用到友元运算符重载,就是对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型。关键字:operator。
2024-08-01 14:59:22
568
2
原创 【C++学习】4、类
构造函数:编译器自动调用,如果用户不提供构造函数,编译器会提供一个空的无参构造函数。类实例化对象时,先为对象开辟空间,在自动调用构造函数完成初始化。析构函数完成对象的清理工作,先清理,在释放对象空间。析构函数也是编译器自动调用注意:1、析构函数不能释放对象的空间,只能释放对象中指针成员指向的堆区空间。2、如果类中有指针成员,用户必须实现析构函数3、如果用户不提供析构函数,编译器会自动提供一个空的析构函数本质是构造函数。
2024-07-31 17:29:15
516
原创 【C++学习】3、函数的默认参数以及重载
C++在声明函数原型的时候,可以为一个或者多个参数指定默认的参数值,当函数调用的时候如果没有给定实参,编译器会自动用默认值代替。注意:如果某个参数设置成默认参数,那么这个参数右边的所有参数都必须设置默认参数。
2024-07-31 16:01:32
220
原创 【C++学习】2、引用和内联函数
用关键字inline修饰的函数//内联函数的定义:inline必须在定义函数的时候修饰return x+y;//函数声明时 使用inline无效//无效的内联函数和宏函数的区别:1、内联函数的本质是函数,宏函数的本质不是函数2、宏函数在预处理阶段展开,内联函数在编译阶段展开3、宏函数不能保证参数的完整性,内联函数能保证参数的完整性4、宏函数没有作用域的限制,不能作为类的成员,内联函数有作用域,可以作为类的成员内联函数的特点:1、inline修饰的内联函数只是用户的建议,具体还得看编译器。
2024-07-31 14:36:35
193
原创 【C++学习】1、C++对C的扩展
区别:C++:面向对象编程、泛型编程,将同一属性的数据和方法封装在一起,形成对象,项目就是众多对象的集合。C:面向过程,先分析项目的实现步骤,用函数逐一实现项目的步骤,然后逐一调用函数来完成项目。三大特性:封装:将同一属性的数据和方法封装在一起,加以权限区分,用户只能通过公共方法操作私有数据。继承:体现的是类和类之间的关系,继承可以继承一个类的所有数据和方法。多态:一个接口多种方法。二、C++的扩展。
2024-07-31 14:12:07
386
原创 【学习笔记】-Linux系统连接阿里云,并上传温湿度
4、将解压后的文件复制到Linux系统中,先在终端在LinkSDK目录下,输入make,打开demos/mqtt_basic_demo.c,修改相应信息。生成后就会得到一个压缩包,然后解压,得到LinkSDK文件。6、然后在make编译一下,完成后,运行。更具自己的要求配置,配置好后点击生成。
2023-10-22 23:04:55
343
原创 【项目笔记】-esp8266固件烧录
一、具体步骤打开NodeMCU custom builds:点击这里在最后选择开始构建:显示构建成功,打开邮箱查看:等会后会收到邮箱,将链接复制到浏览器,就可以下载了:下载:
2023-10-14 15:11:12
178
原创 【DHT11驱动】-STM32CubeMX+DHT11温湿度传感器
采用单总线双向串行通信协议,每次采集都要由单片机发起开始信号,然后DHT11会向单片机发送响应并开始传输40位数据帧,高位在前。
2023-10-11 11:06:10
2321
4
原创 【网络编程】-什么是Libnet
Libnet是一个用于网络信息操作的开源C库,它提供了一组API,可用于创建和处理网络协议数据包。Libnet可以在不同的操作系统上运行,如Linux、FreeBSD、OpenBSD、Mac OS X和Windows等。它可以帮助开发人员快速构建定制的网络应用程序,包括网络安全工具、入侵检测系统和漏洞扫描器等。Libnet的主要特点包括:1. 提供多种网络协议支持,如TCP、UDP、ICMP、IP等。2. 可以创建多种协议数据包,包括ARP、RIP、OSPF等。
2023-09-13 19:42:57
487
原创 【网络编程】-TCP编程(重要)
TCP代表传输控制协议。它是一种网络协议,用于在计算机之间建立可靠的连接并传输数据。它确保数据在发送和接收之间的可靠性、完整性和顺序,并使用数据包确认和重传来处理丢失的数据包。
2023-09-07 19:55:12
103
原创 【网络编程】-什么是TFTP、广播和多播
广播是由一台主机向该主机所在子网内的所有主机发送数据的方式。多播:数据的收发只在同一分组中进行。//定义IP多播的结构体//将要加入的多播地址//需要加入多播地址的IP。
2023-09-06 20:27:43
127
原创 【数据结构】-树形结构概述和操作
树形结构是数据结构中的一种逻辑关系结构,在此逻辑结构中数据元素之间满足一对多的分层结构关系,也称分层结构。1.所有的数据节点中的起始节点,有且仅有一个,也称为根节点。没有直接前驱,可以有多个直接后继节点。2.末尾节点,可以有一个或者多个,也称为叶节点,或者树叶。每一个节点没有直接后继节点,有且仅有一个直接前驱节点。3.中间的节点,也称为内部节点。每一个节点有且仅有一个直接前驱节点;可以有多个直接后继节点。树是n个节点的有序集合,它满足两个条件:1.有且仅有一个特定的根节点;
2023-09-02 17:28:55
1957
原创 【数据结构】-链式队列(接上)
队列的链式存储也称链式队列,是一个特殊的链表;其中链表的头部结点链式队列的队头实现数据的删除和查看,也是出队端;链表的尾部结点实现数据的插入,也是入队端。四、主函数实现和实现结果。一、队列的链式存储结构。三、链表操作函数实现。
2023-09-01 19:57:42
73
原创 【数据结构】-链栈操作(接上)
链栈是栈的链式存储,是特殊的链表。链栈操作都是在链表的一端实现的:①如果在链表尾操作,在每一次入栈和出栈都需要找到链表的尾结点,导致效率较低;②把链表的头结点作为栈顶结点,入栈就采用头部插入法,出栈采用尾部插入结点。
2023-08-31 20:06:42
78
原创 【数据结构】-堆栈的操作(详细注释)
堆栈就是栈,是特殊的线性表。允许在其中一端进行数据的操作,称为栈顶;而另一端为固定端,称为栈底。特性:先进后出
2023-08-31 19:13:37
755
原创 【数据结构】-链表操作进阶(详细注释)
顺序遍历表中的数据结点,使用头部插入的方式实现倒序。链表的操作尽量多画图,将涉及到的标注在图中然后一步一步走,整个过程就会非常明显。
2023-08-30 20:12:40
67
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人