自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 资源 (1)
  • 收藏
  • 关注

原创 STM32F1系列-UCOSIII配置之delay_init()函数详解

一、时钟选择SysTick_CLKSourceConfig();选择systick时钟,函数配置的寄存器如下所示找到该函数的定义,其两个参数的数值如下该函数选择的参数是SysTick_CLKSource_HCLK_Div8,说明选择的是外部时钟源除以8,为什么是除以8呢?大家可以看中文参考手册的第六章的时钟配置,如下图所示,我们一般配置时会将AHB配置成72M,然后这个时钟会自动除以8后进入cortex内核,所以systick的时钟为9M(不要告诉我你不知道systick是内核的外

2020-08-19 20:45:32 5796 1

原创 C++模板函数

模板用处:建立通用的摸具,大大提高了利用率特点:(1)模板不能直接使用,它只是一个框架;(2)模板的通用并不是万能的函数模板作用:建立一个通用函数,其返回值类型和形参类型可以不具体制定,用一个虚拟的类型来代表。语法: template < typename T > 函数声明或定义template —— 声明创建模板typename —— 表明其后的符号是一种数据类型,可以用class代替T —— 通用数据类型,名称可以替换,通常为大写字母//声明一个模板,告诉编译器后

2020-08-21 17:59:39 439

原创 leetcode——我贪之贪得无厌之不能再贪之贪心算法(c++系列题目)

我来填坑了,这篇博客给大家带来的是我贪之贪得无厌之不能再贪之贪心算法系列题目,期中很多到题我都是搬的题解,主要是理解其中的思路,如有侵权,联系侵删啊。建议大家自己还是手动去刷一下这些题,这些题都比较经典,手刷一遍印象更深。还有强烈大家关注406和763,这两题不是一般的贪,而是那种神奇巧妙的贪,我愿称其为贪中之贪题目列表455. 分发饼干435. 无重叠区间452. 用最少数量的箭引爆气球406. 根据身高重建队列121. 买卖股票的最佳时机122. 买卖股票的最佳时机II605. 种花问题..

2020-08-21 00:19:54 400

原创 C++函数高级应用

今天又来给大家填坑了主要讲一下C++函数中容易忽视的一些小问题期中一些代码比较简单,我也就没有截运行结果图,相信你一定可以get到的最后看到的小伙伴给点个赞呗,咱这次一定!!!一、函数默认参数在c++中,函数的形参列表中的数据是可以有默认值的。当你传入的有参数的时候,就用自己的数据,如果没有,就用默认值。int func(int a = 10, int b = 20, int c = 30) { return a + b + c;}int main() { cout <&.

2020-08-20 18:11:23 319

原创 程序内存模型——内存四区

c++内存分区模型代码区:存放函数体的二进制代码、又操作系统进行管理全局区:存放全局变量、静态变量和常量栈 区:由编译器自动分配和释放,存放函数的参数值、局部变量等堆 区:由程序员分配和释放,若程序员不释放,程序结束后由操作系统回收分区的意义:不同区域放不同的数据、赋予不同的生命周期。一、在程序执行前:在程序编译后,生成.exe可执行程序,未执行该程序前分为两个区域(1)代码区:存放CPU执行的机器指令代码区是共享的,共享的目的是对于频繁执行被执行的程序,内存中只要一个备份即可

2020-08-17 21:37:01 198

原创 C++数据类型基础

最近开始面试了,发现c++好多知识盲区,于是就开始复习了我不会写的很详细,只是记录一些容易忽视的小地方1.数据大小我的电脑是win10的,其中的long是4字节,其他环境可能不一样,注意cout << "short :" <<sizeof(short) << endl; //2cout << "int :" << sizeof(int) << endl; //4cout << "lo.

2020-08-14 21:33:12 297

原创 leetcode——二分查找系列题目(C++)

题目列表69. x 的平方根744. 寻找比目标字母大的最小字母540. 有序数组中的单一元素278. 第一个错误的版本153. 寻找旋转排序数组中的最小值34. 在排序数组中查找元素的第一个和最后一个位置69. x 的平方根二分查找即可,其中mid的平方可能会超出int的类型,所以转成long long 在比较,由于left+1,可能会去除正确结果,最后在核实一下即可class Solution {public: int mySqrt(int x) { int .

2020-07-24 23:27:30 402

原创 leetcode--旋转数组的最小数字(c++)

把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个 递增排序 的数组的一个旋转,输出旋转数组的最小元素。例如,数组[3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。示例 1:输入:[3,4,5,1,2] 输出:1示例 2:输入:[2,2,2,0,1] 输出:0二分法:当 numbers[m] > numbers[right]时: m 一定在 左排序数组 中,即旋转点 x一定在 [m + 1, right] 闭区间内,因此执行 l

2020-07-22 23:02:22 129

原创 leetcode--双指针系列题目(c++)

找了一些leetcode双指针系列的简单题目。题目列表167. 两数之和 II - 输入有序数组633. 平方数之和345. 反转字符串中的元音字母680. 验证回文字符串 Ⅱ88. 合并两个有序数组141 给定一个链表,判断链表中是否有环。524. 通过删除字母匹配到字典里最长单词167. 两数之和 II - 输入有序数组题解:使用双指针,一个指针指向值较小的元素,一个指针指向值较大的元素。指向较小元素的指针从头向尾遍历,指向较大元素的指针从尾向头遍历。如果两个指针指向元素的和 sum.

2020-07-22 22:50:15 342

转载 c/c++中static的用法

转载于https://blog.csdn.net/chenyijun/article/details/81938287在C语言中static作用:“改变生命周期” 或者 “改变作用域”。 有以下特性:1.静态局部变量用于函数体内部修饰变量,这种变量的生存期一直到程序关闭。作用域:函数体内部生存期:整个程序运行期间int foo(){ static int si = 1; int ci = 1; si += 1; printf("foo :&am.

2020-07-22 15:37:20 136

原创 指针与引用的异同,以及如何相互转化

指针与引用的异同相同都是地址的概念,指针指向某一内存、它的内容是所指内存的地址;引用则是某块内存的别名。从内存分配上看:两者都占内存,程序为指针会分配内存,一般是4个字节;而引用的本质是指针常量,指向对象不能变,但指向对象的值可以变。两者都是地址概念,所以本身都会占用内存。区别指针是实体,而引用是别名指针和引用的自增(++)运算符意义不同,指针是对内存地址自增,而引用是对值的自增。引用使用时无需解引用(*),指针需要解引用;(关于解引用大家可以看看这篇博客,传送门)引用只能在定义时被初

2020-07-16 12:44:58 8429

原创 剑指offer:给你一根长度为n的绳子,请把绳子剪成整数长的m段(m、n都是整数,n>1并且m>1)

给你一根长度为n的绳子,请把绳子剪成整数长的m段(m、n都是整数,n>1并且m>1,m<=n),每段绳子的长度记为k[1],…,k[m]。请问k[1]x…xk[m]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。示例1输入8输出18题解思路找出最优解的规律当n等于1,2,3的时候,结果是固定的当n大于3的时候,可以看以下数据n=4, 最优解:2 2n=5, 最优解:3 2n=6, 最优解:3 3n=

2020-07-15 23:02:12 2390

原创 并发、同步、异步、阻塞、非阻塞的理解

一、并发,同步,异步,互斥,阻塞,非阻塞的概念并发:在操作系统中,同个处理机上有多个程序同时运行即并发。并发可分为同步和互斥。1. 同步、互斥、异步:互斥:分布在不同进程之间的若干程序片断,规定当某个进程运行其中一个程序片段时,其它进程就不能运行它们之中的任一程序片段,只能等到该进程运行完这个程序片段后才可以运行。如有同一个资源同一时间只有一个访问者可以进行访问,其他访问者需要等前一个访问者访问结束才可以开始访问该资源,但互斥无法限制访问者对资源的访问顺序,即访问是无序的。同步:分布在不同进

2020-07-15 14:46:59 607

原创 多进程、多线程同步(通讯)的方法

进程间通讯:管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。有名管道 (namedpipe) : 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。高级管道(popen):将另一个程序当做一个新的进程在当前程序进程中启动,则它算是当前程序的子进程,这种方式我们成为高级管道方式。信号量( semophore ) :信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一

2020-07-14 13:03:30 4828

原创 进程上下文、中断上下文

用户态和内核态进程空间分为内核空间和用户空间,即内核功能模块运行在内核空间,而我们编写的应用程序运行在用户空间。其中内核运行在最高权限级别的内核态,这个级别有最高权限可以进行所有操作,而应用程序运行在较低级别的用户态,内核态和用户态都有自己的内存映射,即自己的地址空间。进程上下文和中断上下文进程上下文:(1)进程上文:其是指进程由用户态切换到内核态是需要保存用户态时cpu寄存器中的值,进程状态以及堆栈上的内容,即保存当前进程的进程上下文,以便再次执行该进程时,能够恢复切换时的状态,继续执行。

2020-07-14 12:47:57 747

原创 SPI 协议简介

SPI 协议是由摩托罗拉公司提出的通讯协议(Serial Peripheral Interface),即串行外围设备接口,是一种高速全双工的通信总线。它被广泛地使用在 ADC、LCD 等设备与 MCU间,要求通讯速率较高的场合一、SPI 物理层SPI 通讯设备之间的常用连接方式如下图所示SPI 通讯使用 3 条总线及片选线,3 条总线分别为 SCK、MOSI、MISO,片选线为SS,它们的作用介绍如下:SS ( Slave Select):从设备选择信号线,常称为片选信号线,也称为 NSS、C.

2020-07-11 17:44:08 572

原创 stm32-DMA简介

本篇是我关于stm32中I2C的学习笔记,大部分参考的是《【野火®】零死角玩转STM32—F103-MINI》以及《STM32中文参考手册_V10》。推荐大家自己下去可以仔细阅读。一、DMA 简介DMA(Direct Memory Access)—直接存储器存取,是单片机的一个外设,它的主要功能是用来搬数据,但是不需要占用 CPU,即在传输数据的时候,CPU 可以干其他的事情,好像是多线程一样。数据传输支持从外设到存储器或者存储器到存储器,这里的存储器可以是 SRAM 或者是 FLASH。DMA .

2020-07-11 17:02:51 955

原创 HC-SR04超声波模块

1.硬件原理图2.传感器参数表电气参数HC-SR04 超声波模块工作电压DC 5 V工作电流15mA工作频率40kHz最远射程4m最近射程2cm测量角度15 度输入触发信号10uS 的 TTL 脉冲输出回响信号输出 TTL 电平信号,与射程成比例规格尺寸452015mm3.引脚功能表HC-SR04实物图HC-SR04功能引脚表引脚说明VCC接5VGND地线TRIG触

2020-07-11 16:31:19 30156 3

原创 I2C协议简介

本篇是我关于stm32中I2C的学习笔记,大部分参考的是《【野火®】零死角玩转STM32—F103-MINI》以及《STM32中文参考手册_V10》。推荐大家自己下去可以仔细阅读。由于本篇只是简单介绍I2C的协议吗,所以关于stm32寄存器的相关介绍就没有写。I2C 通讯协议(Inter-Integrated Circuit)是由 Phiilps 公司开发的,由于它引脚少,硬件 实现简单,可扩展性强,不需要 USART、CAN 等通讯协议的外部收发设备,现在被广泛地使用在系统内多个集成电路(IC.

2020-05-28 14:44:04 2330

原创 常用存储器介绍

一、 存储器种类存储器按其存储介质特性主要分为“易失性存储器”和“非易失性存储器”两大类。其中的“易失/非易失”是指存储器断电后,它存储的数据内容是否会丢失的特性。由于一般易失性存储器存取速度快,而非易失性存储器可长期保存数据,它们都在计算机中占据着重要角色。在计算机中易失性存储器最典型的代表是内存,非易失性存储器的代表则是硬盘。 二、RAM 存储器 RAM 是“Random Access Memory”的缩写,被译为随机存储器。所谓―随机存取‖,指的是当存储器中的消息被读取或写..

2020-05-27 20:13:26 927

原创 关于flymcu烧录stm32芯片超时的问题解决

有时候使用FlyMcu时,会出现芯片超时无应答,无法连接的情况,如下图所示解决办法1、flymcu是否设置有问题选择 DTR 的低电平复位,RTS 高电平进 BootLoader。这个是必要的选项(在 BOOT0 接 GND 的条件下)。选择编程前重装文件选则校验和编程后执行波特率:对于 STM32F103,可以设置为最高:460800,而如果是 F4,则建议最高设置为:76800即可特别提醒:不要选择使用 RamIsp,否则,可能没法正常下载。2、检查跳冒是否连接正常STM32

2020-05-23 18:08:24 42060 20

原创 字符指针与字符串、多级指针以及指针数组

本篇我主要写了以下四点关于指针的问题字符指针与字符串指针数组多级指针void 和const 指针首先感谢大家的观看,如果大家能有所收获,那真是荣幸之至一、字符指针与字符串C语言通过使用字符数组来处理字符串,通常,我们把char数据类型的指针变量称为字符指针变量。字符指针变量与字符数组有着密切关系,它也被用来处理字符串。初始化字符指针是把内存中字符串的首地址赋予指针,...

2020-03-25 18:56:30 241

原创 C语言指针简介与相关的难点

本篇我主要写了指针简介以及指针与简单数组,二维数组的关系由于字符数组用的比较广,问题也比较多,所以我会单独再出一篇关于指针与字符数组的最后感谢大家的观看,如果大家能有所收获,那真是荣幸之至一、指针简介1.什么是指针地址和变量:在计算机内存中,每一个字节单元,都有一个编号,称为地址指针:在C语言中,内存单元的地址称为指针,专门用来存放地址的变量,称为指针变量2.指针变量的作用...

2020-03-16 19:58:24 1408

原创 C语言:字符串和常见字符串函数

一、字符串C语言中无字符串变量,用字符数组处理字符串。规定C风格的字符串都是以NULL空字符(’\0’)作为终结符结尾。由于它是字符串的终止符,但它本身并不是字符串的一部分, 所以字符串的长度并不包括NULL字节,如strlen函数。而且C标准库中提供的各种字符串处理函数都要求提供的字符串或字符数组必须以空字符结束,否则会出现不可预料的结果。初始化的方法逐个字符赋值用字符串常量...

2020-03-12 15:25:43 346

原创 C语言:一维数组与二维数组概述

数组概述数组构造数据类型之一数组是具有一定顺序关系的若干个变量的集合,组成数组的各个变量称为数组的元素数组中各元素的数据类型要求相同,用数组名和下标确定。数组可以是一维的,也可以是多维的。一维数组一维数组的定义所谓一维数组是指只有一个下标的数组。它在计算机的内存中是连续存储的。C语言中,一维数组的说明一般形式如下:<存储类型> <数据类型 > &...

2020-03-12 13:22:34 2084 1

原创 常用Linux命令-文件目录类命令

一、浏览目录命令ls: 显示目录文件ls: 功能描述:显示目录文件 语法:ls [-a/l/d] [文件或目录] -a 显示所有文件,包括隐藏文件 -l 详细信息显示 -d 查看目录属性 -r 递归列出子目录pwd: 显示当前所在的工作目录pwd: 功能描述:显示当前所在的工作目录 语法:pwd 二、目录操作命令cd: 切换目录cd:...

2020-03-10 20:41:20 3254

原创 编译原理(9):代码生成

声明:本系列文章,是根据中国大学MOOC网 哈工大的编译原理 这门课学习而成的学习笔记。一、代码生成器的主要任务指令选择选择适当的目标机指令来实现中间表示(IR)语句寄存器分配和指派把哪个值放在哪个寄存器中指令排序按照什么顺序来安排指令的执行二、一个简单的目标机模型地址机器模型加载、保存、运算、跳转等操作内存按字节寻址n个通用寄存器R0, R1, …, Rn-1假设...

2020-02-20 17:51:20 3167

原创 编译原理(8):代码优化

声明:本系列文章,是根据中国大学MOOC网 哈工大的编译原理 这门课学习而成的学习笔记。一、流图基本块(Basic Block)基本块是满足下列条件的最大的连续三地址指令序列控制流只能从基本块的第一个指令进入该块。也就是说,没有跳转到基本块中间或末尾指令的转移指令除了基本块的最后一个指令,控制流在离开基本块之前不会跳转或者停机基本块划分算法首先(1)指令是首指令,其次跟在...

2020-02-18 18:34:47 4713

原创 编译原理(7):运行存储分配

声明:本系列文章,是根据中国大学MOOC网 哈工大的编译原理 这门课学习而成的学习笔记。运行存储分配一、运行存储分配概述运行存储分配策略编译器在工作过程中,必须为源程序中出现的一些数据对象分配运行时的存储空间对于那些在编译时刻就可以确定大小的数据对象,可以在编译时刻就为它们分配存储空间,这样的分配策略称为静态存储分配反之,如果不能在编译时完全确定数据对象的大小,就要采用动态存储分配的...

2020-02-16 13:40:08 5475

原创 编译原理(6):中间代码生成

声明:本系列文章,是根据中国大学MOOC网 哈工大的编译原理 这门课学习而成的学习笔记。一、类型表达式 (Type Expressions)类型表达式基本类型是类型表达式integerrealcharbooleantype_error (出错类型)void (无类型)可以为类型表达式命名,类型名也是类型表达式将类型构造符(type constructor)作用于...

2020-02-14 19:02:33 1767

原创 编译原理(5):语法制导翻译

声明:本系列文章,是根据中国大学MOOC网 哈工大的编译原理 这门课学习而成的学习笔记。一、语法制导翻译概述什么是语法制导翻译语法制导翻译的基本思想两个概念语法制导定义(SDD)语法制导翻译方案(SDT)SDD与SDTSDD:是关于语言翻译的高层次规格说明;隐蔽了许多具体实现细节,使用户不必显式地说明翻译发生的顺序SDT:可以看作是对SDD的一种补充,是S...

2020-02-12 18:58:12 11280

原创 编译原理(4):语法分析下——自底向上分析

声明:本系列文章,是根据中国大学MOOC网 哈工大的编译原理 这门课学习而成的学习笔记。一、自底向上分析概述自底向上的语法分析从分析树的底部(叶节点)向顶部(根节点)方向构造分析树可以看成是将输入串w归约为文法开始符号S的过程自顶向下的语法分析采用最左推导方式自底向上的语法分析采用最左归约方式(反向构造最右推导)自底向上语法分析的通用框架移入-归约分析(Shift-Re...

2020-02-11 16:05:35 7342

原创 编译原理(4):语法分析上——自顶向下分析

声明:本系列文章,是根据中国大学MOOC网 哈工大的编译原理 这门课学习而成的学习笔记。一、自顶向下分析概述最左推导(Left-most Derivation)最右推导(Right-most Derivation)自顶向下分析(Top-Down Parsing)从分析树的顶部(根节点)向底部(叶节点)方向构造分析树可以看成是从文法开始符号S推导出词串w的过程每一步推导中,都需要...

2020-02-09 20:19:37 2755

原创 编译原理(3):词法分析

声明:本系列文章,是根据中国大学MOOC网 哈工大的编译原理 这门课学习而成的学习笔记。一、正则表达式正则表达式语言是一个集合,因此我们可以在语言上进行多种集合运算。比如说并运算,乘积运算(即连接运算),闭包运算等等。接下来我们看一个语言的例子,如下图所示:这个语言的字首是字母 a,接下来连接一个任意长度的 a,b串,再接下来连接一个空串。连接一个空串就代表句子已经结束了。除此之...

2020-02-07 22:43:41 2059

原创 编译原理(2):语言及其文法

声明:本系列文章,是根据中国大学MOOC网 哈工大的编译原理 这门课学习而成的学习笔记。一、基本概念字母表字母表Σ 是一个有穷符号集合。字母表也称为符号集。符号:字母、数字、标点符号…例:ASCII 字符集,二进制字母表:{0,1},Unicode字符集字母表上的运算字母表与字母表的乘积字母表的 n次幂:长度为 n 的符号串构成的集合字母表的正闭包:长度正数的符号串构成...

2020-02-06 16:20:40 1357

原创 编译原理:绪论

声明:本系列文章,是根据中国大学MOOC网 哈工大的编译原理 这门课学习而成的学习笔记。什么是编译编译:将高级语言(源)翻译成汇编语言或机器语言(目标)的过程编译器在语言处理系统中的位置预处理器:将源程序转换成经过预处理的源程序。预处理过程:把存储在不同文件中的源程序聚合在一起。把被称为宏的缩写语句转换为原始语句编译器:将源程序转换为汇编语言程序。汇编器:将汇编语言程序转换成可重...

2020-02-03 19:28:53 445

基于原子stm32精英板DMA例程.rar

这是基于原子stm32精英板写了两个DMA例程,一个是寄存器到寄存器、一个是存储器到外设,欢迎大家免费下载

2020-07-11

空空如也

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

TA关注的人

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