- 博客(205)
- 资源 (23)
- 收藏
- 关注
原创 freeRTOS任务管理
这个小节讲述的是任务的优先级别,设置 获取等操作通过freeRTOS的API文档可以知道每一个任务优先级是从0到 configMAX_PRIORITIES - 1(0代表空闲优先级,configMAX_PRIORITIES - 1是我们可以人为设置的优先级,而且数值越大,说明任务的优先级越高),这个configMAX_PRIORITIES 定义在FreeRTOSConfig.h头文件中。好,我们打开之前的示例,进行修改,获取任务函数的优先级。/*
2022-12-09 17:01:51
734
原创 Linux系统IO
所谓文件IO就是指文件的 输入(input)和 输出(output)Linux 把大部分系统资源当作文件并呈现给用户,用户只需按照文件 I/O 的方式,就能完成数据的输入输出。普通文件,即一般意义上的文件、磁盘文件;设备文件,代表的是系统中一个具体的设备;管道文件、 FIFO 文件,一种特殊文件,常用于进程间通信;套接字(socket)文件,主要用在网络通信方面。Linux 系统提供的文件 I/O 接口函数,是以最基本的系统服务形式提供的,又称它们为基本 I/O 函 数。
2022-12-09 13:30:17
828
原创 win11无法设置移动热点
WIN10电脑热点打不开、win11电脑热点打不开,都可以参照操作,费力九牛二虎之力,终于搞定,分享给遇见同类问题的同学,希望能帮助解决你的烦恼。2、设备管理器(双击)——网络适配器(打开)——找到下图类似箭头选项——键-单击-启用设备。3、搜索——移动热点(点击-打开)——移动热点(选项-开)1、此电脑——右键——管理——设备管理器 (打开)注意:如果出现多个,都选择启用设备!win11无法设置移动热点。
2022-09-21 12:12:51
15545
原创 ubuntu初始化安装
此时,按Command+Q退出终端后重启终端,就可以使用zsh的终端了。zsh设置过于复制,但是我们可以使用Oh-my-zsh来快速配置,可以看后文Oh-my-zsh的配置方法。可以看到,其中的/bin/zsh就是zsh了。ubuntu为了保证用户的操作不会破坏系统,默认是禁用root用户的,我们需要手动开启root用户。如果有~/.zshrc文件,最好提前备份,否则本脚本自动更改原本的.zshrc文件为zshrcBak。然后使用root用户登录系统,保证后续的操作都不受权限的限制。
2022-09-19 16:02:30
1039
1
原创 human_face_recognition(AI开发框架esp-who)
BOOT按键的状态的不同也会触发不同的事件,通过register_button()的函数将BOOT按键的状态输出到xQueueKeyState按键的状态队列缓冲区里,再通过register_event()函数输出一个事件队列xQueueEventLogic,最后通过register_human_face_recognition()函数将xQueueAIFrame作为帧输入流传入 xQueueEventLogic传入一个事件队列,帧的输出流设置为NULL,结果将显示在终端上。
2022-09-14 10:13:53
546
原创 code_recognition(AI开发框架esp-who)
app_main.capp_peripherals.capp_peripherals.h调用xTaskCreatePinnedToCore()函数将decode_task函数创建任务,在freeRTOS实时性操作系统中运行decode_task()任务函数中做了以下操作:app_camera_init()初始化摄像头后,如果返回值不等于ESP_OK,说明摄像头初始化失败,调用vTaskDelete(NULL);删除任务并退出摄像头初始化后会输出一个帧的输出流,调用esp_camera_fb_ge
2022-09-14 10:08:41
937
原创 C语言编译过程
使用预处理器把源文件test.c经过预处理生成test.i文件,预处理用于将所有的#include头文件以及宏定义替换成其真正的内容。
2022-09-14 09:36:39
339
原创 linux配置文件共享
通过Samba服务器,实现Windows与Ubuntu之间共享文件,主要通过以下几个步骤:一、Ubuntu开启Samba服务器二、Ubuntu配置共享目录和用户权限三、Windows开启Samba客户端四、访问共享目录。
2022-09-13 17:05:13
1491
原创 适用于windows的ubuntu子系统出现WSL2:Temporary Failure in Name Resolution解决方法
【代码】适用于windows的ubuntu子系统出现WSL2:Temporary Failure in Name Resolution解决方法。
2022-09-09 09:54:55
1886
原创 color_detection(AI开发框架esp-who)
同样,BOOT按键的状态也需要进行记录,通过register_button()将BOOT按键的状态输出到xQueueGPIOKeyState队列缓冲区中。调用register_color_detection()函数将帧的输入流xQueueAIFrame和事件队列xQueueEventLogic传入,输出一个作为帧的输出流的队列缓冲区xQueueLCDFrame,再调用register_lcd()函数将xQueueLCDFrame作为帧的输入流传入,即可显示到LCD屏幕上。
2022-08-22 10:25:15
338
原创 cat_face_detection(AI开发框架esp-who)
😀第二步:此时xQueueAIFrame队列缓冲区里面放置着摄像头获取到的图片,调用register_cat_face_detection()的函数,将xQueueAIFrame队列缓冲区作为帧的输入流传入,register_cat_face_detection()函数中会通过AI模型计算,识别到猫脸,然后帧的输出流设置为NULL,至此猫脸检测的结果就显示到终端上了。pixel_fromat是像素的设置,frame_size是每一帧的大小,fb_count是帧的缓冲区的数量 frame_o是帧的输出流。
2022-08-21 18:17:19
1724
1
原创 mutex互斥量
xSemaphoreCreateMutex()创建mutex互斥量,vTaskSuspendAll()挂起任务调度器,使用xTaskCreate()函数创建任务,xTaskResumeAll()恢复任务调度器。大部分情况,线程使用的数据都是局部变量,变量的地址空间在线程栈空间内,这种情况,其他线程无法获得这种变量。但有时候,很多变量都需要在线程间共享,这样的变量称为共享变量,可以通过数据的共享,完成线程之间的交互。我们为了解决带来的一系列问题,我们需要一把锁。多个线程并发的操作共享变量,会带来一些问题。
2022-08-19 11:55:26
231
2
原创 计数型信号量
1.事件计数:每次事件发生,事件处理函数将释放信号量(信号量计数值加1),其他处理任务会获取信号量(信号量计数值减1)来处理事件。假设有一家停车场,总共有10个空闲停车位,当一个车放置在停车位中,空闲停车位减少1,当一个车从停车位中开出,空闲停车位增加1,那么计数型信号量就可以理解为空闲停车位,也可以理解为有效地 可以用的资源的数目。对于carInTask()的函数,调用uxSemaphoreGetCount()函数获取到计数型信号量的数目,调用xSemaphoreTake()获取信号量。
2022-08-19 11:53:42
923
1
原创 二进制信号量
我们在app_main()中调用xSemaphoreCreateBinary()函数,创建一个二进制信号量,创建完后使用xSemaphoreGive()函数释放创建的信号量,使用xTaskCreate()创建任务。二进制信号量能够满足任务间的互斥和同步,需要的系统开销最小,因此也称快速信号量。在myTask1()和myTask2()中先获取信号量,循环打印后释放信号量。本小节就来认识二进制信号量的创建等过程。xSemaphore:创建的信号量句柄。创建一个二进制信号量,并返回一个句柄。
2022-08-19 11:51:18
534
1
原创 软件定时器
一个软件定时器(或者只是一个“定时器”)允许一个函数在未来的一个设定的时间执行。由计时器执行的函数被称为计时器的回调函数。计时器从启动到执行它的回调函数之间的时间称为计时器的周期。简单地说,计时器的回调函数在计时器的周期到期时执行。改变软件定时器的周期 xTimer:正在分配新时段的计时器。首先要调用xTimerCreate()函数去创建定时器,并给软件定时器传入一个回调函数TimerCallBack()。调用pcTimerGetName()函数返回创建计时器时分配给计时器的人类可读文本名称。
2022-08-19 11:46:11
676
原创 Queue邮箱
写数据端wirteTask()写入一个数据到邮箱队列中,readTask()从邮箱队列中读取数据,可以通过写数据的方式来控制readTask()读数据端的执行方向。
2022-08-19 11:27:18
373
原创 Queue集合
在接收数据端recTask设置为:当队列集合中的某一个队列存在数据,则会返回相应存在数据的队列的句柄给recTask,recTask会根据相应的队列句柄去相对应的队列中取数据。上图讲述的是三个发送数据端分别向对应的队列中发送数据,sendTask1发送数据111到队列1中,sendTask2发送数据222到队列2中,sendTask3发送数据333到队列3中。接收数据端recTask如何接收数据呢?
2022-08-19 11:25:37
184
1
原创 Queue的多进单出模型
这里值得提一句的是,三个发送数据端可以赋予相同的优先级,也可以赋予不同的优先级,这是根据实际情况去调整的。对于接收数据端,要比三个数据端赋予的优先级还要大才可以,这也是为了保证当消息队列缓冲区中存放了数据,接收端的任务函数可以立即取出并进行处理。在这个延时过程中,发送数据端不断的向队列中发送数据,由于队列是FIFO(First in First Out)先进先出的特点,最先进入的数据会最先被接收数据端取到。创建三个发送数据的任务函数,具体的可以参考上一小节,发送数据的函数创建好后,再创建接收数据的函数。
2022-08-19 11:14:12
192
原创 Queue的三种数据传递
队列是任务间通信的主要形式。它们可以用于在任务之间、中断和任务之间发送消息。在大多数情况下,它们被用作线程安全的FIFO (First In First Out)缓冲区,新数据被发送到队列的后面,尽管数据也可以发送到队列的前面。一个sendTask向队列发送数据,一个recTask从队列中接收数据。
2022-08-19 11:05:58
824
原创 ESP32的电容touch和外部中断
ESP32的电容touch和外部中断代码编写#include <Arduino.h>// 定义外部中断的Mode// 0: 无中断,读取Touch值// 1:Touch中断,执行 TouchEvent()// 2: 外部IO的中断#define EXT_ISR_MODE 0void TouchEvent(){ Serial.printf("Touch Event.\r\n");}void PinIntEvent(){ Serial.printf("P
2022-04-26 20:02:20
3852
2
原创 点亮ESP32自带的小灯
#include <Arduino.h>int LED = 2;//定义二号引脚void setup(){ pinMode(LED, OUTPUT);//将引脚2号设置为输出引脚 /* void pinMode(uint8_t pin, uint8_t mode); 设置引脚的模式 常用的引脚模式有: 输出模式OUTPUT, 输入模式INPUT, 输入上拉模式INPUT_PULLUP */}void loop
2022-04-26 17:12:03
1575
1
原创 ESP32作为服务器,使用网页控制LED小灯
ESP32作为服务器,使用网页控制LED小灯项目描述ESP32-S开发板加入局域网,使用platformIO编写好ESP32的代码后,编译下载到ESP32中,访问ESP32的IP地址,使用网页控制连接着的LED小灯项目准备:ESP32-S开发板 一根数据线 电脑 LED小灯开发环境:vscode + PlatformIO原理剖析这个ESP32作为服务器,浏览器作为客户端,这是一个简单的B/S架构。在这个项目中我们说为什么要电脑和ESP32加入同一个局域网?从前面的有关于Linux
2022-04-25 13:17:58
11407
6
原创 链队的基本操作
/** * @author:qq_45671732 * @version:1.0 */#include "bits/stdc++.h"using namespace std;#define MAXQSIZE 100#define OK 0#define ERROR -1typedef struct QNode { int data; struct QNode *next;} QNode, *QueuePtr;typedef struct { QueueP
2022-04-19 10:29:28
146
原创 循环队列的基本操作
/** * @author:qq_45671732 * @version:1.0 */#include "bits/stdc++.h"using namespace std;#define OK 0#define ERROR -1#define MAXQSIZE 100typedef struct { int *base; int front; int rear;} SqQueue;int InitQueue(SqQueue &Q) {
2022-04-19 09:59:04
2179
原创 顺序栈的基本操作
/** * @author:qq_45671732 * @version:1.0 */#include "bits/stdc++.h"using namespace std;#define MAXSIZE 100#define OK 0#define ERROR -1typedef struct SqStack { int *base; int *top;} SqStack;int InitStack(SqStack &S) { //栈的初始化
2022-04-14 10:22:17
2291
原创 单链表(快慢指针问题)
/* * 快慢指针: * 带有头结点的单链表L, 设计一个尽可能高效的算法求L中的中间结点 */#include "bits/stdc++.h"using namespace std;#define ERROR -1#define OK 0typedef struct LNode { int elem;//结点的数据域 struct LNode *next;//结点的指针域} LNode, *LinkList;int TheTailInterpolation(Li
2022-04-13 13:39:27
1060
原创 机器学习环境配置
机器学习环境配置CUDA的安装配置CUDA依赖于英伟达的显卡查看电脑的显卡型号是否支持CUDA的安装https://developer.nvidia.com/zh-cn/cuda-gpus可以在英伟达的控制面板中查看显卡的驱动程序版本我自己的如图所示:按照自己的驱动程序的版本去查看可以安装的CUDA版本https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html我自己可以安装的CUDA版本信息如下:之后可以在浏览
2022-04-11 11:24:14
443
原创 单链表的基本操作和实现
单链表的基本操作和实现#include "bits/stdc++.h"using namespace std;typedef struct Lnode { string e;//结点的数据域 struct Lnode *next;//结点的指针域} Lnode, *LinkList;//LinkList为指向结构体Lnode的指针类型int InitList_L(LinkList &L);int DestroyList_L(LinkList &L);i
2022-01-14 12:22:30
333
1
原创 操作系统第一章习题
1.设计现代OS的主要目标是什么?方便性 有效性 可扩充性 开放性2.OS的作用可以表现在哪几个方面?OS作为用户和计算机硬件系统之间的接口OS作为计算机系统资源的管理者OS实现了对计算机资源的抽象3.为什么说操作系统实现了对计算机资源的抽象?IO设备管理软件实现了对计算机硬件操作的第一个层次的抽象;文件管理软件实现了对硬件资源操作的第二个层次的抽象;依此类推,如果在文件管理软件上再覆盖一层面向用户的窗口软件,则用户便可再窗口环境下方便地使用计算机,从而形成一台功能更强的虚拟机;OS是铺
2021-12-20 16:09:25
3263
原创 servlet
文章目录servletservlet介绍servlet的生命周期servletservlet介绍servlet是一个小程序,可以直接部署在服务器上直接运行,servlet最底层是一个接口,是sun公司提供的一套规范。当前的HttpServlet的直接父类是GenericServlet,GenericServlet是servlet接口的实现类。HttpServlet类提供了一些抽象的方法,用于加载当前小程序servlet的生命周期init()方法 第一次访问这个控制器的时候 初始化方法servi
2021-08-26 15:50:32
197
原创 HTML常用的元素介绍
HTML常用的元素介绍a元素a元素用于超链接。a元素的常见属性如下:href属性全称是hyper reference(引用),表示跳转地址跳转地址:由一个页面跳转到另一个页面跳转到某个锚点:也就是跳转到一个页面的不同位置<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head&g
2021-08-14 14:50:54
3559
原创 体验java web
文章目录体验java webJSP介绍JSP的特性体验java webIDEA2021创建java web项目参考如下文章:Intellij IDEA2021.1创建Java web项目(超详细)JSP介绍在新创建好的java web项目中的web目录下创建一个index1.jsp文件,IDEA会生成一段代码:<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head&
2021-08-13 18:17:49
242
原创 HTML初识
文章目录HTMLHTML简单介绍HTML的文本元素HTMLHTML简单介绍<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body> <!--超链接--> <a href="https://www.bilibili.com/">bi
2021-08-11 11:13:31
1943
原创 centos安装源
centos7安装源:http://mirrors.aliyun.com/centos/7/os/x86_64/centos8安装源: https://mirrors.aliyun.com/centos/8/BaseOS/x86_64/os/
2021-08-05 11:20:16
726
原创 XML的编写
文章目录XML什么是XML如何编写格式良好的XMLXML什么是XMLXML是一个可扩展标记语言。XML和操作系统编程语言的开发平台无关,可以实现不同系统之间的数据交换。XML的规范XML文档内容是由一系列标签元素组成的。<元素名 属性名=“属性值”>元素内容</元素名>属性值用引号包裹一个元素可以有多个属性属性值不可以直接包含< &不建议使用的字符" ’ >使用IDEA新建一个XML文件,先尝试编写一个XML文件:<?xml
2021-08-03 13:50:44
5371
OpenJDK15U-jdk_x64_windows_openj9_windowsXL_15.0.1_9_openj9-0.23.0.zip
2020-12-03
GeoGebra-Windows-Installer-6-0-609-0.exe
2020-12-03
arduino常用库文件压缩包
2020-12-03
通讯录管理系统.cpp
2020-07-29
通讯录管理系统.exe
2020-07-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人