自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C语言链表操作

例如只有三个人,把他们叫做A、B、C,他们围成一圈,从A开始报数,假设报2的人被杀掉。,报M的将被杀掉,下一个人接着从1开始报。如此反复,最后剩下一个,求最后的胜利者。约瑟夫问题是个著名的问题:N个人围成一圈,第一个人从1开始。●然后轮到B报数,他报2。●首先A开始报数,他报1。●接着轮到A报数,他报2。●C接着从1开始报数。

2023-08-13 23:07:21 284

原创 QTTCP客户端服务端通信

Qt网络模块为我们提供了编写TCP / IP客户端和服务器的类。它提供了较低级别的类,例如代表低级网络概念的QTcpSocketQTcpServer和QUdpSocket,以及诸如和之类的高级类来执行使用通用协议的网络操作。它还提供了诸如和等类,实现承载管理。想要在程序中使用Qt网络模块,我们需要在pro项目配置文件里增加下面的一条语句。QT +=networkTCP协议()全称是传输控制协议是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP。

2023-07-05 16:52:32 706

原创 C++Qt 入门

其中,左侧有上下两个子窗口,上面的窗口显示了项目的文件结构,显示当前的项目为”,细心的还会发现“”是用粗体黑色标明。说明此项目是活动项目,活动项目的项目根节点都是用粗体字体表示的。如果打开了多个项目,那么我们只需要观察哪个是加粗的项目名就表示当前活动项目。Qt Creator和其他IDE开发软件一样。都是分组管理项目内的各种源文件,下面是项目内的文件简介。是项目管理文件,这个项目管理文件十分重要,当您加入了文件或者删除了文件,Qt Creator会自动修改这个*.pro文件。

2023-06-28 23:36:43 3774

原创 STM32中断管理

任何中断的优先级都大于任务!在我们的操作系统,中断同样是具有优先级的,并且我们也可以设置它的优先级,但是他的优先级并不是从015,默认情况下它是从5150~4这5个中断优先级不是FreeRTOS控制的(5是 取决于 configMAX_SYSCALL_INTERRUPT_PRIORITY1.在中断中必需使用中断相关的函数;2.中断服务函数运行时间越短越好。创建一个队列及一个任务,按下按键KEY1触发中断,在中断服务函数里向队列里发送数据,任务则阻塞接收队列数据。

2023-06-17 02:56:24 155

原创 STM32软件定时器

简单可以理解为闹钟,到达指定一段时间后,就会响铃。STM32芯片自带硬件定时器,精度较高,达到定时时间后会触发中断,也可以生成PWM、输入捕获、输出比较,等等,功能强大,但是由于硬件的限制,个数有限。软件定时器也可以实现定时功能,达到定时时间后可调用回调函数,可以在回调函数里处理信息。

2023-06-17 02:54:05 1853

原创 STM32延时函数

延时函数分类 相对延时:vTaskDelay 绝对延时:vTaskDelayUntilvTaskDelay 与 HAL_Delay 的区别 vTaskDelay 作用是让任务阻塞,任务阻塞后,RTOS系统调用其它处于就绪状态的优先级最高的任 务来执行。 HAL_Delay 一直不停的调用获取系统时间的函数,直到指定的时间流逝然后退出,故其占用了全 部CPU时间。

2023-06-17 02:44:29 599 1

原创 STM32任务通知

获取任务通知,可以设置在退出此函数的时候将任务通知值清零或者减 一。任务通知是通过更新任务通知值来发送数据的,任务结构体中只有一个任务通知值,只能保。如果被通知任务还没取走上一个通知,又接收了一个通知,则这次通知值未能更新并返回。如果被通知任务还没取走上一个通知,又接收了一个通知,则这次通知值未能更新并返回。等待通知的任务可以被阻塞, 但是发送消息的任务,任何情况下都不会被阻塞等待。如果被通知的任务当前没有通知,则被通知的任务的通知值 设为ulValue。发送通知,带有通知值并且保留接收任务的原通知值。

2023-06-17 02:43:03 760

原创 STM32事件标志组

表明某个事件是否发生,联想:全局变量flag。通常按位表示,每一个位表示一个事件(高8位不算)

2023-06-16 14:53:33 1764

原创 STM32信号量

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

2023-06-09 20:27:22 1353

原创 STM32队列

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

2023-06-09 19:02:38 2032

原创 STM32任务调度

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

2023-06-09 12:15:35 977

原创 STM32之FreeRTOS

Free即免费的,RTOS的全称是,中文就是实时操作系统。注意:RTOS不是指某一个确定的系统,而是指一类操作系统。比如:uc/OSFreeRTOSRTXRT-Thread等这些都是RTOS类操作系统。FreeRTOS是一个迷你的实时操作系统内核。作为一个轻量级的操作系统,功能包括:任务管理、时间管理、信号量、消息队列、内存管理、记录功能、软件定时器、协程等,可基本满足较小系统的需要。由于RTOS需占用一定的系统资源尤其是RAM资源,只有μC/OS-II。

2023-06-09 01:29:54 4158 1

原创 STM32之任务的创建与删除

任务可以理解为进程线程,创建一个任务,就会在内存开辟一个空间。比如:玩游戏、陪女朋友,都可以视为任务Windows系统中的MarkText、谷歌浏览器、记事本,都是任务。任务通常都含有while(1)死循环。

2023-06-02 00:57:37 588

原创 STM32之温湿度LCD显示并上传服务器

RS -- B1RW -- B2EN -- B10V0 -- GND(正视看不到显示结果,需要侧着看。否则需要接可调电阻)

2023-05-28 18:45:18 963

原创 STM32之SPI和W25Q128

SPI是串行外设接口()的缩写,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,越来越多的芯片集成了这种通信协议,比如AT91RM9200。

2023-05-28 17:17:48 2459 2

原创 STM32之IIC

用到的库函数:hi2cuint16_tDevAddressuint16_tMemAddressuint16_tMemAddSizeuint8_tpDatauint16_tSizeuint32_tTimeout参数一:I2C设备句柄参数二:,目标器件的地址,七位地址必须左对齐参数三:,目标器件的目标寄存器地址参数四:,目标器件内部寄存器地址数据长度参数五:,待写的数据首地址参数六:,待写的数据长度参数七:,超时时间返回值:HAL状态(OK。

2023-05-17 02:14:40 551

原创 STM32之ADC

和规则通道转换顺序的控制一样,注入通道的转换也是通过注入寄存器来控制,只不过只有一个。转化时间:从转换开始到获得稳定的数字量输出所需要的时间称为转换时间。位数越多,分辨率越高,一般来说分辨率越高,转化时间越长。个通道在转换时又分为规则通道和注入通道,其中规则通道最多有。个通道一起共用这个寄存器,所以需要指定规则转换通道的转。存器控制着转换通道的数目和转换顺序,只要在对应的寄存器位。连续转换:转换一次之后,立马进行下一次转换。个周期,算出最短的转换时间为。中写入相应的通道,这个通。量程:能测量的电压范围。

2023-05-15 01:48:28 493

原创 STM32之DMA

令人头秃的描述:,直接存储器访问提供在。

2023-05-15 01:31:32 335

原创 使用buildroot编译完整系统【IMX6ULLPRO】

100ask-imx6ull-pro- 512d-systemv-v1.img重命名为。机器性能不同,编译时间不同。性能差的电脑,有可能需要等待。配置文 件为例,在 ubuntu。目录里,就可以使用工具烧写到。编译成功后文件输出路径为。

2023-04-23 17:06:47 953

原创 IMX6ULL_Pro网卡配置

(15条消息) 【IMX6ULL_Pro板卡学习】配置 VMware 使用双网卡_vmware配置双网卡_爱学习的小莲的博客-CSDN博客(15条消息) 【IMX6ULL_Pro板卡学习】配置 VMware 使用双网卡_vmware配置双网卡_爱学习的小莲的博客-CSDN博客这篇写的还不错 所以我就不写了,我会增加几个内容。

2023-04-23 15:43:08 622

原创 IMX6ULLPRO交叉编译第一个APP和第一个led驱动

交叉编译工具链用来在Ubuntu主机上编译应用程序,而这些应用程序是在ARM等其他平台上运行。设置交叉编译工具主要是设置PATHARCH和三个环境变量,下面介绍具体设置方法。在本文档中,源码、交叉编译工具链都是存放于/home/book目录下;如果 你的目录不一样,请自行修改本节所讲述的命令。如需永久修改,请修改用户配置文件:在行尾添加或修改,加上下面几行设置完毕后,要执行命令使其生效,并通过命令来验证是否配置成功:以上操作是设置版工具链的过程。

2023-04-23 15:33:38 489

原创 IMX6ULLPRO单独编译kernel+dtb内核模块以及uboot

Bootloader是在操作系统运行之前运行的一段代码,用于引导操作系统。通常每个操作系统都有一组专属的引导加载程序。引导加载程序通常可以通过多种方式引导操作系统内核,还有各种命令用于调试或修改内核运行环境。U-Boot是一个开源的主引导加载程序,用于引导设备的操作系统内核,并含有多种命令以便调试系统。它适用于多种计算机体系结构,包括68kARMBlackfinMicroBlazeMIPSNiosSuperHPPCRISC-V和x86。U-boot官网:

2023-04-23 02:15:31 1208

原创 STM32看门狗

在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的模块或者芯片,俗称看门狗(watchdog)。独立看门狗工作在主程序之外,能够完全独立工作,它的时钟是专用的低速时钟(LSI),由VDD电压供电, 在停止模式和待机模式下仍能工作。

2023-04-10 00:27:10 374

原创 STM32实验4G遥控插座_风扇_灯

由于硬件的限制,上官二号无法直接带动。模块,实现电脑控制插座。

2023-04-09 01:49:28 222

原创 STM32实现Wi-Fi插座_风扇_灯

通过ESP8266模块,实现手机控制wifi插座风扇灯。

2023-04-09 01:36:48 152

原创 STM32蓝牙插座_风扇_灯

通过蓝牙模块,实现手机控制蓝牙插座风扇灯。本质:1.采用蓝牙的透传功能;2.控制IO口的输出。

2023-03-15 00:50:02 156

原创 STM32串口通信

串口发送数据,使用超时管理机制。

2023-03-15 00:05:41 199

原创 STM32感应开关盖垃圾桶

PWM波的频率不能太高,大约50HZ,即周期=1/频率20ms左右。

2023-03-11 01:15:47 1149

原创 STM32定时器Timer(PWM呼吸灯)

软件定时缺点:不精确、占用CPU资源。

2023-03-08 01:15:09 1224

原创 STM32电动车报警器

单片机供电VCC GND接单片机产品不震动,输出高电平,模块上的DO口产品震动,输出低电平,绿色指示灯亮AO口不用。

2023-03-08 00:58:53 331

原创 中断和事件

中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。

2023-03-07 22:26:24 1397

原创 复位和时钟控制(RCC)

备份区域拥有两个专门的复位,它们只影响备份区域。软件复位,备份区域复位可由设置备份域控制寄存器。当以下事件中之一发生时,产生备份区域复位。三种不同的时钟源可被用来驱动系统时钟。时钟打开,对应的设备才会工作。振荡器时钟(高速内部时钟)振荡器时钟(高速外部时钟)上电将引发备份区域复位。时钟(锁相环倍频时钟)

2023-03-07 21:53:35 530

原创 初识STM32单片机

单片机()是一种集成电路芯片,把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。

2023-03-04 15:45:31 2056

原创 使用STM32CubeMX生成工程文件

接线。

2023-03-04 13:37:59 752

原创 C++文件和流

当 C++ 程序终止时,它会自动关闭刷新所有流,释放所有分配的内存,并关闭所有打开的文件。在 C++ 编程中,我们使用流插入运算符( > )从文件读取信息,就像使用该运算符从键盘输入信息一样。成员函数的第一参数指定要打开的文件的名称和位置,第二个参数定义文件被打开的模式。对象都可以用来打开文件进行写操作,如果只需要打开文件进行读操作,则使用。

2023-01-30 20:20:45 424

原创 标准库与HAL库区别

每款芯片都编写了一份库文件,也就是工程文件里stm32F1xx...之类的。·将寄存器底层操作都封装起来,提供一整套接口(API)供开发者调用。配置结构体变量成员就可以修改外设的配置寄存器,从而选择不同的功能。SF公司目前主力推的开发方式,新的芯片已经不再提供标准库。·大大降低单片机开发难度,但是在不同芯片间不方便移植。为了兼容所有芯片,导致代码量庞大,执行效率低下。深入理解单片机的运行原理,知其然更知其所以然。寄存器众多,需要经常翻阅芯片手册,费时费力。更大灵活性,可以随心所欲达到自己的目的;

2023-01-29 00:37:34 2360

原创 数据结构(队列)

队列(Queue)。队列简称队。是一种操作受限的,只允许在表的一端进行插入,而在表的另一端进行删除。向队列中插入元素称为入队或进队;删除元素称为出队或离队。其操作特性为先进先出(First In First Out,FIFO),并且只允许在队尾进,队头出。队头(Front):允许删除的一端,又称队首队尾(Rear):允许插入的一端空队列:不包含任何元素的空表。

2023-01-01 18:56:00 92

原创 数据结构(栈)

栈(stack)是限定仅在表尾进行插入或者删除的线性表。对于栈来说,表尾端称为栈顶(top),表头端称为栈低(bottom)。不含元素的空表称为空栈。因为栈限定在表尾进行插入或者删除,所以栈又被称为后进先出结构)。

2022-11-20 17:55:41 202

原创 全志之sqlite

轻量化,易用的嵌入式数据库,用于设备端的数据管理,可以理解成单点的数据库。传统服务器型数据库用于管理多端设备,更加复杂SQLite是一个无服务器的数据库,是自包含的。这也称为嵌入式数据库,这意味着数据库引擎作为应用程序的一部分运行。MySQL需要运行服务器,MySQL将需要客户端和服务器架构通过网络进行交互。基于嵌入式的数据库主要有:SQLite,Firebird,,eXtremeDBFirebird是关系型数据库,功能强大,支持存储过程,SQL兼容等SQLite。

2022-11-16 23:03:01 239

原创 LVGL第一阶段

安装完成之后,打开 git bash 配置用户名和邮箱,如果没有git账户,可以这样设置:打开git bash,执行下面的命令克隆仓库:拉取仓库资料更新,进入到 lvgl_100ask_course_materials 目录,打开 git bash 执行:课程资料会随着课程发布进度更新,所以在学习的时候,不要动克隆下来的仓库,可以自己复制一份副本自用,我们需要克隆的那份仓库用来拉取同步更新被点击滚动数值改变重绘等等。。。

2022-11-08 20:08:48 2655

空空如也

空空如也

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

TA关注的人

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