- 博客(110)
- 资源 (2)
- 收藏
- 关注
原创 stm32f103c8t6驱动4*4矩阵按键
表示在扫描第一行,这时候列的哪个按键按下,就很明确的知道是哪个按键了,后面的以此类推。S2 1--高电平。S3 1--高电平。S4 1--高电平。
2025-04-08 20:30:00
197
原创 LVGL笔录----动画
最近在搞LVGL动画内容,发现网上能参考的资源太少了。现将自己学习到的内容做个笔录,仅供自己记录,若对你有帮助,那么最好不过,共勉!
2024-12-07 09:37:40
325
原创 stm32对EV1527波形进行解码
最近学习了红外协议,用的是基于EV1527协议,对于从来没搞过红外协议的人来说,初次上手的确略显迷茫,网上的文章也是讲的一知半解,看完原理后,压根没有办法去编写代码,所以,我将整理网上的概述,用通俗易懂的语言进行讲解!若对你有帮助,那么最好不过,共勉!一开始,你总得有个IC手册吧,没手册,你怎么知道相关信息是什么呢,这里我就打开了EV1527的手册,可以去嘉立创商城下载,这个步骤我就不教了。分析这个波形之前,我们得测量这个波形高低电平的脉宽时间,这是写代码的关键,如果不知道这个,代码是没办法完成编写的。
2024-11-11 08:55:24
1279
3
原创 卡尔曼滤波算法
最近学习运用了卡尔曼滤波,有一点心得,理论的东西我不讲了。具体看代码,主要是调参,调参的前提是你得理解卡尔曼。根据你实际项目需求调参。
2024-07-19 08:39:19
416
原创 Freertos-----任务之间的消息传递(使用消息队列&信号量方法)
首先直接打开普中的例程,然后在里面加上ADC的驱动代码,先初始化外设先,我使用的是一个光敏传感器。
2024-06-21 20:25:13
573
1
原创 让单片机代码性能起飞的七大技巧,从位操作到算法优化
能用char就不用int,较小的数据类型在处理和传输时更快,因为它们占用的内存和带宽更少。特别是尽量别用float,浮点运算通常需要更多的CPU周期和内存空间,因为浮点数的表示和运算比整数复杂,除非单片机内置了硬件浮点单元(FPU)。用i--、i-=1、i++、i+=1、去替代i = i-1,i=i+1的操作,有些编译器对前者进行了优化,效率更高。能用unsigned就不用signed,无符号整数的运算可能比有符号整数更快,因为不需要处理符号位。比如a=b*256,可以改成a = b
2024-05-30 15:41:40
1192
原创 点阵屏幕画点函数的拓展
众所周知,所有点阵的画图形函数,都是基于画点来实现的,都是通过画点函数封装来实现,那么这次就分享一个万能通用的模板来实现,只要你的工程有画点函数,既可直接复制以下代码。
2024-05-29 08:41:25
668
原创 Qt学习--多态(虚函数)
virtual总结:多态满足条件●有继承关系●子类重写父类中的虚函数多态使用条件●父类指针或引用指向子类对象重写:函数返回值类型函数名参数列表完全-致称为重写。
2024-03-19 17:22:20
832
原创 Qt学习--继承(并以分文件实现)
一个类可以派生自多个类,这意味着,它可以从多个基类继承数据和函数。定义一个派生类,我们使用一个类派生列表来指定基类。类派生列表以一个或多个基类命名。总结:简单来说,父类有的,子类都可以继承(前提是public访问权限),而子类又可以添加自己特有的属性。1.首先包含头文件,我这里就是包含 #include "animal.h"那么,这时候,我想在main里面调用这些类,该怎么做呢?如果要创建一个派生类来继承基类,该怎么做呢?如果要在main中使用这头猪,只需要。2.创建一个类,类名叫:Animal。
2024-03-18 22:40:55
1576
原创 Qt学习--构造函数&析构函数
当对象的生命期结束时,会自动执行析构函数。构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void。析构函数(destructor)也是一个特殊的成员函数,它的作用与构造函数相反,它的名字是类名的前面加一个“~”符号。默认的构造函数没有任何参数,但如果需要,构造函数也可以带有参数。类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行。是类的一种特殊的成员函数,它会在每次删除所创建的对象时执行。析构函数的名称与类的名称是完全相同的,只是在前面。构造函数&析构函数,
2024-03-16 12:52:10
1162
原创 Qt学习--this指针的使用
当一个对象的成员函数被调用时,编译器会隐式地传递该对象的地址作为 this 指针。是一个隐藏的指针,可以在类的成员函数中使用,它可以用来指向调用对象。指针,因为友元不是类的成员,只有成员函数才有。指针是一个特殊的指针,它指向当前对象的实例。在 C++ 中,每一个对象都能通过。指针来访问自己的地址。
2024-03-15 21:20:49
917
原创 Qt学习--C++基础知识(类&对象&函数的重载)
在 C++中,一个类包含另一个类的对象称为组合(Composition)。这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同。于表示一个类是由另一个类的对象组成的。这种关系通常表示一种"拥有"("has-a")的关系。:: 这个叫作用解析运算符,这个是比较重要的一个知识点。在同一个作用域内,可以声明几个功能类似的同名函数,普通变量访问成员变量或者成员函数,使用 “意思是set这个函数,隶属于Box这个类。指针变量访问成员变量或者成员函数,使用“”运算符,像C语言的结构体用法。
2024-03-14 21:16:12
690
原创 Qt学习--自定义命名空间
通过使用自定义命名空间,你可以有效地组织你的代码,并减少不同库之间的名称冲突。这在大型项目和团队协作中尤其重要。假设我们要创建一个命名空间来包含与圆形相关的功能。我们可以命名这个命名空间为。的命名空间,其中包含了计算圆的面积和周长的函数,以及 圆周率常量 PI。在main.h 里面包含一下就可以直接食用了。在这个头文件中,我们定义了一个名为。如何使用自己创建的 命名空间呢?问该命名空间中的函数和常量。中,我们首先包含了定义。
2024-03-14 12:43:49
519
原创 Qt学习--QT Creator使用基本介绍
话不多说,直接开搞,笔者用的是5.12.9版本。就弹出了一个这个,空的,因为我们啥也没写。双击打开QT Creator。
2024-03-14 12:29:02
747
原创 stm32---输入捕获实验实操(巨详细)
这次来分享上次没说完的输入捕获的知识点实验中用到两个引脚,一个是通用定时器 TIM3 的通道 1,即PA6,用于输出 PWM 信号,另一个是高级控制定时器 TIM1 的通道 1,即PA8,用于 PWM 输入捕获,实验中直接用一根杜邦线短接即可 PA6 和 PA8 即可,同时可用示波器监控 PA6 的波形,看看实验捕获的数据是否正确。PA6:用定时器的输出比较功能输出波形。PA8:用定时器的输入捕获功能捕获波形。步骤1.通用定时器产生 PWM 配置2.高级定时器 PWM 输入配置。
2024-01-08 20:31:59
7501
4
原创 stm32输入捕获实操
程序全速跑的时候(这时候我没有用杜邦线接入PA2(产生50%占空比的引脚)),始终不会进入TIM_IT_CC2这个中断的,这个始终是RESET,当我接入PA2的时候,就会进来中断,说明捕获到了上升沿,实际情况也是如此嘛。3.用PA1引脚来测上升沿捕获,看是否成功,如果成功,就让一个标志位置一,从而来判断是否捕获到上升沿,那么下面来看代码吧,根据代码来解释。定时器的功能挺强大的,可以输出一定的波形,又可以作为时基,还可以输入捕获,y1s1,真的太强了。还是挺简单的,后续继续分享,怎么测周期,频率,占空比。
2024-01-03 20:45:49
952
原创 ARM笔记-----输入捕获
当输入的信号存在高频干扰的时候,我们需要对输入信号进行滤波,即进行重新采样,根据采样定律,采样的频率必须大于等于两倍的输入信号。输入信号的有效捕获极性设置,假如我们需要对输入信号 上升沿开始捕获,参数为 TIM_ICPolarity_Rising,如果是下降沿捕获,参数为。如果捕获的脉宽的时间长度超过你的捕获定时器的周期,就会发生溢出,这个我们需要做额外的处理。输入捕获可以对输入的信号的上升沿、下降沿或者双边沿进行捕获,常用的有测量输入信号的脉。当只需要测量输入信号的脉宽时候,用一个捕获通道即可。
2024-01-03 14:44:02
2423
1
原创 ARM-----DMA笔记
直接存储器存取,是单片机的一个外设,它的主要功能是用来搬数 据,但是不需要占用 CPU。当我们配置好数据要从哪里来到哪里去之后,我们还需要知道我们要传输的数据是多少,数据的。控制器独立于内核,属于一个单独的外设,结构比较简单,从编程的角度来看,我们只需。以串口向电脑发送数据为例,要发送的数据很多,每发送完一个,那么存储器的地。,最核心就是配置要传输的数据,包括数据从哪里来,要到哪里去,传输的数据的单。方向我们设置外设为目标地址。传输数据的方向有三个:从外设到存储器,从存储器到外设,从存储器到存储器。
2023-12-18 20:17:03
1885
原创 单片机串口通用收发代码
在下面的程序中,对数据的处理是先接受,在处理,如果在处理的过程中,有串口中断接受数据,那么就把它依次放在队列中,队列的特征是先进先出,在串口中就是先处理先接受的数据,所以根据生产和消费的速度,定义不同大小的消息队列缓冲区就可以了。下面是从我做的项目中截取过来的程序。一般对串口的处理形式是"生产者"和"消费者"的模式,即本次接收的数据要马上处理,否则当数据大量涌进的时候,就来不及"消费"掉生产者(串口接收中断)的数据,那么就会丢失本次的数据处理。有了以上的接收方式,对一般的串口数据处理是没有问题的了。
2023-11-24 09:14:58
609
原创 STM32/N32G455国民科技芯片驱动DS1302时钟---笔记
根据DS1302的特殊寄存器,假设现在是15秒,那么1302的寄存器里面存储的是0x15,而不是0x0F,也就是说十六进制的0xAB,表示一个十进制数,高四位A代表十位,低四位B代表个位。然后后面的代码就照抄就行,只要会IIC,SPI协议,这些一看就明白是什么意思啦,无非就是移位和最高/最低位判断,然后将DATA拉高或者拉低,换汤不换药,简简单单。好,我们来分析上面的也就是说十六进制的0xAB,表示一个十进制数,高四位A代表十位,低四位B代表个位这句话。所以上面一大堆,可能看的很乱,来,我们现在来捋一捋。
2023-11-18 14:08:57
1900
1
原创 一个项目多个工程实现方法
一个项目中,往往会有多个工程,以便管理不同的代码。通常情况是面向不同客户或者debug调试才需要这样使用。以上就是实际项目中常用的调试,区分工程的手段,以上仅为自己的笔记,如果对你有帮助,那么最好不过,共勉!注: 关于写预编译代码,在哪都可以写,我这里给出2种方法。同样,我们在Client_C工程下定义Client_C。下面笔者通过一个简单的demo来说明一下使用方法。2.随便选择一个工程,如图(我选择。3.1 在代码本身里面写。3.2 在工程配置下写。
2023-10-16 13:49:09
393
原创 stm32--独立看门狗
2.看门狗其实是12bit递减计数器,,减到0会产生一个复位信号,这时会产生复位,如果在减到0之前,我们重新装载计数器值,这样就不会复位。所以在程序你认为会卡死的地方,写上喂狗,如果喂狗成功,那么程序没卡死,反之。1.看门狗的作用:防止程序异常跑飞,跑飞时,进行系统复位,从而不会导致代码瘫痪,奔溃卡死在某段程序。1.关闭写保护(只有关闭写保护才可以对独立看门狗进行写操作)最近学习到独立看门狗,总结下笔记。2.设置预分频系数和重装载值。
2023-09-11 10:19:37
562
原创 STM32驱动W25Q64---笔记
它由主机产生,决定了通信的速率,不同的设备支持的最高时钟频率不一样,如 STM32 的 SPI 时钟频率最大为fpclk/2,两个设备之间通讯时,通讯速率受限于低速设备。主设备输出/从设备输入引脚。主机的数据从这条信号线输出,从机由这条信号线读入主机发送的数据,即这条线上数据的方向为主机到从机。主机从这条信号线读入数据,从机的数据由这条信号线输出到主机,即在这条线上数据的方向为从机到主机。数据可靠性高:由于EEPROM是非易失性存储器,所以它的数据可以长时间保持,并且不会因为断电或者其它故障导致数据丢失。
2023-06-02 00:30:00
1080
原创 FreeRtos学习过程笔记1
本文是根据正点原子的FreeRtos的视频来总结的个人笔记。仅供自己理解为主导,若对你有帮助,那么最好不过,共勉!
2023-05-25 14:48:58
226
原创 STM32驱动超声波+OLED显示,并上传数据到云端(ONENET)
将HC-SR04超声波测距模块的Trig引脚连接到STM32F103C8T6单片机的GPIO口(例如PB10),将Echo引脚连接到另一个GPIO口(例如PB11)。在代码中,变量"t"保存回响时间,变量"lengthTemp"保存单次测量得到的距离值(以厘米为单位),变量"sum"保存多次测量时得到的距离值总和。这个函数会进行5次测量,然后将这5次测量的平均值作为最终的距离值,并返回。函数使用HC-SR04超声波传感器进行测量,该传感器通过发送超声波脉冲并测量返回的回响时间来计算物体与传感器之间的距离。
2023-05-14 22:20:21
2955
6
原创 基于stm32智能语音电梯消毒系统
1.HC-SR501人体红外传感器驱动说明:我把传感器密封在盒子里面时,一直都是低电平,当我打开时,是高电平(检测到人),说明符合我们的预期,那么,这个模块就算驱动完成!这里的结果是这样的,当检测到人=1时,会延续3-5秒钟为0,然后又为1(前提是还能检测到人),这个根据你拧这个有关。后面持续更新....2023/03/14。
2023-03-14 19:41:56
4738
14
原创 stm32驱动点阵屏显示图片
因为我需要动态显示,所以定义了一个数组指针,里面的成员变量都是我要显示的图案,我只需要通过索引就能更改图片。取模软件和我一样的配置就行,记得选择。stm32驱动点阵屏显示图片。只要能显示字符就能显示图片。
2023-02-08 15:48:54
1303
原创 2023学习心得01
1.4 思路是这样的,当按键按下,会类似Fun_Mem.Process=Men;这样赋值,然后主函数一直在轮询判断Fun_Mem.Process的值是多少,从而刷新对应的界面,看1.5的图。1.2结构体的初始化,都是一一对应的,其中UNIT_Key_Pro是具体是执行函数,如下图。这样就能显示了,以上内容仅作为自己的学习笔记,如对你有帮助,那最好不过,共勉!1.首先来分析按键的框架,这里用到了函数指针,不同的可以看我之前的文章→。2023年,加足马力,继续提升自己!的功能,这里只是个简单的例子。
2023-01-05 16:52:53
504
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人