自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(72)
  • 问答 (3)
  • 收藏
  • 关注

原创 使用git提取,上传gitee仓库代码,并且进行代码迭代

在官网去下载git,并进行安装【安装地址:或者安装后,右键桌面-->更多选项。

2024-04-08 11:09:20 432

原创 linux 应用开发笔记---【线程】

线程是参与系统调度的最小单位,它被包含在进程中,是进程的实际运行单位一个进程可以创建多个线程,多个线程并发运行,每个线程执行不同的任务。

2023-12-21 00:27:52 944

原创 linux 应用开发笔记---【进程】

也就是系统中真正运行的应用程序,程序一旦运行就是进程,进程是一个动态过程,它是程序的一次运行结果,而非静态文件。

2023-12-18 18:58:18 932

原创 linux 应用开发笔记---【信号:基础】

信号是发生事件时对进程的通知机制,也可以称为软件中断信号的目的是用来通信的1.硬件发生异常,将错误信息通知给内核,然后内核将相关的信号给相关的进程2.在终端输入特殊字符产生特殊信号3.进程调用kill()将任意信号发送给另一个进程或者进程组4.发生了软件事件,借助软件触发条件,去进行通知。

2023-12-12 07:20:00 996

原创 linux 应用开发笔记---【标准I/O库/文件属性及目录】

标准c库当中用于文件I/O操作相关的一套库函数,实用标准I/O需要包含头文件。

2023-12-04 23:52:43 1059 1

原创 linux 应用开发笔记---【I/O文件/基础篇 】

1.运行在linux操作系统用户空间的程序2.内核程序运行在内核空间,应用程序运行在用户空间在终端执行的命令ls,ps。。。。。。都是运行在用户空间3.内核空间和用户空间。

2023-11-29 18:45:34 1037

原创 pyqt5 窗口调用网页高德地图kpi,进行实时地图导航

将给定的经纬度坐标存放在一个列表当中,然后调用folium获取从起点开始,借助多个经纬度坐标点绘制路线图,同时进行标签,然后生成html文件,保存。首先将官方给的url,进行添加,我加入了,起始地点,终止地点,以及starategy【选择不同的策略】,以及key【刚才申请的key】接收一个路线参数,然后提取其中每个步骤的经纬度坐标信息,并存储在list_latlon列表中。找到你需要的路径规划的文档,我选的是“驾车路径规划”zoom_start :是当前地图的放大倍数。这一部分也便是获取数据的关键了。

2023-11-22 16:26:41 424

原创 proteus仿真大赛-----pyqt5制作上位机安防页面【省一 + 国一】

房屋数据:主要使用来实时显示当前房屋内温度和烟雾浓度的实时信息,进行实时更迭,设定一个类,继承QMainWindow,大致的流程就是,在类内设定两个方法分别去处理从串口读取的温度和烟雾浓度的数据,然后进行绘图,因为读取串口的信息类似于键值对的形式,所以需要进行处理,2.注册页面主要打开一个继承QDialog,使用标签和文本框,进行有效信息的输入,然后点击确定按钮,进入到槽函数,槽函数中分别读取三个文本框的内容,然后转换为统一格式发送给下位机,同时将信息发送给服务器。

2023-10-13 17:25:28 442

原创 ros---服务端和客户端

想对于发布订阅模型的区别:请求一次才会接收一次,而不是不断的发布。3.在CMakeLists.txt添加编译选项4.编译生成语言的相关文件第一个.h文件是后两个的集合,前面的PersonRequest.h是“---”上面的,Person Response.h是“---”下面的。添加到cMakeLists.txt客户端: 服务端

2023-09-18 18:25:25 173

原创 ros----发布者和订阅者模型

头文件换成你在msg文件夹中创建的文件,在catkin_make编译之后,在devel/inlcude里面会生成.h文件。创建一个订阅者节点,接收刚才相同话题类型的消息。将编译规则加入到cMakeLists.txt。4.编译生成语言的相关文件。

2023-09-18 17:10:39 124

原创 手势识别rtos小车(3)----运动部分

1.当我在运动任务中不加入延时函数,即使这个任务的优先级最低,也还是会卡死,整个程序不执行,我目前还不是很清楚原因。猜测可能是在while循环出不去,完全占用了CPU,加入延时,可是将任务转为阻塞态,从而解放CPU。【记得延时】2.任何东西配置完记得在int main函数里面初始化,不然也会卡死3.我的串口1和2必须是115200和9600,串口才会有反应,目前不知道为啥,希望看到的大佬帮我解答一些。

2023-08-13 17:44:57 540

原创 手势识别rtos小车(2)----蓝牙通信

除此之外,我发现我安装之后,确实有了pybluez,但是无法找到库,我又安装了pybluez2【支持python3.x版本】,才可以。直接下载zip文件包,然后解压在自己的python解释器环境中,然后在pycharm终端打开进入到这个文件夹目录,执行。sock.send :是将信息发送到已连接的蓝牙设备上面,所以会直接将信息发送到蓝牙的串口上。找到你的蓝牙地址和端口号,借助sock.connect连接在一起。第三步,到pyblue官网,下载对应的版本。找到你蓝牙的地址,以及你的端口号。

2023-08-13 17:29:15 513

原创 手势识别rtos小车(1)----手部识别

3.当一些库无法找到的时候,可以去对应的官网下载对应python版本的库,然后在windows终端pip直接安装,但是前提记得把whl文件放入到对应的解释器的Scripts里面再去安装。核心还是在于mediapipe库的调用。2.当出现无法安装一些库的时候,可以选择去windows终端去建立,当然以及在pycharm里面不可以创建的python版本也可以在终端创建。1.pycharm里面的环境存在于anaconda里面,你的每个项目都可以创建对应的解释器,但是其实这个解释器就是你安装的python的版本。

2023-08-09 21:40:47 263 1

原创 linuxARM裸机学习笔记(7)----RTC实时时钟实验

I.MX6U内部也有个RTC模块,但是不叫作“RTC”,而是叫做“SNVSSNVS直译过来就是安全的非易性存储,SNVS里面主要是一些低功耗的外设,包括一个安全的实时计数器(RTC)、一个单调计数器(monotonic counter)和一些通用的寄存器,SNVS里面的外设在芯片掉电以后由电池供电继续运行。SNVS有两部分:SNVS_HP和高功耗域(SNVS_HP)和低功耗域(SNVS_LP)】,系统主电源断 电以后 SNVS_HP也会断电,但是。

2023-08-07 17:40:38 408

原创 linuxARM裸机学习笔记(6)----UART串口通信和串口格式化函数移植实验

这样就有了输入和输出了,实现了最基本的人机交互,在 I.MX6U-ALPHA 开发板上也可以使用此方法,移植两个从uboot来的文件,因为是从uboot源码里面抠出来的,所以导致并不是完全版的格式化函数。UART时钟源选择的是pll3_80m,然后在(bit5:0)设置分频值,设置为1分频。UBMR=3124的时候,波特率为115200.,,设置的分频系数为1,【0b101】,算出。的时候表明至少接收到一个数据,从寄存器。的时候关闭自动波特率检测,为。的时候表示复位完成。的时候关闭奇偶校验,为。

2023-08-06 18:20:11 346

原创 linuxARM裸机学习笔记(5)----定时器按键消抖和高精度延时实验

之前的延时消抖,是直接借助delay函数进行的,但是这样会浪费CPU的性能。我们采用延时函数的方式实现,可以实现快进快出。定时器消抖,必须是在t3的时间点才可以,当在t1,t2的时间点每次进入中断函数都要重新开启定时器的计时但是,这两个时间点的时间小于定时器设定的10ms,所以不会产生定时器中断,也会避免这种情况的发生。只有在t3的时刻开启,才会产生定时器中断【时间够长】,这便是定时器的消抖原理。对定时器进行设置,上一章节已经详细说明了,不多赘述。

2023-08-06 15:10:40 469

原创 linuxARM裸机学习笔记(4)----GPIO中断以及定时器中断实验

这个表里面存放的都是中断向量,中断服务程序的入口地址或存放中断服务程序的首地址成为中断向量。中断向量表是一系列中断服务程序入口地址组成的表,当某个中断触发的时候会自动跳转到中断向量表对应的中断服务程序的入口。ID15~0 的 SGI 中断,GICD_ISENABLER0 的 bit[31:16]对应 ID31~16 的 PPI 中断。:优先级位数如果是5,则代表的是2的5次方即32个不同的优先级级别,,所以才选择了Binary Point为2。,软件中断,由软件触发引起的中断,通过向寄存器。

2023-08-05 17:14:19 963

原创 linuxARM裸机学习笔记(3)----主频和时钟配置实验

32.768KHz晶振是I.MX6U的RTC时钟源,24MHz晶振是I.MX6U内核和其它外设的时钟源。

2023-08-04 15:27:20 530

原创 linuxARM裸机学习笔记(2)----汇编LED灯实验

MX6ULL的IOMX6ULL的IO这里的只使用了低五位,用来配置io口,其中bit0~bit3(MUX_MODE)就是设置 GPIO1_IO00 的复用功能的,GPIO1_IO00 一共可以复用为9种功能 IO,分别对应ALT0~ALT8。每种对应了不同的功能。

2023-08-02 13:28:12 919

原创 linux学习笔记(1)----基础知识

wq---保存退出 :q---退出 :q!cmd1&&cmd2 当 cmd1 执行完并且正确,那么cmd2 开始执行,如果cmd1 执行完毕错误,那么cmd2不执行。使用 gcc- c 文件.c 进行文件的编译,后续只需要执行这个修改文件的代码,然后链接就行了。test命令用于查看当前文件是否存在,权限等信息,可以进行数值,字符,文件三方面的测试。优化: 在多个文件的情况下,如果修改一个文件,则需要进行全部的重新编译,非常麻烦。$1是第1参数、$2是第2参数…

2023-07-16 15:01:11 393

原创 FreeRTOS(8)----任务通知

相对于之前的信号量,事件组等,所谓的任务通知核心就是一个32位的无符号整数和8位的通知状态任务通知可以通过如下方法更新接收任务的通知值:● 不覆盖接收任务的通知值如果上次发送给接收任务的通知还没被处理。● 覆盖接收任务的通知值。● 更新接收任务通知值的一个或多个bit。● 增加接收任务的通知值。任务的三种通知状态1.未等待通知状态:就是任务的初始状态。

2023-06-06 19:26:05 1098 1

原创 FreeRTOS(7)----事件组

在stm32里面freertos的事件组一般为16位,这样也就是可以同时存储16个事件的状态,事件其实和前面的信号量很像,可以类似看作成多个现在专门有一个东西"事件组"来管理多个信号量,之前的二值,互斥,计数信号量都是只有一位的"事件组",当你任务或者中断存在多个标志位需要传递的时候,这个时候选择事件组会更加方便,你选择多个信号量也可以,但是你要挨个配置真的麻烦。·当收到一条消息并且把这条消息处理掉以后就可以将某个位(标志)置1,当队列中没有消息需要处理的时候就可以将这个位(标志)置0。

2023-05-25 22:24:31 814

原创 FreeRTOS(6)----软件定时器

软件定时器允许设置一段时间,当设定的时间到达之后就会执行指定的功能函数,被定时器调用的这个函数叫做定时器的回调函数。回调函数的两次执行间隔叫做定时器的定时周期。二,回调函数的注意事项回调函数是在定时器服务任务中执行的,因为定时器服务任务是由内核产生,无法由用户控制,所以本身的运行周期时间是固定的。

2023-05-21 22:11:45 1018

原创 FreeRTOS(5)----互斥量

优先级继承算法指的是暂时提高某个占用某种资源的低优先级的任务,使得在等待该资源的任务中优先级最高的任务优先级相等,当原本占有资源的任务释放了资源后,优先级恢复为原来的设定值。在系统中,一般高优先级的任务就代表了这个任务越重要,越要优先执行,但在互斥访问中,高优先级任务访问的资源被上锁,导致变为挂起态,在freertos中,紧急的任务无法得到快速处理,则会对系统产生很大的危害。】,此时优先级的继承机制就要发挥作用了,把当前占用资源的低优先级的任务提升到和高优先级任务一样的优先级。·任务L正常运行,占用资源。

2023-05-20 20:49:32 1631

原创 FreeRTOS(4)----信号量

在实际应用中,我们常常会借助一个任务去轮番查询当前任务的是否有数据,如果有数据就会出传送回来,这个会大大浪费CPU的资源,我们设置信号量,当有信息了,我们便去接收,没有信息,任务进入阻塞态,我们不会去多余的占用CPU。二值信号量通常用于互斥访问或者同步,二值信号量没有优先级的继承。和队列一样,信号量的API函数存在一个阻塞时间,阻塞时间来限定信号量无效导致任务进入阻塞态的最大时钟节拍。当多个任务阻塞在同一个信号量上,优先级高的任务获得信号量 ,先解除阻塞态。,类似一个标志位只有0和1,所以也就是二值。

2023-05-19 22:22:53 658 1

原创 FreeRTOS(3)----消息队列

当发送信息的时候,如果队列未满,则会将消息拷贝到队尾,否则,会根据用户指定的阻塞超过时间进行阻塞,如果队列一直不允许入队,任务则一直保持阻塞状态,等待队列允许入队,在这段时间,当别的任务从其他等待队列读入了数据(队列未满),任务将自动从阻塞态变为就绪态,当等待的时间超过阻塞时间,即使队列还不允许入队,任务也会从阻塞态变为就绪态,且发送信息的任务或者中断程序会收到一个错误码。注意:当多个任务阻塞在一个消息队列中,这些阻塞的任务会按照任务的优先级进排序,优先级高的任务将优先获得访问队列的权利。

2023-05-18 20:21:07 2296 1

原创 FreeRTOS(2)----任务管理

在任何时刻都只可以运行一个任务,这个运行什么任务是由调度器来决定的,宏观看上去好像是一起在执行一堆任务,但实际上确实任务交替执行,当任务进行切入和切出的时候,通过TCB来保存当前的执行环境,当任务再次执行的时候,就可以在原来停止的地方继续执行。当一个系统中存在多个任务的时候,下一个就绪的任务的选择也是一个重要的问题,freertos提供了两种寻找最高优先级任务的方法,freertos提供的任务调度器是抢占式调度,即优先级越高的任务优先执行且可以抢占低优先级的任务,0为空闲任务。

2023-05-16 21:47:43 1224 1

原创 FreeRTOS(1)----动态与静态创建任务,删除任务

解释:当其他的运行的任务执行到vTaskDelay();这个函数的时候,空闲任务就可以切进来,释放掉删除任务分配的内存空。因为是静态内存分配空间,所以需要用户主动去分配内存空间给创建的任务栈。空闲任务在删除任务函数结束之后,会自动释放掉删除任务分配的内存空间。当系统的其它任务转为“就绪态”,则会“抢占”空闲任务进行执行。,确保不会影响到当前系统其他的任务的运行,空闲任务一直处于。启用freertos任务调度器时内核自动生成。的,确保系统内至少存在一个任务正在运行。空闲任务的优先级永远是最低的。

2023-05-15 20:36:15 1095 1

原创 电赛校赛总结----一维板球系统【代码开源】

凌晨两点:我和我们组的一个女生还在对着电脑用一个第一次用的软甲yplot去调试PID参数,现在想想,还是觉得痛苦,最后调到大概中午12点,感觉还算满意,就先放着了,当时调的差不多的时候,我们就觉得没啥事情了,就有点懈怠,因为看了看这几个题,觉得只要PID调出来了,就没啥难的了【为后来埋下了后患!这是串口的中断的代码,你会发现有0X0D和0X0A的判断,对了,这是我们输入在app软件也要有这个多一行的换行符的存在,因为这个中断是通过判断0X0D和0X0A判断接收完成的,如果你的中断不加这个,就可以不用换行。

2023-04-27 23:17:23 1408

原创 电赛练习----OLED多级菜单【mini开发板】

这篇文章详细的讲解了128*64OLED的使用方法,接下来进行拓展延伸,完成多级菜单的功能。1.首先新创建MENU文件夹,里面存放的是menu.c和menu.h的代码

2023-04-08 16:42:12 915 8

原创 基于onenet物联网平台---宠物智能喂食监测系统

最近在做一个小项目,这个东西也是我在寒假的时候刷到视频,有那种跑腿平台让人上门照顾宠物的,还比较火爆,我也从这里灵感触发,想着做个这个东西,正好参加一个比赛,一举两得,做这个还是学到了许多东西,我在网上查找,确实已经有这个玩意的落地,但是仅限于智能喂食,而我在此基础上进行创新,进行了一些扩展与延伸。

2023-04-05 23:43:18 1151 1

原创 STM32----MPU6050

MPU6050 是 InvenSense 公司推出的全球首款整合性6 轴运动处理组件,相较于多组件方案,免除了组合陀螺仪与加速器时之轴间差的问题,减少了安装空间。MPU6050 内部整合了3 轴陀螺仪和 3 轴加速度传感器,并且含有一个第二IIC 接口,可用于连接外部磁力传感器即AUX_CL 和 AUX_DA,并利用自带的数字运动处理器(DMP: DigitalMotion Processor)硬件加速引擎,通过主 IIC 接口,向应用端输出完整的 9 轴融合演算数据。

2023-03-18 00:20:54 3701 4

原创 stm32平衡小车(2)-----编码器电机驱动

霍尔码盘与电动机同轴,电动机旋转时,霍尔元件检测输出若干脉冲信号,为判断转向,一般输出两组存在一定相位差的方波信号。前言:之前做arduino小车的时候使用的是L298N电机,没有用过编码器,这次第一次用编码器,还是比较懵圈,记录一下学的整个过程。v---5v电源 G----GND【接地】 A和B则是编码器的A,B相。编码器选择的是四倍频技术,即在T1和T2同时进行计数。不反相:正转,计数++,反转,计数--。反相:正转,计数--,反转,计数++。第一个:定时器的选择。

2023-01-17 20:38:18 8064 3

原创 stm32平衡小车(1)---蓝牙模块及其bug处理

我们通过手机上面的蓝牙软件将信息发送到蓝牙的初始化串口上,然后单片机会读取串口上面的信息,紧接着别的串口就可以通过读取单片机的信息,从而将蓝牙串口的信息,发送到别的串口。本文代码便是蓝牙使用的是串口3,然后会读取出来,然后显示在串口1中,同时将信息显示在OLED上面。、

2023-01-02 18:29:09 2398 2

原创 串口通信协议

CPU通过总线往DR寄存器写入数据,数据被并行的传入到TDR【发送数据寄存器】,然后并行的传入到移位寄存器,移位寄存器将数据串行一位一位的发送出去,接收数据也是一样的步骤,串行的发送的接收移位寄存器,然后并行的发送到接收数据寄存器【RDR】,然后并行的发送给CPU(CPU读取数据)

2022-12-31 00:16:24 4464 1

原创 数据结构----树

除了根节点以外的n-1个结点可划分为多个有限集Ti(i = 1,2,3,4.....),每个Ti都是一个树,称为”根的子树“,每颗子树只有一个前驱结点,有一个或者多个后继结点。叶子结点:度为0的结点 内部结点:除了根结点以及叶子结点,其余剩余的结点。,就是从1到k-1层的结点的度都为2,满二叉树是同样深度叶子结点最多的,也是结点最多的。一,当i=1时,则结点为根节点,无双亲结点,若i>1,则双亲结点的序号为i/2。1.树的定义:树是n(n>=0)个结点的有限集合。

2022-12-29 17:11:46 382 1

原创 SPI通信协议详解

起始信号:CS片选信号高电平变为低电平,当从机检测到自己的片选拉低后,开始与主机进行通信。终止信号:CS信号由低电平变为高电平,结束和主机之间的通讯,本次数据交互结束。

2022-12-15 11:54:35 5339

原创 ubuntu20.04安装anaconda3搭建python环境

清华源anaconda软件镜像网站: Index of /anaconda/archive/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror下载完成在终端打开Downloads运行进入到下载页面 紧接着你可以使用conda --version 查看当前的 anaconda的版本这是因为没有把路径加到环境变量里面 输入命令把自己的anaconda的路径加进去,并进行保存路径的名称可以在刚才的下载部分看到把路径加进去:然后保存关闭bashrc文件然后

2022-12-05 10:09:53 5631 1

原创 数据结构---串(整个部分)

串基本概念:串是由零个或者多个字符组成的有限序列,一半记作S='a1,a2,a3,a4.......'(n>=0,串的长度)1.S == 串的名字 n == 串当中字符串的个数,称为串的长度。1.空串(null string):长度为零的串,它不包含任何字符。2.空格串(black string) :任由一个或多个空格组成的串,长度大于等于13.子串(sub string):串中任意个连续字符的组成的子序列称为该串的“子串”

2022-11-19 19:12:11 3024 1

原创 Qt学习笔记详解(1)- 对象树与信号与槽

1.当创建一个QObject对象的时候,创建一个父对象指针给构构造函数,会自动添加到该对象的父对象的children()列表下面,当父对象析构的时候,父对象的所有子对象都会析构(当用户关闭以一个对话框的时候,会将对话框的所有内容全部删除)(a).在堆区:如果子对象在父对象的前面创建,就会析构两次子对象(父对象一次,子对象一次),从而出现程序的报错。对象树的构造和析构:构造顺序是:父对象->子对象,而析构顺序是:子对象->父对象,但在运行程序发现,构造和理论推算一样,但是析构却和理论相反,

2022-10-28 13:45:04 648

学生信息管理系统(没有文件操作).txt

学生信息管理系统(没有文件操作).txt

2022-12-13

学生成绩管理系统.zip

学生成绩管理系统.zip

2022-12-13

通讯录(管理+文件).txt

通讯录(管理+文件).txt

2022-12-13

物业管理系统.txt()

物业管理系统.txt()

2022-12-13

疫情信息管理系统.zip

疫情信息管理系统.zip

2022-12-13

C语言课设(学生,影院,通讯录 )

使用C语言完成了课设的基本要求(增删改查,文件操作等)

2022-12-13

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

TA关注的人

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