自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 STM32(OLED)

每个像素点都是一个单独的发光二级管,每个像素都可以自发光;不像LCD需要有背光才可以显示(LCD像素本身是不能发光的)OLED屏幕省电;在魔术棒>Debug模式中,如果没有连接硬件,可以使用左边的仿真器。进入调试模式(上面窗口是翻译成的汇编程序(反汇编窗口),下面是c语言程序;使用引脚直接给OLED供电也可以(OLED功率很小)(直接输出低电平和高电平(需要供电的引脚))STM32引脚上电,不进行初始化,默认浮空输入模式(不会输出任何电平)响应速度快,使OLED有更高的刷新率,总线时序快,避免阻塞时序;

2024-05-22 20:41:16 171

原创 STM32(c语言基础)

原因:左边名字比较长,而且int的位数(字节大小)根据操作系统的不同还有可能不一样,(int对于32位操作系统是4字节,64位操作系统是8字节),还有就是有时候名字和存储内容不一样,比如char关键字,是存储字符型数据,但是我们经常拿来存放整数而不是字符。松手时候引脚悬空,断开(需要引脚PA0里面再接一个弱上拉(上拉输入VDD接通),保证引脚的稳定性,阻值要大,防止对输入的影响)引脚悬空,此时是高电平。注意:链表中,存储的地址,就是下个节点的地址,和存储地址单元 是一个东西!下图,默认是弱上拉高电平模式;

2024-05-01 21:41:26 921

原创 STM32-GPIO(1)

我们在stm32的外设寄存器描述文件(stm32f10x.h)中,又包含了conf.h文件,所以,我们加入stm32外设寄存器描述头文件(stm32f10x.h)就可以库函数和寄存器文件相对应,我们加入stm32f10x.h一个头文件就包含全部库函数头文件!注意:位设置/位清除寄存器,包含两个寄存器,一个是位设置一个是位清除,这是因为一个GPIO只有16个端口,寄存器都是32位的,刚好可以设置两个16位寄存器在一个32位寄存器中,16位刚好对应端口数!执行逻辑:当输入电压大于上限阈值,输出就会变为高电平;

2024-04-16 21:04:33 780

原创 STM32F1(32位微控制器)

不给时钟的情况下,操作外设是无效的(外设不会操作,降低功耗),我们通过RCC,给这些外设时钟使能,从而操作外设。如何需要RTC实时时钟功能:需要再接32.768KHz的晶振(3,4引脚)(32.768KHz是2^15次方,通过电路的2^15次方分频,就可以生成1s的时间信号,从而完成实时时钟)复位电路:低电平复位,按下按键的时候,被拉到最低(电容也放电),是低电平进行复位,然后电容逐渐充满,低电平到逐渐高电平;RTC 实时时钟:进行时钟显示,可以接备用电池,掉电不丢失,进行进行时钟功能。

2024-04-13 21:50:58 617

原创 红外遥控(外部中断)

状态机(0)空闲状态,接收到下降沿将计时器打开开始计时,然后将状态机(1)转为寻找状态(寻找头部信号,Start/Repeat信号)然后判断是Start还是Repeat状态,如果是起始信号就会将状态机(2)转化为解码状态,解码32位;当我们发送完数据之后,我们必须将这个逻辑进行终止,我们需要下降沿,有了下降沿我们才知道这个高电平的时间,从而判断1或者0,然后低电平96us之后,我们一直高电平,直到有信号又要发送!剩下这38KHz的频率,再进行放大,再将38KHz滤除,就可以在很强红外光中,将信号进行传输!

2024-04-06 09:27:08 734 1

原创 直流电机(PWM)

舵机:长条形的,中间有一个转轴(连着外面称作旋转臂)引出来三根线:电源正极,电源负极,中间线接一个编码:输出电平进行控制(根据电平持续的时间,来控制旋转臂固定在某个角度)PNP型三极管,是IN电流越小,输出的电流越大,所以给低电平,使得三极管导通;电机属于功率较大的负载,直接接在单片机I/O口上面(弱上拉)驱动能力是不够的,而且可能损坏单片机,需要驱动电路。一般直流电机有两个电极,当电极正接时,电机正转,电极反接时,电机反转。将对角的三极管连接,然后再将另一对焦的三极管连接,实现电机的反向(电流是相反的)

2024-03-29 16:18:58 341 2

原创 进制术语和小数存储方式

0.432 011 2^-1 2^-2 2^-3 0.25+0.125=0.375 ,使用0.375进行近似,都不是准确数(可以进行往下乘会无线接近这个数字,然后直到位数存储满)原码:0010 1100 2^5+2^3+2^2=32+8+4=44。双字节:WORD,汉字一般双字节(Windows)三字节(Linux)3.将减法计算变为加法计算,只会加法(10-10变成10+(-10))(-0变为-128,+0为0)有符号的8位,范围是-128~+127。

2024-03-19 20:05:33 151

原创 c语言(数据类型)(2)

注意:变量名和常量名也称作标识符(不能使用系统关键字,首字母是字母或者下划线,后面可以是数字、下划线、字母,并且区分大小写)长整型在window系统下是4字节,在(32位)Linux下是4字节,在(64位)Linux下是8字节。前面,可以将屏幕暂停)注意: 在定义一个变量后,会在计算机内部开辟出此变量的数据类型所需要的内存空间,准备存放数据!(1)使用约束变量的方式定义,此种定义方法是局部常量,只能在定义的函数内使用,不能全局使用。(2)宏定义 此种定义的常量是全局常量,可以在任何函数使用。

2024-03-18 21:58:30 359

原创 DS18B20温度传感器

给拉到高电平)再从机进行响应(拉低,都是直接拉下来,回去是释放,慢慢收回去)然后释放。

2024-03-17 16:59:36 2162 1

原创 全部进制转换

十进制转成十六进制:除十六反序取余法(也可以先转成二进制,再变为十六进制,四个二进制是一位十六进制)十进制转成八进制:除八反序取余法(也可以先转成二进制,再变为八进制,三个二进制是一位八进制)2^3+2^1=10 十进制。二进制 八进制 十六进制。十进制转二进制:除二反序取余法。十六进制转换成十进制:权值法。八进制转换成十进制:权值法。二进制转成十进制:权值法。1010 二进制。

2024-03-15 17:19:37 341 1

原创 AT24C02(I2C总线)数据存储

通过数据总线,读取数据,第一个节点在数据线,读出为1,其他两个也是1;其他的数据线,是悬空状态,我们暂时命名为0,即为1110 0000,第一根地址线,我们就存储了1110 0000。注意:MaskROM在做的时候,根据一个数据表,直接就做好数据表的内容,存储好了数据。想象列在行上面悬空,节点处向上接一个二极管,列是数据总线,存放数据,不能从列走到别的行进行影响。由一个Y译码器(输出并行8位数据),通过串行数据选择端,变成串行数据,一位一位将数据输出。WP:写保护,高电平,即不让写入,保护芯片。

2024-03-12 20:54:41 989 1

原创 蜂鸣器使用

(都要这样接,给指定的电平,才有驱动,另外的没有驱动能力,直接像断开)无源蜂鸣器:内部不带振荡源,需要控制器提供振荡脉冲才可发声,需要控制器提供振荡脉冲才发声,调整提供振荡脉冲的频率,可发出不同的声音。在控制信号那串联电阻,将控制信号电流减小了,通过小的控制信号,就可以驱动外设做事,节省单片机的资源,不用任何都亲力亲为。注意:中间接了一个非门(如果想导通,电平需要不一样,这边蜂鸣器接高电平,那边应该为低电平)所以给1,蜂鸣器会响。PNP:低电平导通,即小电流越大,越不导通,通过的电流越小。

2024-03-05 09:54:44 366

原创 数据结构(1)二分法,移除元素

同理,中间值大于目标值,目标值在左半部分(左半部分不用修改左边起始值left,只需要修改右边的终止值right=middle-1)(right=middle-1,这样更新范围是因为,右边是闭区间,right也是可以取值的,此时的中间值已经大于目标值,所以此时的中间值不是我们要找到,右边的终止值,可以向左移动一位。最后是要删除的,慢指针不移动了,返回慢指针,即数组长度。(1)目标值小于某个元素,即目标值就排在此元素之前,也就是顶替此元素的位置(下标),返回此元素的下标,也就是返回插入目标值后,目标值的下标!

2024-03-05 09:53:29 850

原创 DS1302实时时钟

(4)X1、X2:32.768KHz晶振(有关实时时钟的芯片,接的晶振都是32.768KHz,方便易用,精度较高)DS1302可以对年,月,日,周,时,分,秒进行计时,还有闰年补偿以及不同月份天数不同的功能。解决:我们将时钟调换位置,先给0,再给1,以上升沿为结束,这样,在写入结束时,还未开始读取。注意:内部有一些寄存器,寄存器里面存放的就是我们的时钟数据,通过读取显示,写入改变时钟信息。(3)不能掉电继续运行,用这个芯片掉电不丢失数据,会继续运行,下次开启,是正确时间!同理,可以进行时钟写入。

2024-02-25 21:13:01 1017

原创 LED点阵屏(1)

首先,通过串行的方式,将数据给予移位寄存器,作为输入。(2)控制时钟来一个上升沿,就会将串行数据1,写入移位寄存器的第一个位置(从上到下:1空空空空空空空),然后再将上升沿进行清零回到默认状态(单片机上电默认是高电平,我们要对上升沿移位 SERCLK进行初始化为低电平,否则高电平则会进行移位)(3)将SER清零,此时SER的串行数据是0,然后再给予上升沿移位 SERCLK一个上升沿,从而将0输入移位寄存器,之前的 1 向下移动一位(从上到下:01空空空空空空),再将SERCLK清零,变为默认低电平。

2024-02-22 22:39:52 927 1

原创 c语言(程序编译和执行)(1)

计算时候,先将数据放入寄存器,然后通过控制器控制运算流程,放入运算器中进行运算,再返回结果到寄存器中,再回到内存中,完成数据处理。我们所编写的程序,还有应用程序,如qq,微信,游戏等,都放在硬盘中,也就是外部存储设备。2.CPU对外是通过总线(地址、控制、数据)来和外部设备进行交互的,总线的宽度是8位(寄存器的宽度也是8位),那么这个CPU就称作8位CPU。(得到.i文件是只进行预处理的内容,代码在最后,上面的一切都是展开,条件编译,会将注释删掉,并且不检查语法)即为代码区,数据区,栈区,堆区。

2024-02-21 20:49:06 797

原创 操作系统(2)

并发:时间管理大师(在细小的时间间隔内,还能再进行细分,然后进行交替发生,不是同一时间发生,是同一时间间隔发生的) 两个或者多个事件。多核CPU:同一时刻可以同时执行多个程序,多个程序并发的执行(在不同的屋子,可以同一时间执行,在一个屋子里只能一个一个来执行)单核CPU:可以跑若干程序,实际上只有一个CPU,看起来像有若干个,其实都是一个CPU在跑。(资源给了,没有归还,此时程序就停下来等着,啥时候资源来了,再往下执行)异步:多个程序并发执行,由于资源有限,执行不能一贯到底,走走停停,以不可知速度推进。

2024-01-11 10:56:45 352 1

原创 操作系统(1)

程序员使用c语言的库函数(如printf),库函数在底层实现时候使用了系统调用(一系列系统调用组成程序接口),收到系统调用的请求,控制在硬件上(显示器)显示出hello,world。在硬件上安装的操作系统,提供友好美丽的交互接口(我们只需要告诉操作系统,我们要的服务,操作系统会将需求翻译成二进制告诉硬件,硬件从而执行指令) 封装思想。(3) 我们在运行QQ的时候,是正在被处理机(CPU)处理,处理机管理(分配处理机资源)(4)视频聊天,需要用摄像头这个设备分配给QQ使用,操作系统将设备分配(设备管理)

2024-01-11 10:55:43 367

原创 操作系统的运行机制

(让出CPU之前,会内核程序执行一条特权指令,讲PSW的标志位设置为0,也就是用户态,然后让出CPU使用权,使之运行)。7.这个非法事件会引发一个中断信号,CPU检测到中断信号后,会立即变成“内核态”,并停止运行当前应用程序,转而运行处理中断信号的内核程序。用户态>内核态,由中断引发,是硬件自发的完成变态的过程,触发中断信号意味着操作系统强行夺回CPU的使用权。内核程序:开发操作系统,许多的内核程序组成“操作系统的内核”,简称为“内核(kernel)”。应用程序:在操作系统之上跑的这些程序,程序员编写的。

2024-01-10 21:43:46 495

原创 LED控制

我们需要先生成1ms的延时函数,因为执行一次这个函数就是1ms,这样我们在外面再套一个while循环,传入xms(要延迟的时间),执行一次,xms减一,当xms=0时,就跳出循环,此时,这个延时器也就运行了,我们需要延迟的时间,从而达到延迟随机指定时间的效果。由于单片机是执行完main文件,再重头进行执行,这样重新执行(工作频率高,速度很快,所以看不出来),这样容易产生错误,不如将指令写入while循环中,条件为1,这样会一直执行循环,而不是再重头只想main函数。串联电阻进行限流,别超过LED额定电流。

2023-11-08 22:15:08 45

原创 51单片机-开发版

电源滤波电路:由于电源供电,可能不稳定,时大时小(像水流一样,我们通过电容,先放到大水池里面再从大水池里面,流出比较稳定)插拔有瞬间的干扰,通过电容保持稳定,高压,先充电容,维持正常,低压从电容里面放电,维持正常。上电自复位电路:单片机引脚是高电平复位,上电一瞬间,由于电容没有储能,是需要先给电平储能,是通的,然后rst就是高电平,进行复位,充满电以后,就是断路了,就是低电平不复位(stm32,是低电平复位)晶振电路:通过晶振电路推动单片机指令执行,晶振震动一下,单片机推进一下指令,频率越高运行速度越快。

2023-11-08 15:48:45 48 1

空空如也

空空如也

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

TA关注的人

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