自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 小米笔记本电脑重装C盘教程

文件下好后把U盘插上电脑,双击打开安装文件,会出现正在进行准备工作的界面,过一会就会弹出这样的界面,点击接受,后面的只用点击下一步,选择U盘后就会自动下载,这个时候会格式化U盘,所以最好提前把U盘里的重要文件也先保存下来。打开设置,在系统中找到恢复,找到高级启动,点击立刻重新启动,之后会进入高级启动界面,选择【疑难解答】,然后点击高级选项,选择U盘启动后,进入系统安装界面。我的电脑由于C盘爆满而出现了一系列的问题,有一些不知道的东西占了电脑硬盘空间,想直接全部清理,所以我将电脑的C盘进行了重装。

2025-09-06 21:30:06 395

原创 从零开始学习单片机18

不使用外部时钟时,选用第一个两个引脚PD0和PD1接的是外部有源的晶振,或者是其他芯片输入的时钟信号时,选择第二个;选择外部高速时钟和内部低速时钟(内部没有接晶振),HCLK选择72兆的频率,其他暂时不做修改,这样就完成了时钟源的设置。Debug支持多种模式,Serial Wire模式只需要两个引脚就可以烧录调试,其他的模式需要的I引脚较多,所以板卡选择Serial Wire模式。内部时钟源包括LSI(低速时钟)和HSI(高速时钟),使用内部时钟源就需要将图中的一二处勾选。

2025-08-30 22:08:30 384

原创 从零开始学习单片机17

第一个是工程生成的菜单栏,在这里可以选择工程的名字、路径等,第二个是代码生成的菜单栏,可以根据需要选择代码生成的精细程度,第三个是高级设置,性能不够时可以在这里改为LL库,还有生成函数的执行配置。在左边选择外设,中间部分进行相关配置,会自动绑定对应的IO,下方是模块的配置,校验位、停止位等都可以在这里配置,右边是引脚的框图,在这里可以查看引脚功能信息,并进行选择。芯片要运行起来,必须要有时钟源,在STM32中,可以选择外部或内部时钟作为芯片时钟源。外部接有源晶振或其他直接时钟输入源(旁路时钟源)

2025-08-29 21:12:35 513

原创 从零开始学习单片机16

库函数编程相当于是间接的寄存器编程,就是把寄存器的参数和配置封装成函数,可以调用函数进行外设初始化,厂家封装提供好的,只需要去操作厂家提供的函数,去初始化对应的一些外设,就可以完成对芯片的一些资源的使用。其中标准库是最早的,已经停止维护了,现在更多使用HAL库,LL库在特殊情况下使用,CubeMX现在里面只有HAL库和LL库。STM32的寄存器寄存器非常多,更复杂,一般用库函数进行编程,也就是API接口,这是与51单片机编程时最大的区别。51单片机的外设资源少,寄存器少,运行速度慢,价格便宜,容易上手。

2025-08-29 18:53:28 308

原创 从零开始学习单片机15

第二个595的Q0-Q7接到数码管的数据位,第一个595的Q7S是串行输出把输入的数据按同样的顺序去输出,接到第二个595的DS口上。51单片机使用了一个2位的数码管,为共阴型,为了节省单片机的IO口,使用了两片74HC595作为数码管的驱动芯片,共占用3个IO口(分别连接DS,STCP,SHCP)。LED灯虽然是逐个点亮的,但由于速度非常快,人眼看不出灿烁,可以认为是常亮,多位数码管的原理也是这样。Q0、Q1连接WE1、WE2,可以选择哪个数码管被点亮,切换速度足够快时,就像是常亮。

2025-08-25 22:27:53 351

原创 从零开始学习单片机14

Q0-Q7输出引脚,GND接地,Q7S串口的输出(芯片同时支持并口和串口的输出),MR复位,OE是使能引脚,SHCP(移位寄存器时钟输入)、STCP(锁存寄存器时钟输入)为时钟信号,DS为输入引脚。单片机控制数码管还存在一些的问题,51单片机的引脚电流能力只有1mA左右,驱动能力不足以直接点亮数码管,三极管电路可以增强IO的驱动能力,但每个LED都加上三极管电路,器件会很多,很麻烦。2.SHCP是上升沿的时候,芯片会读取DS上的信号,写入DS的数据,每写入一个数据时,移位寄存器中的数据依次移动一位。

2025-08-25 22:27:49 466

原创 从零开始学习单片机13

温度的数据由两个byte位组成,后面的CRC为降压位,确保数据在传输的过程中不会被外部的干扰所导致改变,湿度的数据也由两个byte组成,后面是湿度数据的CRC。要想设置重复率和周期转换频率,先要发一个起始的信号,然后发7个byte的地址,设备地址为0x44(0b0100 0100)取后7位,再加上一个读写的标志位,如果是写标志的话即为0(读为1),所以发送完起始信号后因该发送1000 1000。发送起始信号和地址,还有读的标志位(1),就可以等待从机的应答,从而逐个字节地去读取温度和湿度的数据。

2025-08-24 00:54:17 354

原创 从零开始学习单片机12

当 ADDR 接低电平时,传感器芯片的地址为 0x44,当 ADDR 接高电 平时,传感器芯片的地址为 0x45。编译上一次的代码并烧录到板卡中,用两根杜邦线分别连接逻辑分析仪和板卡上的SCL1和SDA1口(代码上模拟的两个IO口),连接逻辑分析仪和电脑,点击逻辑分析软件的Start后点击复位按键,找到数据并进行分析。SCL为高时,SDA从高变低,发送的数据为0x55(0b0101 0101),与原理图相符。连续转换模式,初始化一次后,芯片就会一直处于检测的状态中,可以随时读取最新的数据。

2025-08-22 22:43:44 272

原创 从零开始学习单片机11

发送一字节的函数,datasend和0x80相与,可以检测第一位是否是1,将datasend左移一位,再和0x80相与,就可以继续检测,直到数据发送完成。IIC读取数据:接收1bit的流程时SCL先为低电平,延时5us,变为高电平延时10us,等待数据稳定,读取SDA的值,再变成低电平并延时5us。主机等待应答信号:SDA变为高电平(使得总线处于空闲状态),SCL从低电平到高电平时,检查SDA是否是低电平,如果是,则获取到应答信号。从机发送应答信号:SCL从低电平到高电平再到低电平时,SDA都为低电平。

2025-08-21 22:34:01 340

原创 从零开始学习单片机10

高速模式,总线最大长度为0.4米,最大速率为3.4Mbit/s。IIC协议,又称I2C协议,两线式串行总线,可以用两个IO驱动多个子设备,用于连接微控制器及其外围设备,IIC属于半双工同步通信方式,同一时间内只能收或者发。选择发送数据的速率为50kbit/s,即周期为20us,半个周期为10us,发送数据前要先发送起始信号,SCL为高时,SDA从高变低,结束时SCL为高,SDA由低变高。一对多通信时连接的多个主机分为主机和从机,IIC总线的通信只能由主机发起,由从机应答,从机是不能主动去申请的。

2025-08-20 23:01:13 187

原创 从零开始学习单片机9

直流电机的两根线分别接入电源的正负极就可以使电机转动,将电机接入单片机,电机的IO分别对应DC_AN1(引脚P2^4)和DC_AN2(引脚P2^3)控制占空比就是控制IO的能量,占空比越大转速越快,占空比越低转速越低,用定时器控制占空比从而控制转速。若将代码改为 dc_an1 = 1;dc_an2 = 0;直流电机是指能将直流电能转换成机械能转动的设备。DC是直流电机的缩写。

2025-08-19 22:04:50 166 1

原创 从零开始学习单片机8

PWM是脉冲宽度调制的缩写,是一种通过调整脉冲信号的高电平和低电平时间比例来控制电路输出的技术,可以通过调整脉冲信号的宽度来控制输出信号的平均电压或电流,常应用于电机控速,开关电源等领域。占空比会影响输出的电流和电压,也就是输出的总能量,100%占空比时输出100%能量,50%占空比时,只会输出一半的能量。无源蜂鸣器:内部不带振荡源,需要控制器提供振荡脉冲才可发声,调整提供振荡脉冲的频率,可发出不同频率的声音。蜂鸣器有正负极,顶部印有+号的为正极,若蜂鸣器引脚没剪,则长的为正极。

2025-08-18 20:54:13 308

原创 从零开始学习单片机7

接收到有效数据时,会触发串口中断,这时候,开启串口中断相关的寄存器,就可以在中断服务函数中处理相关逻辑,不需要在大循环中一直判断。接受控制器先判断接收到的是否是高电平到低电平的起始位,之后再接受数据使RI寄存器标志位变为1,最后把数据填充到SBUF里。代码烧录到板子后,在串口助手中打开串口,选择文本模式,发送“O”时led灯亮起,发送“C”时led灯熄灭。RXD接收到数据之后,经过REN寄存器(允许接收寄存器),REN = 1时,允许接受数据。选择串口工作模式1,并使REN允许接收数据,有两种方式。

2025-08-17 22:15:33 272

原创 从零开始学习单片机6

配置好定时器预装载值后,使其产生一个波特率后,选择SMOD = 1(不分屏)或SMOD = 0(二分屏),再进行十六分屏后传送到发送控制器里,作为发送时钟,也就是定时器决定了发送的波特率。如果需要使用两个定时器,前面已经配置定时器0的工作模式 TMOD = 0x02 ,而后面又加入了TMOD = 0x20,则前面的配置会失效。SM0=0、SM1=0为模式0,SM0=0、SM1=1为模式1。SM0=1、SM1=0为模式2,SM0=1、SM1=1为模式3。模式1:8位UART,波特率可变(最常用)

2025-08-16 23:28:10 263

原创 从零开始学习单片机5

O 奇校验:a要传输的数据中(不包含校验位)有奇数个‘1’ 则校验位为‘0’, 反之为‘1’(例: 数据‘1111 000’ 偶数个‘1’ 所以添加校验位为‘1’ 整体为‘1111 0000 1’)串行通信是指使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度,只需要少数几条线就可以在系统间交换信息,先传输低位再传输高位(传输线少,长距离传送成本低,更普遍)E 偶校验:要传输的数据中(不包含校验位)有偶数个‘1’ 则校验位为‘0’, 反之为‘1’单工通信:数据只能单方向传输。

2025-08-13 20:09:19 399

原创 从零开始学习单片机4

以定时器/计数器的模式1为例,GATE、INT0、TR0(可位寻址)一起作为定时器开关的控制寄存器,GATE=0,设置软件启动,INT0=1 设置为硬件启动,TR0=1时允许T0开始计数。:系统时钟(常用作定时器)和外部脉冲(计数器),通过C/T位选择,C/T=0是系统时钟,C/T=1是外部脉冲。模式3:两个8位计数器(禁用定时器1,把定时器2设置为两个8位计数器)M1=0,M0=0时为模式0,M1=0,M0=0时为模式1。M1=0,M0=1时为模式2,M1=1,M0=1时为模式3。

2025-08-12 22:30:29 432

原创 从零开始学习单片机3

因为它不能位寻址,只能设置一整个寄存器,如要想让PX0H这位置为0,PX2H这个位置为1的话,不能直接写成PX2H=1 PX0H=0,只能写成 IPH= 0x40(0b0100 0000)(在Keil C51中数不能直接以二进制形式赋值,所以需要设置寄存器某一位为1,用10进制或16进制显示,0000 0001用十六进制表示为0x01)INT1对应的中断寄存器为IT0,IT0寄存器用来配置中断的触发方式,IT0=0时,低电平触发外部中断0;如图,使用中断时需要配置对应的寄存器。

2025-08-11 21:40:52 291

原创 从零开始学习单片机2

轻触按键可以理解为两根导线,按下时导线连接,引脚IO接地,变成低电平,松开时导线断开,引脚被上拉到电源,引脚又变成低电平。写出代码后烧录到单片机,按动按键时,LED有时只是微微闪动,并不保持常亮。这是因为机械按键存在抖动现象,需要加上去抖代码,防止按键的误触发。P4未定义是因为头文件中没有P4 ,可以在烧录软件中找到范例程序,选择对应的单片机复制代码后粘贴到自己的程序上,之后就不会报错了。高电平是2.4V--3.3V,低电平0V--0.8V。要使按键去抖,需要在判断按键等于0的时候加一个延时函数。

2025-03-30 19:08:30 434

原创 从零开始学习单片机1

单片机是一种集成了处理器、储存器和外设接口等多功能于一体的微型计算机,简称MUC。单片机的优点是体积小功耗低、成本低,可以实现高效地控制和处理任务。51单片机就是以8051为内核开发的系列单片机。

2024-12-01 16:48:44 363 1

原创 从零开始学习C语言12

指针进阶1.字符指针字符指针不仅可以指向一个字符,还可以指向字符串本质上是把“hello world”这个字符串的首字符的地址存储在了ps中str1和str2是两个不同的字符串,内容相同,首元素地址肯定不同str3和str4指向的字符串是常量字符串,常量字符串是不能被修改的,在内存中只会储存一份,所以str3和str4指向的是同一个地址常量字符串是不能被修改的,否则会导致程序崩溃数组名是首元素的地址,但有两个例外:1)sizeof(数组名)- 数组名表示的是整个

2024-11-04 13:21:22 338

原创 从零开始学习C语言11

打印时需要整型提升,a和b补充符号位,补成11111111111111111111111111111111(补码) 即-1。大端字节序:把数据的底位字节序的内容存放在高地址处,高位字节序的内容存放在底地址处(大端存储)小端字节序:把数据的底位字节序的内容存放在低地址处,高位字节序的内容存放在高地址处(小端存储)char ,short ,int ,long ,long long(有/无符号)short //短整型。long //长整型。long long //更长的整型。

2024-11-02 10:21:35 262

原创 从零开始学习C语言10

const修饰变量的时候,如果放在*的右边,修饰的是p,表示指针变量不能被改变,但是指针指向的内容可以被改变;如果放在*的左边,修饰的是*p,指针指向的内容不能通过指针来改变,但是指针变量可以改变。i的地址与arr[11]的地址相同,而11<12,i不断由0到11,陷入了死循环,如果反过来先定义数组再定义i,就不会出现死循环,会报错,因为是非法访问内存。i和arr是局部变量,局部变量是放在栈区上的,栈区内存一般先使用高地址空间,再使用低地址空间,而数组随着下标的增长地址由高到低变化。

2024-10-11 10:35:15 317

原创 从零开始学习C语言9

初始化:定义变量的同时赋初值数组利用“ { } ” 来初始化,结构体也通过“ { } ”来初始化。

2024-09-04 20:56:02 970

原创 从零开始学习C语言8

指针是编程语言中的一个对象,利用地址,它的值直接指向存在电脑储存器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说地址指向该变量单元,因此,将地址形象化的称为“指针”,意思是通过它能找到以它为地址的内存单元。指针是用来存放地址的,存放指针的变量称为指针变量,存放在指针中的值都被当做地址处理。例:char*的指针解引用只能访问一个字节,int*的指针解引用能访问4个字节。概念:野指针就是指针指向的位置是不可知的,随机的,不正确的,没有明确限制的。指针-指针得到的两个指针之间的元素个数。

2024-08-25 16:48:27 552

原创 从零开始学习C语言7

这已经是学习C语言的第7个星期了,能坚持这么久对我来说已经很不容易了,继续加油吧!

2024-08-21 21:50:49 823

原创 从零开始学习C语言6

学习C语言的第6个星期,这个星期学习的是操作符。

2024-08-14 19:54:16 281

原创 从零开始学习C语言5

函数的定义:指函数的具体实现,交代函数的功能实现函数声明:1.告诉编译器有一个函数叫什么,参数是什么,返回类型是什么2.函数的声明一般出现在函数的使用前,要满足先声明后使用3.函数的声明一般要放在头文件中。

2024-08-07 22:46:52 224

原创 从零开始学习C语言4

学习C语言的第四个星期。

2024-07-31 20:49:10 158 1

原创 从零开始学习C语言3

在while循环中,break用于永久的终止循环,continue的作用是跳过本次循环continue后面的代码,直接去判断部分,看是否进行下一次循环。表达式1为初始化部分,用于初始化循环变量的,表达式2为判断条件部分,用于判断循环时候终止,表达式3为调整部分,用于循环条件的调整。break 跳出,停止(出口) (break语句的实际效果是把语句列表划分为不同的部分)C语言是结构化的程序设计语言,包括3种结构:顺序结构,选择结构,循环结构。随着学习的深入,学习的内容也变得越来越难。循环语句--循环结构。

2024-07-24 22:42:57 173

原创 从零开始学习C语言2

指针和结构体比较难,不太懂到底要用来干嘛,函数的循环的判断也有些困难,即使老师讲得很清楚,也还是不太清楚怎么到下一步的。学习靠的是自觉,加油!1.关键字是C语言提供的,不能自己创建关键字,变量名不能是关键字。(2)修饰全局变量使得这个全局变量只能在自己所在的源文件内部可以使用,其他源文件不能使用。指针就是地址,指针的大小是相同的,在32位平台是4个字节,64位平台是8个字节。(1)修饰局部变量,改变了局部变量的生命周期(本质上是改变了变量的储存类型)(3)修饰函数(与修饰全局变量一样)

2024-07-17 21:47:30 161

原创 从零开始学习C语言1

1.一眼望去和视频里的差不多,但仔细一看这里少了个括号那里少了个分号,每次出现错误,总要检查一下是不是哪里的分号没有加;4.C语言的注释风格不支持嵌套使用,快捷键Ctrl+k+c可以对选中行注释,快捷键Ctrl+可以对选中行取消注释~~~在学习的过程中出现了一些问题,有的自己还能解决,不能解决的就去百度或者找别人帮忙。因为大学想要学习计算机,所以就在家人的建议下,从暑假就开始学习C语言。还只是刚开始学习就遇到这么多问题,后面的学习一定不会容易,加油吧!3.使用vscode编译代码,代码里不能出现中文;

2024-07-12 12:34:03 262 1

空空如也

空空如也

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

TA关注的人

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