自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

原创 QT打包成可执行文件

按以上操作之后在可执行文件目录就会生成许多文件。最后就可以运行可执行程序了。

2024-02-16 11:11:09 224

原创 QT学习事件

事件分发器会将分类之后的事件(鼠标事件、键盘事件、绘图事件。)分发给对应的事件处理器函数进行处理,每个事件处理器函数都有默认的处理动作(我们也可以重写这些事件处理器函。我们使用的基于窗口的应用程序都是基于事件,其目的主要是用来实现回调(因为只有这样程序的效率才是最高的)。窗口中对于产生的一系列事件都有默认的处理动作,如果我们有特殊需求就需要在合适的阶段重写事件的处理动作,的框架,主要用来开发带窗口的应用程序(不带窗口的也行,但不是主流)。当事件发送到指定窗口之后,窗口的事件分发器会对收到的事件进行分类。

2024-02-15 17:32:34 811

原创 QT学习文件操作类 QFile

也允许使用静态方法直接创建和显示对话框,例如 QFileDialog::getOpenFileName() ,这些方法更简单,但提供的自定义选项较少。是一个功能强大的类,用于处理文本数据,特别是在需要考虑字符编码和文本格式化的情况下。方法获取用户选择的文件路径列表,然后对这些文件进行相应的处理。在操作文件时提供了错误处理机制,可以通过相应的函数检查和获取错误信息。:如果需要,可以设置文件类型过滤器,以限制用户可以选择的文件类型。:根据需要设置对话框的模式,如打开文件、保存文件等。:检查文件是否存在。

2024-02-11 23:13:06 591

原创 QT学习(七)C++多态、抽象类、接口

想象一下,你有一个遥控器(这就像是一个基类的指针),这个遥控器可以控制不同的电子设备(这些设备就像是派生类)。按钮(这个按钮就像是一个虚函数)都能控制它们,但具体的操作(打开电视、播放音乐、开灯)则取决于你指向的设备。对于不同的交通工具,比如汽车和自行车,它们的移动方式是不同的。当我们使用基类类型的指针或引用来调用虚函数时,实际调用的是对象的实际类型(派生类))一样直接定义接口的关键字,但可以通过抽象类和纯虚函数的方式来实现接口的概念。:派生类继承抽象类,并实现其中的纯虚函数,以具体实现接口定义的方法。

2024-02-07 22:39:45 696

原创 QT学习(六)C++构造函数和初始化列表

中,使用初始化列表来初始化类的字段是一种高效的初始化方式,尤其在构造函数中。初始化列表直接在对象的构造过程中初始化成员变量,而不是先创建成员变量后再赋值。:对于非基本类型的对象,使用初始化列表比在构造函数体内赋值更高效,因为它避免了先默认构造然后再赋值的额外开销。的成员变量,必须使用初始化列表,因为这些类型的成员变量在构造函数体内不能被赋值。:成员变量的初始化顺序是按照它们在类中声明的顺序,而不是初始化列表中的顺序。中推荐的初始化类成员变量的方式,因为它提供了更好的性能和灵活性。构造,那构造的是什么呢?

2024-02-06 23:02:23 578

原创 QT学习(五)C++函数重载

等)在自定义类型(类或结构体)上的行为的特性。这意味着你可以定义类似于内置类型的运算符行为,使你的自定义类型更加直观和易于使用。这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同。您不能仅通过返回类型的不同来 重载函数。在同一个作用域内,可以声明几个功能类似的同名函数,中,运算符重载是一个允许程序员自定义各种运算符(如。:重载的运算符保持其原有的优先级和结合性。:不能重载两个基本类型的运算符。:只能重载已经存在的运算符。运算符来实现两个点的加法。下面的实例中,同名函数。:假设我们有一个简单的。

2024-02-06 22:43:37 894

原创 QT学习(四)C++引用

语言中,一个数据对应一个内存,通过由一个变量名来访问这个内存空间的数据,叫做直接访问,相 对直接访问,有个间接访问的说法,叫做指针。所以返回一个对局部变量的引用是不合法的,但是,可以返回一个对静态变量的引用。试想变量名称是变量附属在内存位置中的标签,您可以把引用当成是变量附属在内存位置中的第二。一旦把引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变量。引用变量是一个别名,也就是说,它是某个已存在变量的另一个名字。当函数返回一个引用时,则返回一个指向返回值的隐式指针。引用必须在创建时被初始化。

2024-02-06 21:15:37 248

原创 QT学习(三) C++类

类,它可能包含颜色、品牌、型号等属性(数据成员),以及 启动、停止、加速等行为(成员函数)。每当你基于这个类创建一个对象时,你就有了一个具体的汽 车,具有这些属性和行为。这是一种常见的设计模式,用于表示一个类是由另一个类的对象组成的。实际上它是一个指针变量,是保存某个函数地址的变量,所以它不是成员函数,是成员数据。真正的成员函数遵守封装特性,在函数体内部访问成员数据的时候,不需要参数传递。函数中的原本结构体变量改成了类的实例化,如果变量类型是指针,把原来的。这些是类内部的变量,用于存储对象的状态。

2024-02-06 20:27:00 906

原创 QT学习(二)C++Lambda 表达式

Lambda 表达式是 C++11引入的一种的方式,它允许你在需要函数的地方内联地定义函数,而无需单独命名函数Lambda表达式的基本语法如下:](parameters->// 函数体// 可以使用捕获列表中的变量returnexpression;//可选的返回语句。

2024-02-02 23:33:29 606

原创 QT学习(一)C++命名空间

假设我们要创建一个命名空间来包含与圆形相关的功能。我们可以命名这个命名空间为Cir。

2024-01-31 22:35:20 658

原创 freerots学习(十)任务通知

FreeRTOS从版本V8.2.0开始提供任务通知这个功能,每个任务都有一个32位的通知值。按照FreeRTOS官方的说法,使用消息通知比通过二进制信号量方式解除阻塞任务快45%, 并且更加省内存(无需创建队列)。在大多数情况下,任务通知可以替代二值信号量、计数信号量、事件标志组,可以替代长度为1的队列(可以保存一个32位整数或指针值),并且任务通知速度更快、使用的RAM更少!

2024-01-30 23:48:04 415 1

原创 freerots学习(九)事件标志组

是一组事件标志位的集合, 可以简单的理解事件标志组,就是一个整数。位无符号的数据类型变量来存储事件标志, 但其中的高。位用作存储事件标志 ,所以说一个事件组最多可以存储。KEY2 都按过,则执行 task2。:表明某个事件是否发生,联想:全局变量。通常按位表示,每一个位表示一个。创建一个事件标志组和两个任务(位用作存储事件标志组的。事件标志组本质是一个。检测按键,如果检测到。

2024-01-30 11:20:47 406 1

原创 freerots学习(八)互斥量

在多数情况下,互斥型信号量和二值型信号量非常相似,但是从功能上二值型信号量用于同步,而互斥型信号量用于资源保护。互斥型信号量和二值型信号量还有一个最大的区别,互斥型信号量可以有效解决优先级反转现象。

2024-01-29 22:29:46 350

原创 freerots(七)计数型信号量

计数型信号量相当于队列长度大于1的队列,因此计数型信号量能够容纳多个资源,这在计数型信号量被创建的时候确定的。

2024-01-29 21:24:27 274

原创 freertos学习(六)延时函数

这还需要解释吗?

2024-01-29 21:00:10 144

原创 freerots学习(五)二值信号量

信号量这个名字,我们可以把它拆分来看,信号可以起到通知信号的作用,然后我们的量还可以。),是在多任务环境下使用的一种机制,是可以用来保证两个或多个关键代。态,当我们的那个量没有限制的时候,它就可以被称作为计数型信号量。互斥访问:比如门钥匙,只有获取到钥匙才可以开门。的时候,它就可以被称作二值信号量,只有两个状。任务同步:比如我录完视频你才可以看视频。用来表示资源的数量,当我们的量只有。两种状态,通常情况下,我们用。信号量也是队列的一种。创建一个二值信号量,按下。,大小为零的队列,只有。

2024-01-29 00:13:04 149

原创 freerots学习(四)队列

队列又称消息队列,是一种常用于任务间通信的数据结构,队列可以在任务与任务间、中断和任务间传递信息。为什么不使用全局变量?如果使用全局变量,兔子(任务1)修改了变量a,等待树獭(任务3)处理,但树獭处理速度很慢,在处理数据的过程中,狐狸(任务2)有可能又修改了变量a,导致树獭有可能得到的不是正确的数据。在这种情况下,就可以使用队列。兔子和狐狸产生的数据放在流水线上,树獭可以慢慢一个个依次处理。关于队列的几个名词:

2024-01-27 22:42:41 320

原创 freerots学习(三)任务调度

还有一种调度规则是协程式调度,但官方已明确表示不更新,主要是用在小容量的芯片上,用得。处于就绪态的任务是指那些能够运行(没有被阻塞和挂起),但是当前没有运行的任务,因为同。如果一个任务因延时,或等待信号量、消息队列、事件标志组等而处于的状态被称之为阻塞态。高优先级抢占低优先级任务,系统永远执行最高优先级的任务(即。对指定任务进行挂起,挂起后这个任务将不被执行,高优先级任务不停止,低优先级任务无法执行;的使用权被这个任务占用(同一时间仅一个任务。同等优先级任务,轮流执行,时间片流转;高优先级任务,优先执行;

2024-01-27 16:05:50 402

原创 freerots学习(二)任务的创建和删除

1. 在 SYS 选项里,将 Debug 设为 Serial Wire ,并且将 Timebase Source 设为 TIM2 (其它定。动态创建任务的堆栈由系统分配,而静态创建任务的堆栈由用户自己传递。:指向任务函数的指针,任务必须实现为永不返回(即连续循环);:任务的名字,主要是用来调试,默认情况下最大长度是。线程,创建一个任务,就会在内存开辟一个空间。:用于返回已创建任务的句柄可以被引用。玩游戏、陪女朋友,都可以视为任务。、谷歌浏览器、记事本,都是任务。:指定的任务栈的大小;3. 时钟按下图配置。

2024-01-27 14:44:30 305

原创 stm32编码器接口

编码器接口可接收增量(正交)编码器的信号,根据编码器旋转产生的正交信号脉冲,自动控制CNT自增或自减,从而指示编码器的位置、旋转方向和旋转速度 每个高级定时器和通用定时器都拥有1个编码器接口 两个输入引脚借用了输入捕获的通道1和通道2。设置为TIM_ICPolarity_Rising表示高低电平不反转。设置为TIM_ICPolarity_Falling表示高低电平反转。下图应该先将TI1电平反转再进行计数。

2024-01-27 00:17:32 303

原创 FreeROTS学习(一)

作为一个轻量级的操作系统,功能包括:任务管 理、时间管理、信号量、消息队列、内存管理、记录功能、软件定时器、协程等,可基本满 足较小系统的需要。操作系统是完全免费的操作系统,具有源码公开、可移 植、可裁减、调度策略灵活的特点,可以方便地移植到各种单片机上运行,其最新版本为 10.4.4版。是个无情的战斗机器,可以快速在两个乃至多个任务间快速切换,并且不觉得劳累,实现。每个任务都是独立运行的,互不影响,由于切换的频率很快,就感觉像是同时运行的一样。不是指某一个确定的系统,而是指一类操作系统。

2024-01-22 23:18:31 466

原创 c语言基于easyx图形库绘制哆啦A梦

哆啦A梦

2024-01-21 19:59:26 811 1

原创 操作系统作业调度课设

设计要求:编程实现一个作业模拟调度程序,计算不同调度算法下的作业平均周转周期及带权周转周期。实现调度算法:1)先来先服务;2)短作业优先;3)最高响应比优先。每个作业有一个作业控制块(JCB),主要包含信息:作业控制ID,作业名,作业达到时间,作业运行时间,作业完成时间,作业状态等。设计内容:1)作业数不得少于5个。2)演示不同算法的调度过程。3)计算不同算法下的作业平均周转周期及带权周转周期。本实训以Windows为平台,以C语言为设计语言,进行操作系统各种算法的模拟实现。

2024-01-20 16:40:27 851

原创 NRF24L01

NRF24L01

2023-12-27 17:39:59 380

原创 mpu6050学习(一)

陀螺仪

2023-12-24 00:27:51 1117

原创 二维数组排序

二维数组排序

2022-11-06 16:55:24 104 1

空空如也

空空如也

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

TA关注的人

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