自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 收藏
  • 关注

原创 C++随笔

起因是群里同学问的代码执行结果,直接把图放上来:一个是j的输出值,一个是k的输出值。答案是0和0;开始还觉得挺简单的,但是如果让我答还不一定能答对。函数里局部变量j的值赋值为全局j的值,而全局变量j没有赋值,默认初值为0;而判断语句判断为真,执行局部变量k的赋值,if语句没有加上花括号{},局部变量k有效范围就是这一句话,如果在if中加上花括号,输出k值,可以看到k值为1。if执行结束后k值被释放,再输出k值的时候,就为全局变量k的值了,所以输出为1....

2020-05-18 13:58:45 153

原创 LCD仿真卡在delay_ms问题

STM32学习时间不长,今天LCD屏幕到了,要把之前的程序改到现在的开发板上。在LCD_Init()函数执行卡住,仿真调试后找到是卡在了delay_ms()里,开始我还以为是代码有问题,重新添加了例程的代码,无果。后来仔细查看代码才发现,delay_init()函数被我放到了LCD_Init()的后面,而LCD初始化使用到了延时函数,调整后解决。虽然是一个小的问题,自己解决后也会很开心。而且也...

2020-04-05 22:11:51 1198

原创 409. 最长回文串

题目要求以及示例:给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。在构造过程中,请注意区分大小写。比如"Aa"不能当做一个回文字符串。注意:假设字符串的长度不会超过 1010。示例 1:输入:"abccccdd"输出:7解释:我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。解题思路:A-a之间共包含了58...

2020-03-19 11:47:18 136

原创 836. 矩形重叠

题目要求以及示例:矩形以列表 [x1, y1, x2, y2] 的形式表示,其中 (x1, y1) 为左下角的坐标,(x2, y2) 是右上角的坐标。如果相交的面积为正,则称两矩形重叠。需要明确的是,只在角或边接触的两个矩形不构成重叠。给出两个矩形,判断它们是否重叠并返回结果。示例 1:输入:rec1 = [0,0,2,2], rec2 = [1,1,3,3]输出:tr...

2020-03-18 11:48:47 99

原创 1160. 拼写单词

题目要求以及示例:给你一份『词汇表』(字符串数组)words和一张『字母表』(字符串)chars。假如你可以用chars中的『字母』(字符)拼写出 words中的某个『单词』(字符串),那么我们就认为你掌握了这个单词。注意:每次拼写时,chars 中的每个字母都只能用一次。返回词汇表words中你掌握的所有单词的 长度之和。示例 1:输入:words ...

2020-03-17 11:28:54 102

原创 面试题 01.06. 字符串压缩

题目要求以及示例:字符串压缩。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字母(a至z)。示例1:输入:"aabcccccaaa"输出:"a2b1c5a3"示例2:输入:"abbccd"输出:"abbccd"...

2020-03-16 12:47:15 75

原创 169.多数元素

题目要求以及示例:给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于⌊ n/2 ⌋的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例1:输入: [3,2,3]输出: 3示例2:输入: [2,2,1,1,1,2,2]输出: 2来源:力扣(LeetCode)链接:https://leetcode-cn.com/pr...

2020-03-15 23:09:55 83

原创 695. 岛屿的最大面积

题目要求以及示例:给定一个包含了一些 0 和 1的非空二维数组grid, 一个岛屿是由四个方向 (水平或垂直) 的1(代表土地) 构成的组合。你可以假设二维矩阵的四个边缘都被水包围着。找到给定的二维数组中最大的岛屿面积。(如果没有岛屿,则返回面积为0。)示例 1:[[0,0,1,0,0,0,0,1,0,0,0,0,0],[0,0,0,0,0,0,0,1,1,1,0,...

2020-03-15 13:31:01 80

原创 最长上升子序列

leetcode题目:给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4解释: 最长的上升子序列是[2,3,7,101],它的长度是 4。思路如下:遍历nums数组,分别找到以nums[i](nums.size()>i>=0)为结尾的最长上升子序列,可以将每个数值存储到数组中,数组中最大...

2020-03-14 14:36:25 67

原创 ESP8266三种工作模式

三种工作模式即STA、AP、STA+AP;对于前两种都比较好理解,主要是第三种的用途。今天看到,积累一下。STA模式(Station):工作在STA模式下的8266就像是一个接收机一样,它可以接收来自无线路由器发出的信号,实现了8266通过接收路由器的信号而能够连接互联网,如果把8266安装在硬件设备上,就可以实现硬件设备的远程控制。可以理解为此时8266是主动去连接别人,即此时的8266...

2020-03-12 23:01:30 16601 2

原创 SPI实验

一、简介 关于SPI的特征: 关于4根线中除了数据线与时钟线的片选信号,从选择脚管理: 4根线中的时钟信号:SPI_CR的CPOL和CPHA位确定了数据在第几个边沿以及是上边沿还是下边沿触发,并且将数据进行锁存。下面举个例子来帮助理解: 配置时钟信号与极性的目的就是与从机的时钟与极性相严格匹配。之后就是传输数据的格式...

2020-02-19 19:30:00 525

原创 RS485实验

一、简介485本质上也是一种串口,与RS232相同,不过是对于电压、阻抗的定义有区别,造成的应用场景也不同。RS232是早期出现的接口电路,其应用范围最广,但是RS232接口有哪些缺陷呢? 之后出现了485接口: 485接口对RS232的缺点进行了优化,它所具备的特点为: 485的结构图如下,描述了将微控制器中的电平信号转换为485的电...

2020-02-13 12:41:58 779

原创 STM32中IIC实验

一、简介在之前学习的时候也接触过IIC这个词。不过一直没有深入学习与理解。首先,I2C的简介如下:要了解的一些知识:①:空闲状态:②③:开始信号与停止信号:④:应答信号⑤:数据有效性如何判断当前传输的数据是否有效,以及判断数据有效性的规定如下:⑥:数据的传送二、实验本次要操作EEPROM(24C02),24C02的原理图如下:...

2020-02-10 12:11:17 872

原创 STM32DAC转换

一、简介类似于ADC模数转换,DAC有许多相似的地方。DAC模块的主要特点如下: 需要注意的几点是:PA4、PA5需要设置为模拟输入,而不是模拟输出,否则将不能产生正确电压。采用哪种对齐方式就写到相应寄存器中:DAC触发的具体描述:硬件连接如下:具体的设置步骤:...

2020-02-08 12:21:30 669

原创 STM32内部温度传感器实验

由于本次实验基于ADC转换实验,所以有很多东西在ADC的基础上实现。内部温度传感器一、概念上次见过温度传感器在通道16的图:关于内部温度传感器的描述:内部温度传感器的使用事项:第二项就是关于如何使用模数转换测量当前温度值的,内部温度感应器肯定测量得到电压值,将电压的连续量转换获得离散量。再通过电压与温度之间固定的关系,得到...

2020-02-07 19:07:55 2131

原创 STM32ADC转换

ADC模数转换一、概述ADC翻译过来是模数转换,意思就是将外部世界采集到的模拟量的数据信息通过ADC变为计算机可以识别的数字信号。STM32的ADC具有以下特点: STM32最多所带的3个ADC控制器的ADC通道与引脚对应关系:注:有PF引脚的为144引脚的芯片(21个),如果小于144位,如64位、100位的只有16个外部通道(21个-5个PF引脚); 通道分...

2020-02-06 20:04:21 3132

原创 待机唤醒实验

待机唤醒实验一、概念待机唤醒可以很容易从字面意思理解,嵌入式设备可用资源较少,所以合理控制功耗也是衡量性能的一个指标STM32的低功耗模式可以分为一下三种: 最后两条,在运行模式下,就是指没有采用低功耗模式的情况下,如何降低功耗。Stm32三种低功耗模式对应需要的设置以及中断唤醒方式如下,本次实验使用WKUP(固定是PA0)唤醒待机模式的STM32:二 、待机...

2020-02-03 16:58:41 500 1

原创 RTC时钟

RTC实时时钟一、概念后备区域是指STM32待机的时候还可以保证时钟运行,时间准确。RTC所采用的时钟源:一般使用比较准确的外部时钟源RTC工作原理图: 从上图可以将RTC划分为两部分:后备寄存器就是BKP备份寄存器: RTC相关的寄存器::RTC控制寄存器高位:用来使能或者禁止溢出、秒、闹钟中断。:RTC控制寄存...

2020-01-29 13:04:15 628

原创 USMART组件

USMART调试组件一、原理首先,啥是USMART啊?简单来说就是通过串口与开发板进行交互的工具。使用USMART的目的是减少使用J-LINK调试或者修改代码输入参数再进行下载等操作,通过串口传递参数,从而简化程序修改过程以及减少FLASH损耗。USMART调试过程如下:USMART具有的特点: USMART文件组如下: 二、实验实验...

2020-01-28 18:25:51 1972

原创 定时器输入捕获实验

定时器输入捕获实验概述这个实验终于用到的是最后一个部分:捕获部分:每次捕获过程是如何实现的?整体过程是上面这个图,可以划分为四个部分,下面按照四个部分分别研究。步骤一:输入捕获滤波器设置了采样次数,在捕获时过滤抖动。 步骤二:捕获上升沿或是下降沿步骤三:一般情况就将IC1映射至通道1;IC2映射到通道2.通道四:分...

2020-01-25 20:29:09 229

原创 PWM输出实验

PWM输出实验一、原理本次采用的是右下角输出部分。时钟来源:内部时钟(CK_INT)。PWM工作过程: 例如:向上计数时,捕获/输出寄存器比较当前值,如果当前值低于设定值,输出低电平,高于设定值,则输出高电平。当计数值达到重装载值时,变为0.由此可以输出连续的波形。注:PWM模式1和PWM模式2的区别:模式1:无论是向上还是向下计数,只要CNT&l...

2020-01-25 10:57:21 1585

原创 定时器中断实验

回顾实验内容需要用到的是上半部分:配置:内部时钟、预分频系数、重装载值、计数器工作方式。内部时钟选择:APB1预分频系数不为1,则*2输出。时钟计算方法如下:时钟常用寄存器及库函数:: CNT:16位寄存器,此寄存器存储计数器当前的值。:::设置计数方式等:总体上还是实现上面功能需要配置的寄存...

2020-01-23 19:03:51 420

原创 STM32定时器(通用定时器)原理

STM32F10ZET6内部有三种定时器,分别是:高级定时器,通用定时器,基本定时器。他们的区别如下图:本次采用通用定时器。STM32F4系列有32位定时器。通用定时器的特点: 功能特点描述中的计数模式分为向上计数模式、向下计数模式、中央对齐模式:通用定时器内部原理图如下:(TIM_CH1/CH2为独立通道,此处省略了CH3/CH...

2020-01-23 12:07:47 3447 1

原创 窗口看门狗实验

窗口看门狗一、窗口看门狗的定义及窗口看门狗和独立看门狗区别是什么? 总结一下就是独立看门狗只有下限,在下限前喂狗即可使程序不被复位;而窗口看门狗有上限和下限,喂狗要在上限与下限之间。具体窗口看门狗工作顺序如下:总结一下就是: 窗口看门狗的超时时间的计算: 既然已经有独立看门狗,为何还需要窗口看门狗?窗口看门狗可以使时间控制得更精确,可以处理独立...

2020-01-22 16:07:31 849

原创 独立看门狗实验

看门狗实验概述也就是保证程序能正常执行,如果程序执行异常,可以使系统复位。 STM32看门狗的分类: 这次主要学习独立看门狗的相关知识,独立看门狗的功能描述以及原理如下:初始化具体设置如下:...

2020-01-21 13:49:20 227

原创 外部中断

外部中断概述 这么多IO口,怎么都可以产生中断请求?答案是映射。这样GPIOA-G的0-15就映射到EXTI0-15 共16个中断线 16*7=112。但是在同一时间只能有一个IO口映射到中断线。这些中断的中断服务函数怎么分配的呢? 从表中可以看出:EXTI0-EXTI4有独立的中断处理函数,而EXTI5-9共用一个中断处理函数,EXTI10-15共用一个中断处理...

2020-01-17 22:26:56 450

原创 ISP下载

今天记录一下我用ISP下载方式遇到的一些问题。之前买的一个STM32最小开发板,开始使用ISP下载方式一直没有弄好,后来使用ST-LINK下载程序也就告了一个段落,没有仔细研究。今天又遇到同样问题的兄弟,现在又开始整理一下,顺便记录一下遇到的问题。 问题现象:显示芯片超时无应答,无法连接。可能的原因:1.这个位置没有设定为正确的方式。2.串口下载程序接口接错:...

2020-01-14 19:18:46 4329

原创 中断优先级

中断优先级分组方法以及中断强度优先级和响应优先级的关系:注意:例如:已经设置好分组为2 抢占和响应优先级分别为10 10即抢占优先级为2,响应优先级也为2;如果这时改变分组为3,则抢占优先级为101 0即抢占优先级为5,响应优先级为0,已设置好的中断就会混乱设置中断优先级可以使用库函数实现:以及中断初始化函数:总结一下中断优先级设置:具体还是要在...

2020-01-13 13:36:17 3818

原创 端口复用与重映射

端口复用基本定义 注:内置外设:除了内核都是外设,例如ADC DAC等。 PA9 PA10就是端口复用,只用通过端口复用,才可以实现丰富强大的外设功能以PA9 PA10复用为例: 端口重映射基本定义 例如:PA2 PA3为串口2的发送 接收引脚,但也可以映射到PD5 PD6引脚端口重映射配置过程如下:即...

2020-01-12 19:51:10 734

原创 J-LINK/ST-LINK调试

J-LINK调试一、J-LINK调试原理总结一下就是:调试模块“中断”内核正在运行的程序等待被查询,查询结束后,内核 继续正在进行的工作。串行接口即为SWD。-2根数据线 而JTAG调试需要5根。具体介绍如下:SWD和J-LINK具体使用的端口及映射引脚:设置调试口可以使用库函数,在stm32f10x_gpio.h中有GPIO_PinRemapConfig()函数...

2020-01-12 18:46:39 1559

原创 时钟系统

前几天也算是开心地玩耍了几天,又加上考了一门试,一直没有时间继续学习(其实是因为懒)。今天继续学习偏理论方面的知识-Systick定时器。一、什么是Systick定时器?注:1.倒计时器就是设定初始值,定时器在初始值的基础上递减。让我想到了C++中设置的哨兵… 2.睡眠模式下也可以工作就比通用计时器节省了大量系统资源二、Systick相关寄存器...

2020-01-11 09:43:05 260

原创 按键实验

按键输入实验:首先是硬件连接,如下图:因为是按键输入,所以先看可以选择的输入操作方式,类似于GPIO输入方式:实验步骤基本如下:但是按键扫描涉及到一个问题,就是按键按下去的时候是把它当成一直按键按下的状态还是只当成一次按键按下,这就是支持连续按和不支持连续按的问题。支持连续按的一般思路如下:不支持连续按的思路如下:不支持连续按比上一个多了一点就是stat...

2020-01-02 21:53:58 2360

原创 蜂鸣器实验

蜂鸣器实验:今天开始进行下一个实例学习—蜂鸣器实验。蜂鸣器实验和LED实验有许多相似的地方,比如都是操控GPIO口实现的。首先,先认识一下蜂鸣器,精英板上搭载的是有源蜂鸣器,有源指的是自带了振荡电路,所以接电后可以发声,无源蜂鸣器则需要外部提供方波驱动,才可以发声。在设计硬件电路时,需要注意开发板所能提供的电流大小非常小,不能直接用来给蜂鸣器供电。需要接一个三极管,作为放大电路。...

2020-01-02 14:13:22 1916

原创 寄存器版跑马灯实验续

这篇博客是STM32学习之路(三)的后续,我尝试用BRR和BSRR实现控制IO口输出,其他内容基本一样,只有main.c主函数中进行了改动。代码如下:#include "stm32f10x.h"#include "delay.h"#include "led.h"int main(void){ delay_init(); led_init(); while(1){ GPIO...

2020-01-01 10:19:26 215

原创 位操作版本跑马灯实验

位操作版本跑马灯实验使用位带操作操作IO口,可以在之前工程的基础上,特殊之处在于它使用了正点原子提供的三个常用文件delay,sys,usart中的sys文件,如下图,在sys.h中有很多宏定义。这种地址映射等很多,具体代码上除了基本的使能IO口,设置工作方式,就是编写主函数了,我把代码写在下面:#include "stm32f10x.h"#include "LED.h"...

2019-12-31 21:35:13 408 2

原创 寄存器跑马灯实验

寄存器版本跑马灯实验 调用库函数本质上也是修改寄存器特定位的值来实现功能的,库函数能实现的操作,寄存器基本上都可以完成。下面我们用寄存器操作实现跑马灯功能。 创建工程等与之前工程创建相同,注1:寄存器操作要尽量不影响其他位的值,如:要使能APB2,在stm32f10x.h中查找到RCC_TypeDef结构体:那么,怎么只改变这一位呢?应该采用或运算来...

2019-12-31 21:33:18 806

原创 串口与USB_Slave区别和几种代码下载方式

特别注意:硬件资源USB_SLAVE:用于USB通信,用于模拟USB虚拟串口。USB_232(USB转串口):有供电功能,可用于程序下载和代码调试。总结:两者本质上都一样。只是USB_232是借助了外部芯片实现的,优点就是简单,缺点就是要增加成本.直接接USB,则可以省下这个芯片的费用,缺点,则是需要自己写驱动。-摘自正点原子论坛可能是这个原因,MINI板上只保留了USB转串...

2019-12-27 21:23:59 10553 6

转载 USB转TTL、USB转RS232的实现

电平之间的转换PC机上的通信接口有USB接口,相应电平逻辑遵照USB原则;还有DB9接口(九针口),相应电平逻辑遵照RS-232原则。而我们的单片机上的串行通信通过单片机的RXD、TXD、VCC、GND四个引脚,相应电平逻辑遵照TTL原则。当然,新手小白买的学习板上肯定都已经集成了类似PL2303、CP2102之类的USB转TTL芯片,相应接口也变成了USB接口;有些学习板上集成的是M...

2019-12-27 14:32:36 4295

原创 STM32学习之路

序言 考研初试已经结束,结果还不得而知,我打算趁着这段时间,开始学习一下STM32,为毕业设计做准备。本来打算前两天就开始,一直拖到现在,赶紧开个记录贴,记录一下我的学习历程,再者,督促自己学习。准备阶段(注:由于现在是初级学习阶段,日后还会回来修改完善此部分,增加详细信息。) 硬件准备:正点原子精英开发板STM32F103ZET6 STM32F407VET6最小系统板 ST-Li...

2019-12-27 10:41:33 448

空空如也

空空如也

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

TA关注的人

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