自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 资源 (3)
  • 收藏
  • 关注

原创 秋招笔试题——嵌入式软件开发

某VO://给定一个非空字符串str,在最多可以删除一个字符的情况下//请编程判定其能否成为回文字符串;//如果可以则输出首次删除一个字符所能得到的回文字符串,//如果不行则输出字符串"false”。boolisSpecial(char* string) { int len = strlen(string); if (len <= 1) return true; int head = 0, tail = len - 1; while (head < tail) { if

2021-04-26 15:02:07 368

原创 力扣刷题——数组(2)

将每个元素替换为右侧最大元素给你一个数组 arr ,请你将每个元素用它右边最大的元素替换,如果是最后一个元素,用 -1 替换。完成所有替换操作后,请你返回这个数组。示例:输入:arr = [17,18,5,4,6,1]输出:[18,6,6,6,1,-1]提示:1 <= arr.length <= 10^41 <= arr[i] <= 10^5思路1:模拟,从左到右这个思路应该是最容易想到的,两层循环,外层循环从左到右,内循环找到当前位置右边最大的元..

2021-04-26 15:01:41 230

原创 对Linux内核链表的list_entry宏的理解

Linux内核方式与众不同,它不是将数据结构塞入链表,而是将链表节点塞入数据结构!链表节点定义:struct list_head { struct list_head *next, *prev;};链表的初始化可以由两个宏来静态的实现:#define LIST_HEAD_INIT(name) { &(name), &(name) }#define LIST_HEAD(name) \ struct list_head name = L..

2021-02-08 17:16:43 540 3

原创 在Windows用Source Insight阅读Linux内核源码

学习Linux内核时想要获取源码进行阅读学习,有以下两种方式:1.【针对Linux平台】使用Git去克隆首先你得安装Git,然后通过以下指令获取:git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git(当然,上面这个版本获取的是2.6版本的,你可以自由获取别的版本的)2.【针对Windows平台】官网下载之后解压首先移步官网:https://www.kernel.org然后下载最新版本的()

2021-02-07 23:02:39 1112

原创 力扣刷题——数组(一)

面试题 17.10. 主要元素数组中占比超过一半的元素称之为主要元素。给定一个整数数组,找到它的主要元素。若没有,返回-1。示例 1:输入:[1,2,5,9,5,9,5,5,5]输出:5示例 2:输入:[3,2]输出:-1示例 3:输入:[2,2,1,1,1,2,2]输出:2说明:你有办法在时间复杂度为 O(N),空间复杂度为 O(1) 内完成吗?思路1:排序取中值这个思路还是蛮容易想到的,由于主要元素超过整个数组的以上,所以对数组进行排序后,取中间值,必定是所求

2020-09-21 16:14:24 509

原创 C语言常用排序算法原理及实现

一、冒泡排序思路:每次冒泡,从第0个元素开始,相邻两个元素之间进行比较如果元素大,则往后冒,否则不作交换这样,一次冒泡(即一层循环)下来之后,就可以确定一个最大值且排在最后的位置接下来的循环就对剩余的元素重复之前的操作,相邻相比,大者冒泡,找到第二大元素以此类推,直到最后所有元素都到了相应的位置,冒泡结束复杂度:O(n^2)稳定性:是稳定的voidbubbleSort(int* array, int length) { for (int i = 0; i < length - 1

2020-09-19 15:35:06 795

原创 力扣刷题——DFS深度优先搜索算法

岛屿数量给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例 1:输入:[[‘1’,‘1’,‘1’,‘1’,‘0’],[‘1’,‘1’,‘0’,‘1’,‘0’],[‘1’,‘1’,‘0’,‘0’,‘0’],[‘0’,‘0’,‘0’,‘0’,‘0’]]输出: 1示例 2:输入:[[‘1’,‘1’,‘0’,..

2020-09-14 21:06:40 1105

原创 力扣刷题——杂七杂八(多少有点贪心在里面)

换酒问题小区便利店正在促销,用 numExchange 个空酒瓶可以兑换一瓶新酒。你购入了 numBottles 瓶酒。如果喝掉了酒瓶中的酒,那么酒瓶就会变成空的。请你计算 最多 能喝到多少瓶酒。示例 1:输入:numBottles = 9, numExchange = 3输出:13解释:你可以用 3 个空酒瓶兑换 1 瓶酒。所以最多能喝到 9 + 3 + 1 = 13 瓶酒。示例 2:输入:numBottles = 15, numExchange = 4输出:19..

2020-09-05 10:55:29 185

原创 力扣刷题——排序

判断能否形成等差数列给你一个数字数组 arr如果可以重新排列数组形成等差数列,请返回 true ;否则,返回 false示例 1:输入:arr = [3,5,1]输出:true解释:对数组重新排序得到 [1,3,5] 或者 [5,3,1]任意相邻两项的差分别为 2 或 -2 ,可以形成等差数列。示例 2:输入:arr = [1,2,4]输出:false解释:无法通过重新排序得到等差数列。思路1:数组排序+逐项验证最直观的思路就是,先把数组排序然后一次遍历挨个判断..

2020-09-03 13:34:02 653

原创 力扣刷题——位运算(二)

只出现一次的数字给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4思路:位运算异或消除相同项我们知道异或能够消除相同项,利用的是A ^ A = 0的性质;另外,还有个性质是A ^ 0 = A,两条性质结合即可解决本题:相同的出现两次的数字会相互抵消,抵..

2020-09-02 12:33:12 483

原创 力扣刷题——位运算(一)

缺失数字给定一个包含 0, 1, 2, ..., n 中 n 个数的序列,找出 0 .. n 中没有出现在序列中的那个数。示例 1:输入: [3,0,1]输出: 2示例 2:输入: [9,6,4,2,3,5,7,0,1]输出: 8思路1:求和后求差值先求0~n的和,再减去“nums数组求和”,差值即为缺失的值但是由于求和容易溢出,所以边加边减可以从一定程度上解决这个问题即每次加上一个nums[i]的同时减去i思路2:位运算——异或利用异或的性质:A ^ A = ..

2020-09-01 22:40:11 217

原创 一、利用AT指令配置esp8266——esp8266WIFI模块初探&STM32串口通信再探

首先作为博文开头,简单esp8266初探:通过AT指令配置模块STM32串口通信再探:STM与esp8266实现串口通信局域网内的TCP通信:esp8266与同一WIFI热点下的设备建立TCP连接esp8266访问外网服务器:通过与外网服务器建立TCP连接实现信息交互...

2020-08-27 20:27:02 18672 5

原创 esp8266涉及到的计算机网络知识

计算机网络体系结构TCP连接WIFIIP地址&端口TCP和UDP客户端与服务器:TCP连接的建立采用客户服务器方式。主动发起连接建立的应用进程叫做客户(client),而被动等待连接建立的应用进程叫做服务器(server)。一、计算机网络体系结构计算机网络体系结构是指计算机网络层次结构模型,它是各层的协议以及层次之间的端口的集合。关于计算机网络体系结构,一般有两种模型,分别为...

2020-08-27 20:26:49 1719 1

原创 esp8266局域网内的TCP通信实验

本文以esp8266作为STA,以手机WIFI作为AP,电脑端用网络调试助手与esp8266共同连接至手机WIFI并建立TCP连接,操作步骤与我在另一篇博文提到的一致。下面分别以“esp8266作为TCP客户端”和“esp8266作为TCP服务器”两种情况进行实验示范:准备工具:USB转TTL、esp8266模块、串口调试助手、网络调试助手、一、esp8266作为TCP客户端1...

2020-08-27 20:26:38 5173 2

原创 土壤湿度检测模块利用ADC测量具体湿度(一)

博文intro网上关于土壤湿度检测模块的使用大多都是通过其DO数字信号输出引脚来判断检测到的湿度是否超过阈值(超过输出低电平,否则输出高电平),而对于其AO模拟信号输出引脚的使用却鲜有人提及。本文就此从AO引脚的角度来打开本模块的使用。土壤湿度检测模块intro我用的是这种最简单的不带继电器的模块,如果采用DO引脚对模块进行使用的话,可通过模块中的蓝色电位器对阈值进行调节——不过,本文则是采用AO引脚对模块进行使用。(当然,你也可以结合起来一起使用)关于该模块的引脚说明我直接引用某宝产品图片了:

2020-06-06 13:56:56 15808

原创 不基于STM32的ADC模数转换的简单理解

  我们知道单片机的IO能够检测二进制的高低电平(即0或1的数字信号),比如通过IO的高低来判断按键是否按下,之类的。假设我们给单片机供电是5v,那么它就会将0v(GND)理解为二进制0,将5v(VCC)理解为二进制1。然而这个世界并不是非黑即白的,在0到5v之间会出现2.73v这样的“灰色”数值,那咋办嘛?  现实世界的数值/数据都是连续变化的(不是台阶式跳变的),我们称为模拟信号,比如声音、温度、光线、压力,之类的。上面提到的2.73v就是一个模拟电压值,而我们单片机只能按照0/1的level去处理数

2020-06-05 13:05:23 561

原创 数据结构学习总结

一、概述定义数据结构研究的是:我们如何把现实中大量而复杂的问题以特定的数据类型和特定的存储结构保存到主存储器(内存)中,以及在此基础上为实现某个功能(比如查找、删除某个元素)而执行的相应操作(这个操作也叫做算法)总得来说,数据结构研究的是数据的存储和对数据的操作。其中,数据的存储包括数据个体的存储、个体间关系的存储,我们认为个体关系的存储更为重要,系数据结构所要研究的一个重点。整体框架...

2020-02-10 22:03:00 587

原创 C语言可变参数函数_初探

一、什么是可变参数函数C语言允许定义参数数量可变的函数,这称为可变参数函数(variadic function)。这种函数需要固定数量的强制参数,后面是数量可变的可选参数。其中,强制参数必须至少一个,可选参数数量可变,类型可变,可选参数的数量由强制参数的值决定,或由用来定义可选参数列表的特殊值决定。其实我们早就接触过可变参数函数了,C 语言中最常用的可变参数函数例子是 printf()和 s...

2019-11-10 22:00:59 7478 5

原创 初识cJSON

先把 cJSON的结构体定义po上来:先讲怎么用,再讲每一步操作的作用,最后有可能的话再讲原理。直接先po个简单示例,看看我们如何通过cJSON来解析一个JSON数据。先试着能不能看懂(估计是看不懂了),算了算了,直接看看不懂,先来讲点“前言”。....我们先来讲讲几个用到的函数。首先是 **cJSON cJSON_Parse(const char value);可以看见,...

2019-11-10 20:05:02 373

原创 学习杂记

关于存储介质:RAM、ROM和FLASH三大类常见存储器简介.内存(RAM或ROM)和FLASH存储的真正区别总结....关于扇区(sector)、块(block)、页(page):以硬盘为例(可以理解成磁盘),通过调整磁头的位置来读取磁盘上相应位置的数据。将整个磁盘的盘面按如下所示划分,则有了扇区的概念,图中绿色部分则为一扇区,扇区是磁盘的最小组成单元,通常是512字节。(由于...

2019-11-05 20:01:15 558

原创 JSN-SR04T倒车雷达超声波测距模块

JSN-SR0T4-2.0 超声波测距模块可提供 20cm-600cm 的非接触式距离感测功能,测距精度可达高到 2mm,采用工业级一体化超声波探头设计,防水型,性能稳定,兼容市场上所有的 MCU 工作。基本原理作为超声波测距模块,本模块与HC-SR04雷同,二者可相互作为参考。(JSN-SR04T和HC-SR04似乎是同一家公司的产品,其中,JSN-SR04T的模式一与HC-SR04的...

2019-10-26 14:37:52 5365 2

原创 基于STM32F407的人脸追踪

整体概述本项目采用两个舵机构成的二自由度的电动云台作为执行机构,控制摄像头在水平和垂直方向的运动。舵机带动摄像头进行二维平面的运动的同时,摄像头进行实时人脸检测,一旦检测到人脸,则进行人脸跟踪。摄像头采用星瞳openMV H7,主控采用的是正点原子探索者F407开发板。本文通过openMV和STM32两方面来讲解。openMV部分OpenMV摄像头是一款小巧,低功耗,低成本的电路板,它帮...

2019-09-27 19:06:59 6969 2

原创 基于STM32F407的串口通信

串口通信串口作为 MCU 的重要外部接口,同时也是软件开发重要的调试手段,其重要性不言而喻。现在基本上所有的 MCU 都会带有串口,STM32 自然也不例外。通过串口,我们可以实现多设备间的单双向通信。本文主要讲解对正点原子的串口通信实验中串口中断的通信协议的理解与应用,关于串口的初始化配置等这里略过不讲。在正式开始之前,先把涉及到的寄存器讲一下:状态寄存器 (USART_SR)状态寄存...

2019-09-21 16:41:27 6789 2

原创 Python中else在for...in...的作用及其相关搭配

else在for…in…的作用及其相关搭配一、基础知识由于本人对Python只有皮毛的理解,所以先从初学者的角度堆砌一些基本的知识,也方便引出后面的问题。(有一定Python基础的可以略过不看)。首先我们知道Python中常用for…in…来迭代,举个例子:fruit_list = ['apple', 'banana', 'pear', 'peach']for fruit in frui...

2019-09-19 21:07:48 2126

原创 带编码器的直流减速电机——基于STM32F407

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Ma...

2019-07-28 21:58:41 40658 70

SPI实验.rar

STM32与W25Q128进行SPI通信,在正点原子官方例程的基础上进行了十分详细的注释。

2019-11-05

catchFace_final.rar

基于STM32F407和星瞳openMV的人脸追踪,通过32控制两个舵机运动实现摄像头的运动,openMV实时检测识别人脸

2019-09-27

MyEncoder.rar

基于stm32f407的带编码器的直流减速电机的代码

2019-07-26

空空如也

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

TA关注的人

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