自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 学习笔记——C语言嵌套循环

会根据前面字母的个数在后面补空格,让整体的长度达到8或者8的倍数,最少补1个,最多补8个。只写一个break;只跳出内循环,在while(1)中加个IF判断可以直接跳出。双重for循环,可以先确定内循环所做的事情,在确定外循环。要先标号 例如A: 再使用goto A;\t 制表符,长度可变的大空格。goto关键字可以在任意代码。循环嵌套从内部开始读作用。打印表格数据,让数据对齐。

2024-07-22 20:21:25 68

原创 学习笔记——C语言do while循环及高级循环

break :不能单独书写,只能写在循环语句或者Switch当中,表示结束跳出的意思。这样判断无限循环就可以直接把结束条件写进去,不用取反写在while里面。可以使用跳转控制语句:在循环的过程中,跳到其他语句上执行。continue:结束本次循环,继续下次循环。无限循环永远停不下来,下面不要再写代码。先执行再判断,循环体至少会循环一次。}while (条件判断语句);循环语句的高级格式——无限循环。do....while语句。无限循环代码格式,可以使用。

2024-07-18 10:52:29 145

原创 学习笔记——流程控制语句for循环

变量的生命周期:变量只在所属的大括号有效,所以求累加要在for循环外面定义变量。如果想每次循环都是全新的变量,那么变量就要定义在循环里面。for循环(初始化语句;初始化语句,条件判断语句,条件控制语句,循环体语句。累加求和 变量要定义在for循环的外面。先执行任务语句再执行i++

2024-07-09 17:43:51 185

原创 学习笔记——流程控制语句

if第三种格式和case if用于范围区别,case用于十种情况左右 switch执行的效率更高。2,分支结构程序在执行的过程中出现了岔路,只能选择一种执行有if switch语句 判断与选择。细节:在判断的过程中,如果判断的结果是一个数字,非0表示成立,0表示条件不成立。表达式是一种计算结果,可以在里面计算,根据switch跳到不同case。3:switch 语句把所有的选择一一列出来,根据不同的条件任选其一。1,顺序结构从上到下执行,程序默认的执行流程。case 只能是字符的字面量不能是变量。

2024-07-03 17:32:48 197

原创 学习笔记——运算符的优先级

左边第一个问号找冒号,如果过程中遇到其他问号,那么找冒号的数量加1。在实际开发当中,()优先级最高。一元 > 二元 >三元运算符。&& > || >赋值运算符。三元运算符嵌套 解题关键。

2024-07-02 15:45:19 151

原创 学习笔记——C语言三元运算符,逗号运算符

表达式1:表达式2;成立执行1 不成立执行2。第一步判断绝对值,第二步取余,第三步乘10。逗号运算符(分割符)

2024-07-02 15:10:29 95

原创 学习记录——C语言逻辑运算符短路效果

当左边表达式可以确定整个表达式的结果了,后面结果就不会运行,不会进行判断了。如图中所示,and成立之后,右边的值为非0都是成立的,只有0时不成立。a成立之后,右边不参与计算,无法自增了。

2024-07-02 14:38:40 281

原创 学习记录——C语言算术运算符

先i自增,变成11与j自减变成4,最前面i与最后面i都是11,运算完再自增自减。在window中,前缀是优先于后缀,前缀的运算先结束,在进行后缀的运算。考试专用,实际不这么用,1是属于先用后加,就说先把a赋值给b。关系运算符,运算结果是个数字。2是先加后用,加完再赋值。逻辑运算符,有一真就为真。

2024-06-13 15:48:00 171

原创 学习记录——C语言算术运算符

计算机中找个位十位百位的方法,个位直接取余10,十位,除10再取余10以此类推。转换的过程有,隐式转换,含义就是把取值范围小的,转换为取值范围大的。6、取余的数据,必须全是整数,且结果正负与第一个结果正负保持一致。当不同数据类型转换的时候,转成大的数据类型,往前补零。在代码中,要将取值范围大的,强制转换为取值范围小的。字符与数据转换的时候,会自动与ACI码表转换成数子。1、常用细节,整数的计算结果一定是整数。3、整数和小数计算,结果一定是一个小数。2、小数计算,结果一定是一个小数。

2024-06-04 19:57:36 105

原创 学习记录—C语言scanf函数

数据类型 变量名【占用内存大小】 = 字符串;英文:1给字母 , 符号 , 数字占用一个字节。中文:在vs或vc中,默认情况下占用两个字节。scanf函数多重数据输入。如何计算占用内存大小。

2024-06-03 17:54:57 158

原创 HAL库学习记录——HAL库文件详细与新建属于自己工程

在HAL库的开发中,官方下载专用的HAL库,其中不同的文件夹有不同的定义。首先介绍Drivers、CMSIS之中文件夹关键信息。那么我们如何新建属于自己的工程模版。最终我们需要的是操作用户层。

2024-05-08 16:40:35 143 1

原创 HAL库学习记录——配置寄存器

在之前51学习操作寄存器的时候,十分麻烦,首先要找到对应的寄存器配置地址,再进行操作。当我们引出结构体这个概念后,用结构体赋予寄存器首地址,然后用结构体的顺序去对应每个功能。定义好每个结构体后,利用指针强制转换这个结构体,用他去指向外设的受地址,那么这个指针内就是对应上每个外设的首要地址+偏移量。io,其实代表着定义这个结构体后,每次执行都要访问寄存器值,这样防止值变动后,系统不知道有变动。构建出底层之后,就要封装库函数,直接操作指针就方便很多。构建完引脚定义后,使用枚举体定义构建库函数来初始化引脚。

2024-05-08 14:13:01 234 1

原创 学习笔记_C语言指针

那么如何实现多返回值设计呢,在子函数定义了int *max 指针,然后在主函数中有声明int MAX这个参数后,内存空间开辟4个字节给int 调用子函数时,会申请属于*max的指针地址,64位计算机有8个字节空间,那么在调用子函数时,用上取地址&取MAX这个int数据地址给了这个指针空间,当子函数运行时候,根据指针地址索引到MAX这个存储空间,修改这个存储空间值,调用函数结束后 int MAX这个空间值也跟着改变了,就实现多返回值的改变,此时指针所占空间也销毁。

2024-04-30 15:59:05 155

原创 51单片机如何计算串口波特率

例如,配置TL1 TH1寄存器 0xF3那么换成十进制就是先换成2进制1111 0011 从左到右2七次幂累加起来就是243,一共会计时256s则 256-243=13那么13个数溢出,那么12MHZ的晶振在计数器12T的模式下1us振动一次,那么13us溢出一次,那么溢出频率0.0769230769230769/16=0.0048076923076923MHz=4807.69...HZ那么波特率就是4800,刚好等于设置的波特率。并且发送数据,编码后的数据是以ASCI编码形式显示,也就是16进制两位。

2024-02-20 15:39:02 454 1

原创 51单片机 串口通讯协议

T1溢出率控制波特率,SBUF是串口数据缓存寄存器,读写都用这个地址,发出收到一个字节的时候都会产生一个TI或RI中断。全双工可以看做是打电话,半双工可以看做是对讲机,同步通讯一般带有时钟线,通常称这些为总线协议。51单片机中使用UART作为总线。51单片机内部收发数据。串口通讯一般就四根线。

2024-02-19 10:02:07 619 1

原创 51单片机定时器

控制中断系统的本质就是控制单片机内部开关用不同寄存器表示内部线路的连接,不同的线路有不同的作用与功能。定时器是单片机内部资源,和原本delay函数不一样,不会占用CPU运行资源。SYSclk计时器时钟,可以由单片机提供,也可以由外部IO引脚提供。TL0与TLH计数系统,总共16位 65535个数。51单片机定时器有不同的工作模式。+12与+6分别为分频。定时器与中断系统原理图。

2024-02-02 15:57:58 374

原创 51单片机矩阵键盘

矩阵键盘是输入扫描型,通过不断的扫描输入端检测输入端信号。单片机IO口既可以识别输入输出,是弱上拉强下拉。调用两个函数实现Helloword。目的是为了减少IO口使用。

2024-02-02 14:07:46 464

原创 51单片机静态数码管显示

再用74HC25扩展输出能力,芯片本身高电平输出能力不行,需要外接芯片控制当前状态输出,CE为Chip Enable 使能接口,DIR是转向接口,可以选择左向右转向,右向左转向。要点亮一个数码管,首先用3-8转换器用三个IO接口控制8位输出,等于进制转换。利用芯片如图 G2A G2B为使能接口需要低电平。有参数有返回值的调用函数例程。先了解C语言重要概念,数组。封装出来数码管子函数调用。

2024-01-30 15:22:37 496 1

原创 51单片机按下按键,点亮一个灯

利用IF语句判断代码,读取寄存器中IO口数据,单按钮点下之后可以亮灭,头文件之中包含对P3引脚单独开启关闭IO的注释,其他头文件不一定有。实现功能,按下不松手的话,灯不会点亮。

2024-01-29 16:18:51 585

原创 嵌入式51之点亮一个LED

CPU通过指令直接访问寄存器,锁存当前输出状态,通过驱动器放大当前输出状态控制一组输出IO例如,8位CPU 控制8个一组寄存器。因此控制P2低位输出低电平,那么就要输出1111 1110转换成十六进制127。电阻为102 阻值为1K 10*10²,前两位有效数字,第三位是小数点位置。此处RP7电阻作用为限流电阻,所以点亮需要控制引脚输出低电平,点亮灯。全称 Light Emitting Diode 区分正负极单向导通。一般引脚长为正,负为短。

2024-01-24 18:24:57 324

原创 常量与变量

register:寄存器类型,资源少,速度快(建议型)只能定义局部变量,只能定义32位大小数据类型,没有地址,在寄存器中无法打印查看或使用。标识常量 (编程过程中不会改变) #define 宏定义,宏名用宏体替换,不检测语法,在预处理时候就完全处理了,占编译时间。extern:说明型,不能改变被说明变量或类型,拓展变量使用范围。区分:整型常量,实型常量,字符常量,字符串常量,标识常量。变量:在程序执行的过程中,值发生变化的值,保存特殊内容。auto:默认,自动分配空间,自动回收空间。

2024-01-23 15:25:39 402

原创 1、数据类型-二进制及数值类型的存储

进制转换,实数转换成二进制需要向前补齐到32位0,2进制转8进制可以用8421码,3个分一组,因为8进制最大就是4+2+1=7,16进制同理4个一组。32位变成8位肯定丢失精度,不同数据类型转换有两种,分别位隐式转换:自动向精度高的方向靠拢,显式转换:强制转换。在32位二进制中,31位是表示数据±,30-23位表示(8位)指数部分,0-22表示小数部分(精度部分)字符串类型 ASCII表 表示人们常看见的符号(三位十进制)(两位八进制)0表示046(10)30(8) A表示089(10)59(8)

2024-01-19 17:24:41 586 1

空空如也

空空如也

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

TA关注的人

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