自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

heng6868的博客

从oj起家的小垃圾

  • 博客(78)
  • 收藏
  • 关注

原创 imxu6ull的启动

imx6u的启动

2022-08-19 16:10:58 349

原创 无人机与视觉结合项目

无人机视觉结合检测

2022-08-19 15:56:18 2460 4

原创 匿名科创无人机学习心得

*1.*飞控stm32串口5连接imu,串口五发送的指令会发送到imu中,如果是自定义的用户格式帧(比如:AA FF F1 03 01 01 01 A0 67)会先到imu,imu的串口1接stm飞控。串口2接数传,从串口1接收到的数据会通过串口二发送给数传,数传传给另一个数传,在通过USB线传输给上位机。但是如果不是属于用户自定义的格式帧,imu会进行处理,比如飞控串口5一上电就会输出电池信息(如:AA FF 0D 04 0100 0000 6B 7F)imu会接

2022-01-21 17:37:08 3933

原创 imx6ull串口使用

#include <stdio.h>#include <string.h>#include <sys/types.h>#include <errno.h>#include <sys/stat.h>#include <fcntl.h>#include <unistd.h>#include <termios.h>#include <stdlib.h> int uart_init(int

2021-11-02 22:03:37 1106 2

原创 QT的语音识别

难点:难点就是如何跟百度云的语音应用进行通信。首先,要获取应用的API Key、Secret Key,并通过请求鉴权接口换取 token。向授权服务地址https://aip.baidubce.com/oauth/2.0/token发送请求(推荐使用POST),并在URL中带上以下参数:并在URL中带上以下参数:grant_type: 必须参数,固定为client_credentials;client_id: 必须参数,应用的API Key;client_secret: 必须参数,应用的Secr

2021-09-23 21:55:35 1127

原创 QT小问题

1.在类中槽函数中创建另一个类的变量,会调用另一个的构造函数,但是不会产生窗口。(不懂)

2021-09-13 10:42:42 87

原创 SPI在linux驱动下的一些问题

1.频率是写到设备节点还是spi节点下?i2c都可以,i2c下不写频率都可以。spi必须写速率,不然连probe都匹配不上,还必须加到设备节点下,直接加到ecspi节点下不行。2.直接设置为片选信号会怎样试了,不可以。不理解片选信号。3.不初始化m,直接添加transfer会怎样必须初始化,不然运行会报错。4.fifo寄存器为什么不用?用fifo寄存器可以减轻通信压力,例如,在发送数据时cpu需要一直等到数据发送出去才可以进行其它的工作,而用了FIFO寄存器,数据可以存在相应的FIFO寄存器

2021-08-31 17:09:05 424

原创 uart与i2c的区别

区别:发现和i2c还有spi的驱动不太一样,i2c和spi的驱动是控制器驱动写好,具体的外设驱动需要自己修改设备树并自己写外设驱动。而UART是作为驱动的,把UART的设备地址在设备树体现,然后在驱动里面进行初始化配置就可以使用。为什么i2c需要再写一个外设的驱动呢?因为i2c的通信不能像UART那样直接收发数据就可以对设备操作。i2c需要获取设备的设备地址(从设备树中),而且还要控制片选信号,不仅仅是光收发数据就可以。而UART就相对简单,就直接收发数据就可以了。...

2021-08-26 16:54:03 769

原创 i2c驱动

一、修改设备树,并且在模块入口函数里面注册i2c驱动,也就是注册struct i2c_driver类型的结构体,在里面实现Probe,remove,of_match_table(设备树匹配),id_table(传统匹配),.driver即可。这里有个问题就是,必须of_match_table和id_table都要实现,即使id_table是空的也可以,但是必须实现(不明白)。在设备树下面添加节点,一定要添加到i2c节点之下,这样注册的struct i2c_driver类型的结构体,才能成功的匹配到节点。

2021-08-23 21:01:50 328

原创 字符设备驱动的框架

一、首先写入口函数和出口函数moudle_init(xxx);/当加载驱动的时候会调用xxx函数,所以xx函数里面要有注册字符设备的功能int a=0;a=register_chrdev(200,“aaa”,&b);/这样就可以注册一个主设备号为200,名字为aaa的字符设备。通过cat /proc/devices可以查看设备。(这种方法会占用所有主设备号为200的设备,也就说本来一个主设备号可以有很多次设备号,但是这样做就让这一个驱动占用了所有主设备号为200的次设备号。关于&b

2021-07-25 12:03:50 276

原创 字符设备驱动的理解

一、字符设备驱动主要是对fs.h里面的file_operations里的open、read、write、close等等一些函数的实现二、字符设备驱动可以编译进kernel(内核)里面,也可以编译成模块,再测试的时候直接运行模块(.ko)即可。三、模块的加载与删除moudle_init(chrdevbase_init),模块的入口,当加载模块的时候,会调用里面的chrdevbase_init函数moudle_close(chrdevbase_close),模块的出口,退出模块的时候,会调用里面的

2021-07-23 17:38:01 159

原创 开发板通过NFS启动linux系统

三条命令:1.tftp 80800000 zImage//下载移植好的镜像2.tftp 83000000 imx6ull-alientek-emmc.dtb//下载移植好的设备树文件3.bootz 80800000 - 83000000//启动

2021-07-22 17:04:11 118

原创 智能小车

利用LM293D芯片来控制电机:为什么单片机不能控制直流电动机?能不能驱动是看功bai率的,而不是只看电压,还i要看电流呢,单片机的IO顶多输20mA左右,远远驱动了一般的电机,所以要加驱动电路。可以用三极管或者专用驱动IC。这里用的就是四倍高电流的H桥驱动程序L293D简介L293 是提供双向驱动电流高达 1 A,电压是从 4.5 V 至 36 V 的;L293D 提供双向驱动电流高达 600 毫安,电压是从 4.5 V 至 36 V 的。两个设备是专为驱动等感性负载继电器,电磁阀,直流双

2021-01-20 22:30:13 1348 2

原创 lcd1602液晶显示

概括:P0用于在E的下降沿时输出数据到lcd1602中,在此之前,需要写入命令对lcd进行一些初始化,输入命令和数据都通过P0,经过下降沿发送,不同点在于输入数据时RS=1,输入命令时RS=0代码如下:#include<reg52.h>typedef unsigned int u16;typedef unsigned char u8;sbit rs=P2^6;sbit rw=P2^5;sbit E=P2^7;u8 Disp[]=" Pechin Science ";void

2020-12-16 23:20:32 357 1

原创 i2c总线的代码

#include"i2.h"/******************************************************************************** 函数名 : Delay10us()* 函数功能 : 延时10us* 输入 : 无* 输出 : 无*************************************************************************

2020-12-14 15:57:20 919

原创 一道不会的题3

给出一个元素个数不超过 3030 的集合,元素为 [1,10^8][1,10 8 ]范围内的整数,求该集合所有子集的元素和。输入格式若干个数,表示集合中的元素。输出格式一个整数,表示所有子集元素之和。输出时每行末尾的多余空格,不影响答案正确性样例输入1 4样例输出10...

2022-08-19 16:13:59 237

原创 map嵌套

Input第一行正整数N(0<N<=10)表示有N组测试数据.每组测试数据的第一行是一个整数M(0<M<=100),表示工有M次成功的交易.其后有M行数据,每行表示一次交易,由水果名称(小写字母组成,长度不超过80),水果产地(小写字母组成,长度不超过80)和交易的水果数目(正整数,不超过100)组成Output对于每一组测试数据,请你输出一份排版格式正确(请分析样...

2022-08-19 16:13:20 266

原创 大整数减法

#include<bits/stdc++.h>using namespace std;string c,a,b;int cmp(string a, string b){ if(a.length()==b.length()) { if(a==b) return 2; else if(a>b) return 1; else if(a<b) r...

2022-08-19 16:12:57 168

原创 一道不会的题目2

【问题描述】小明和朋友们一起去郊外植树,他们带了一些在自己实验室精心研究出的小树苗。小明和朋友们一共有 n 个人,他们经过精心挑选,在一块空地上每个人挑选了一个适合植树的位置,总共 n 个。他们准备把自己带的树苗都植下去。然而,他们遇到了一个困难:有的树苗比较大,而有的位置挨太近,导致两棵树植下去后会撞在一起。他们将树看成一个圆,圆心在他们找的位置上。如果两棵树对应的圆相交,这两棵树就不适合同时植下(相切不受影响),称为两棵树冲突。小明和朋友们决定先合计合计,只将其中的一部分树植下去,保证没有互相冲突的树。

2022-08-19 16:12:13 86

原创 一道不会的题目

【问题描述】如果一个序列的奇数项都比前一项大,偶数项都比前一项小,则称为一个摆动序列。即 a[2i]<a[2i-1], a[2i+1]>a[2i]。小明想知道,长度为 m,每个数都是 1 到 n 之间的正整数的摆动序列一共有多少个。【输入格式】输入一行包含两个整数 m,n。【输出格式】输出一个整数,表示答案。答案可能很大,请输出答案除以10000的余数。【样例输入】3 4【样例输出】14【样例说明】以下是符合要求的摆动序列:2 1 22 1 32 1 43 1 23 1 33 1 43 2 33

2022-08-19 16:11:46 59

原创 c语言的小发现

c语言的小发现

2022-08-19 16:10:01 233

原创 数据结构知识点

数据结构的小知识点

2022-08-19 16:08:56 128

原创 数据结构题目

数据结构大题

2022-07-11 11:22:09 563

原创 操作系统知识点

用户级线程和内核级线程:用户级线程是全跑在用户态,内核不知道,操作系统也不知道,由此,进程是资源分配和处理机调度的基本单位,内核的时间轮转调度算法配合处理器将时间片分给进程,不直接给进程。而内核级线程是内核指导,操作系统也知道的,所以,内核级线程是处理机分配的基本单位,内核时间轮转算法将时间片分给内核级线程,所以内核级线程可以并发执行。用户级线程的调度算法采用进程自己所确定的调度算法但:用户线程不能采用轮转调度算法,而是用别的算法,别的算法基本上是执行完这个线程,再执行下一个线程,一旦有一个

2022-04-26 12:09:26 1330

原创 linu虚拟机与开发板相连

一.首先要将虚拟机与主机通过桥接模式相连通,需要设置桥接信息如此:![在这里插入图片描述](https://img-blog.csdnimg.cn/img_convert/09d9619d230943b04cdf84263d807052.png)此时,可以发现虚拟机已经连上了外网。(学校校园网虚拟机不可以连接)二、将虚拟机网络设置改为如此:![在这里插入图片描述](https://img-blog.csdnimg.cn/img_convert/8b93ea97a5ddf4e60f10da4988b7

2021-07-22 17:00:20 257

原创 二维数组首地址

dp[0]是二维数组dp[m][n]的首地址;dp是一维数组dp[n]的首地址;

2021-04-10 14:47:56 1648

原创 2021-04-09

试题 E: 矩阵本题总分:15 分【问题描述】把 1∼2020 放在 2×1010 的矩阵里。要求同一行中右边的比左边大,同一列中下边的比上边的大。一共有多少种方案?答案很大,你只需要给出方案数除以 2020 的余数即可。【我的题解】我们从 2020 个数里选 1010 个放入第一行,那么为了满足同一行中右边的比左边大,只能升序排列。同理剩下的 1010 个放入第二行的也要升序排列,那么只要对于任意 i∈[1,1010] 都满足第二行第 i 个大于第一行第 i 个就是一种合法方案。从前往后枚举,

2021-04-09 15:15:48 268

原创 voliate类型的原理及用法

voliate类型,机器才读取执行代码读取内存后,将读取的内容存到高速缓冲区里,在硬件里是寄存器,这样在一下次读取的时候就可以直接从高速缓存区里面读取(cache),这也是读取速度加快的原因,但是如果在内存中改变这个变量,而且刚刚读取过这个内容,就不会再访问地址去读取。例如:int a=i;//从i的所在地址读取值,并放入高速缓冲区或者寄存器int b=i;//两次读取之间没有改变i的操作,根据编译器的优化原则,直接从缓冲区里面取值再赋值,而不会再去内存里寻址。这样在一般的程序里不会出现错误,但是在

2021-04-08 10:03:24 462

原创 set的find函数和count函数的一些小细节

由两张图对比可知,find函数是依据于<运算符的,如果没有对第二位排序,则find的时候只查找第一个元素是不是存在,不管第二个元素是不是存在,所以,在重载的时候一定要写全;

2020-12-12 17:26:09 1591

原创 8*8点阵实现心性图案

8*8点阵原理图:上方的8个位置是由P0口控制,左侧的ROW是由75HC95芯片控制;14口是数据输入端,每次只能输入一位,当11引脚为上升沿时将SER中的数据送入内部移位寄存器,当把八位数据送入内部移位寄存器中,可以令RCLK为上升沿,将八位数据从移位寄存器送入锁存器中。由这个芯片和P0口来进行动态扫描显示图形;#include "reg51.h" //此文件中定义了单片机的一些特殊功能寄存器#include<intrins.h>typedef unsigned int u

2020-11-24 17:03:34 5931 1

原创 51单片机的矩阵按键实现两种方法

矩阵按键的原理图:高定电平与低电平导通之后也变为低电平,当低电平消失之后,又变为高电平。方法一:先令P1为0x0f,如果有键按下,则前四位必定有一位由1变为0;然后,找到是哪一行哪一列,在检测按键函数中,一行一行的去寻找,从key_buf【】中循环取值,每一个值都是前四位只有一个值为0,意味着只有一行的引脚输出电平为零,如果P1&0x0f!=0x0f,则意味着后四位有一位变成了零,也就意味着按下的这个键在在这一行里,然后去判断是哪一列,从16个已经写好的数中循环,看跟哪个相等就是哪一个按键,

2020-11-23 18:18:53 3561 1

转载 strlen注意事项

C语言中strlen函数只有在遇到一个字符串的末尾没有\0结束符时,会在内存条中继续查找\0结束符。这样返回不是一个字符串的长度

2020-11-14 19:38:30 488

原创 基于CS架构的考试系统

服务端:#include<stdio.h>#include<string>#include<iostream >#define _WINSOCK_DEPRECATED_NO_WARNINGS#include <conio.h>#include<ctime>#include<set>#include<stdlib.h>#include<WinSock2.h>#include<ctime&g

2020-11-14 19:37:20 1120

原创 c++class初始化小问题

#include<bits/stdc++.h>using namespace std;class Student{public: int scores[3]; };int main(){ Student l[2]={{0,5,6},{0,1,2}}; cout<<l[1].scores[0];}类中的public数据可以通过这样的方式初始化,有两个前提:1.初始化的数据必须是public;2.没有定义构造函数;定义构造函数后,{}里的内容需要按照构

2020-10-30 23:18:45 318

原创 2020-10-10

、有如下程序:#include using namespace std;class Obj{static int i;public:Obj(){i++;}~Obj(){i–;}static int getValue(){return i;}};int Obj::i = 0;void f(){Obj ob2;cout << ob2.getValue();}int main(){Obj ob1;f();Obj *ob3 = new Obj;cout &l

2020-10-10 14:14:48 100

原创 括号序列

由1对括号,可以组成一种合法括号序列:()。由2对括号,可以组成两种合法括号序列:()()、(())。由4对括号组成的合法括号序列一共有多少种?【答案提交】这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。题解这个题主要掌握一点就可以,就是所有不和=合法的括号序列一定是从某一处开始,前面的左括号个数小于右括号个数,控制这一点就行。就是在dfs时,在准备加入右括号时,判断左括号的个数是不是小于右括号个数,如果加之后小于则不合法,

2020-08-27 16:41:35 434

原创 欧拉筛(线性筛)

欧拉筛多用于筛素数,时间复杂度是o(n);主要原理:合数=最小质因子*合数(质数)这个合数的组成是唯一的,欧拉筛里面只在这种情况筛一次,也就是每个数就筛一次,可以完成o(n)的复杂度。每当枚举到一个数,把这个数当作后面的那个数,在已经得到的质数里枚举当作最小质因子,看看这样的组合能找到哪个合数,但是要注意,前面的质数一定要是最小质因子,如果if(i%prim[j]==0)则,前面的质数不是最小质因子,因为i可以拆成更小的质因子,导致prim[j]不是将要得到的合数的最小质因子,这样会造成这个将要得到的

2020-08-11 09:42:45 1541

原创 已知二叉树的中序后序,求先序

大体分三个步骤:STEP1:后后序遍历的最后一个是根节点,输出根节点;STEP2:根据根节点再去中序遍历中划分左子树和右子树,再从中序得出左子树的个数,确定后序中左子树的范围,递归遍历左子树,再从中序中获取右子树的的个数,再后序中获取右子树的范围,递归遍历;STEP3:重复前两个步骤,即可获得先序遍历;#include<bits/stdc++.h>using namespace std;string s1,s2;void dfs(int l1,int l2,int r1,int r

2020-08-07 11:30:49 1436

原创 烟花

#include<Windows.h>#pragma comment(lib,"winmm.lib")#include<stdio.h>#include<graphics.h>#include<iostream>#include<cstdlib>#include<time.h>using namespace std;int sx[13] = { 100,200,300,400,500,600,700,750,450,25

2020-07-31 11:13:55 222

原创 贪心经典题

[JSOI2007]建筑抢修时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 262144K,其他语言524288K64bit IO Format: %lld题目描述小刚在玩JSOI提供的一个称之为“建筑抢修”的电脑游戏:经过了一场激烈的战斗,T部落消灭了所有z部落的入侵者。但是T部落的基地里已经有N个建筑设施受到了严重的损伤,如果不尽快修复的话,这些建筑设施将会完全 毁坏。现在的情况是:T部落基地里只有一个修理工人,虽然他能瞬间到达任何一个建筑,但是修复每个建筑都需要一定的时间。同

2020-07-20 17:38:10 158

空空如也

空空如也

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

TA关注的人

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