自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 资源 (1)
  • 收藏
  • 关注

原创 QT应用开发学习(QT项目实战(仿写串口助手))

我也是在b站学习的QT,之前学习了C++的基础知识,那么在QT中就能够很好的运用出来了,并且本人之前有学习过安卓,对GUI开发比较熟练,所以如果觉得自己基础不好的可以先看看C++的知识。本文直接粘贴全部代码并逐步讲解。1.在你的类中声明自定义槽函数。槽函数是普通的成员函数,但在声明时需要使用slots关键字进行修饰。例如Q_OBJECT2.在类的实现文件(.cpp)中定义槽函数。你可以像编写普通成员函数一样来实现自定义的槽函数。// 这里编写槽函数的具体实现逻辑 // ... }

2023-07-23 16:36:17 366

原创 QT应用开发学习(C++进阶知识学习)

/ 类体:由成员函数和成员变量组成// 一定要注意后面的分号class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号。类中的元素称为类的成员:类中的数据称为类的属性或者成员变量;类中的函数称为类的方法或者成员函数。1.声明和定义全部放在类体中声明和定义全部放在类体中,需要注意:成员函数如果在类中定义,编译器可能会将其当成内联函数处理_age = age;int _age;2. 声明放在.h文件中,类的定义放在.cpp文件中。

2023-07-20 16:19:38 172

原创 QT应用开发学习(C++基础入门知识)

定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名空间的成员。1. 命名空间的普通定义 //1. 普通的命名空间,里面可以定义变量,也可以定义函数 namespace xjt {} } 2. 命名空间可以嵌套 //2.命名空间可以嵌套 namespace xjt {int a = 0;} } } 3. 同一个工程中允许存在多个相同名称的命名空间 , 编译器最后会合成同一个命名空间中。int a = 3;int b = 1;

2023-07-20 15:15:06 494

原创 QT应用开发学习(1.学习知识汇总)

本文是记录学习QT知识的过程,如有错误,请提出批评指正!!!

2023-07-20 14:43:36 153

原创 嵌入式Linux应用_学习笔记(6:多进程和多线程)

这一章主要学习的是Linux下的多进程和多线程,并会学习到多进程间的通信方式(无名管道,有名管道,共享内存,消息队列,socket通信,信号量灯)。进程和线程都会从创建到使用到删除学习,主要学习的还是API的调用以及通信机制的理解。多进程是指在操作系统中同时运行多个进程。每个进程都是独立的,都有自己的内存空间,可以执行自己的指令,与其他进程相互独立。在Linux中,多进程是非常常见的应用场景。许多 Linux 应用程序都是多进程的,例如 Web 服务器、数据库服务等等。

2023-06-20 17:31:52 106

原创 嵌入式Linux应用_学习笔记(5:网络编程TCP和UDP)

这一章主要是是记录一下TCP和UDP的概念和在LInux下的编程函数。这个函数使用来创建一个套接字,但是这个套接字并没有具体有用的消息,需要后续的bind绑定。参数介绍domain网络程序所在的主机采用的通讯协族(AF_UNIX和AF_INET等),AF_UNIX只能够用于单一的Unix 系统进程间通信,而AF_INET是针对Internet的,因而可以允许远程通信使用。type。

2023-06-17 17:14:27 64

原创 嵌入式Linux应用_学习笔记(4:输入系统应用编程)

我们这一章主要学习如何编写代码来读取外部的输入设备在Linux下,输入系统是指用于接收和处理用户输入设备(比如键盘、鼠标等)输入的软件系统。输入系统通常由以下几个组件构成:1.内核输入子系统:负责驱动硬件设备,并将输入事件转换为内核中的事件结构体,发出一个内核事件。2.输入事件核心:允许用户应用程序在用户空间读取内核事件。3.输入事件处理:提供用户空间进程以一种统一的方式来管理输入事件的家族和多样化,同时也包括通过特殊的设备文件来定义输入设备类型和配置输入设备。

2023-06-15 12:09:00 123

原创 嵌入式Linux应用_学习笔记(3:FrameBuffer应用编程,字符编码)

这一章主要学习的了解FrameBuffer的使用,熟悉字符的编码格式,以及如何在LCD上显示一个字符和一行字符串。(本文并没有使用开发板,所有图片均来自网络)开源的Freetype字体引擎库它提供统一的接口来访问多种字体格式文件,从而实现矢量字体显示。我们只需要移植这个字体引擎,调用对应的API接口,提供字体关键点,就可以让freetype库帮我们实现闭合曲线,填充颜色,达到显示矢量字体的目的。

2023-06-10 23:30:35 934

原创 嵌入式Linux应用_学习笔记(2:文件IO操作)

Linux是一个以文件为中心的操作系统,所有系统的交互都涉及到文件的读写。文件IO通常分为两种方式:标准IO和系统调用IO。标准IO:标准IO是利用stdio库的函数进行文件IO的操作。在文件IO方面,常用的标准IO有fopen,fclose,fread,fwrite等函数。标准IO具有良好的缓冲机制,能够自动将多个小的IO操作合并成大的操作,从而提高效率,但也导致了实时性方面的问题。系统调用IO:系统调用则是直接调用操作系统的API进行文件IO操作。

2023-06-08 11:00:23 91

原创 嵌入式Linux应用_学习笔记(1:Linux指令,vim,MakeFile)

本文主要记录的是Linux常用指令,Linux下的vim常用的一些指令和MakeFile的使用说明。下图是嵌入式Linux的系统组成:在裸机或者是操作系统中,应用程序是可以直接通过调用库函数来操作内核的。而在Linux中,应用程序是不能操作内核程序的,因此我们是需要通过内核提供的驱动来调用内核。Makefile 是一种构建自动化工具,用于构建和管理计算机程序的编译过程。它通常用于大型软件项目,其中需要对多个源文件进行编译,并将它们链接起来以生成最终的可执行文件。

2023-06-07 22:20:38 112

转载 深入理解FreeRTOS_学习笔记(11.内存管理)

内存管理的五种方式

2023-06-04 15:07:29 54

原创 深入理解FreeRTOS_学习笔记(10.链表)

链表是FreeRTOS中使用次数相当多的,我们这一章主要就是链表项定义,插入,删除等一些操作,并且通过源码分析。如图所示,freertos具有非常多的链表宏操作freertos中对链表设定为双向链表,这是对数据结构中链表的深度理解,以及需要一定的C语言的代码能力。

2023-06-01 18:44:47 1129 1

原创 深入理解FreeRTOS_学习笔记(9.中断管理)

我们都知道在FreeRTOS中几乎每个函数都有两个api,分别是用在任务之间的和中断之间的,在中断中使用的话,api函数就要加上后缀FromISR。我们这一章主要学习一下FreeRTOS的中断机制。FreeRTOS只能在任务内进行屏蔽中断操作,一旦任务产生调度,中断则会被重新打开。

2023-06-01 13:08:05 532 1

原创 深入理解FreeRTOS_学习笔记(8.软件定时器)

定时器可以说是每个 MCU 都有的外设,有的 MCU 其定时器功能异常强大,比如提供 PWM、输入捕获等功能。但是最常用的还是定时器最基础的功能——定时,通过定时器来完成需要周期性处理的事务。MCU 自带的定时器属于硬件定时器,不同的 MCU 其硬件定时器数量不同,因为要考虑成本的问题。FreeRTOS 也提供了定时器功能,不过是软件定时器,软件定时器的精度肯定没有硬件定时器那么高,但是对于普通的精度要求不高的周期性处理的任务来说够了。

2023-05-31 18:22:13 474 4

原创 深入理解FreeRTOS_学习笔记(7.任务通知)

本文学习的也是最后一个通信方式,也就是任务通知,也可以称作“通知任务”。本文的重点主要有两点:1.搞明白任务通知的三个状态(实现任务通知的关键),2.明白任务通知的优缺点,以及任务通知模拟出来的队列、信号量、事件组与真实的有何区别这就是任务通信之间的最后一个方式了,我们前面一共学了多种通信,既可以让任务之间同步,也能让任务之间通信。

2023-05-30 16:13:06 115 1

原创 深入理解FreeRTOS_学习笔记(6.事件标志组)

FreeRTOS中的事件标志组是一种同步和通信机制,用于在多任务应用程序中协调任务之间的操作,使得任务能够以非阻塞的方式等待事件的发生,并在事件发生后立即被通知。事件标志组是一个包含32个标志位的二进制掩码,每个标志位都可以用来表示一个特定的事件。任务可以通过设置或清除相应的标志位来指示事件的发生或取消,而其他任务可以等待标志位的状态改变。当一个标志位被置位或清零时,事件标志组会检查等待该标志位的任务,并将这些任务加入到调度队列中,以便可以立即被唤醒。

2023-05-29 16:37:57 120

原创 深入理解FreeRTOS_学习笔记(5.信号量机制)

例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

2023-05-28 17:41:53 133

原创 深入理解FreeRTOS_学习笔记(4.队列的原理)

在裸机中我们都知道在两个函数之间如何进行通信,可以使用全局变量来传递。因为在裸机中函数是交替进行的,如果函数1对变量a进行了修改,那么函数2就必须要等待函数1运行完之后才能运行,这就保证运行的顺序,数据也就安全了。但是在操作系统中,每个任务几乎都是同时运行的,如果任务1才修改了变量,任务2就打断任务1运行把变量修改了,那就可能会达不到我们想要的结果,并且数据安全性也不高。因此互斥的访问变量就变得尤为重要,操作系统提供了这种方式,并且提供了内核对象消息队列来让任务之间进行通信。

2023-05-24 14:38:52 183

原创 深入理解FreeRTOS_学习笔记(3.任务调度的原理)

任务我们已经知道是什么了,如果还不了解任务内部的机制,就先看一下第二章的任务的本质。上一章在介绍任务结构体时发现了里面有两个链表,在本章就能很好的解释操作系统为什么会提供这两个链表了。知道上面的内容后,我们就得学习操作系统是怎么去管理任务的了。在FreeRTOS操作系统中,是通过链表来实现的。调度器需要先找出最高优先级的就绪态任务去运行,如果大家的优先级任务是一样的,大家就轮流执行,链表前面的先执行,运行一个时钟周期后调度器便将任务插入链表尾部,从而实现轮转执行。

2023-05-24 13:55:03 255 2

原创 深入理解FreeRTOS_学习笔记(2.任务的本质)

任务的创建大概都已经会使用了,可以使用静态和动态创建,使用静态创建需要自己定义栈空间大小,还需要设定相对应的宏。本章全程使用动态创建,不需要自定义栈空间大小。这章主要是讲了一下任务在内存中是怎么样的,下一期主要是写一下任务的调度原理,这就会用上TCB中的两个状态链表了,这需要去了解一下数据结构了。

2023-05-22 17:04:12 134 1

原创 深入理解FreeRTOS_学习笔记(1.程序的本质)

***

2023-05-22 17:02:14 150 1

空空如也

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

TA关注的人

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