自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数组指针和二维数组使用

【代码】数组指针和二维数组使用。

2024-11-17 01:34:15 142

原创 回顾二维数组——数组指针部分

当运行下面的代码的时候,会有警告,偏移量不同,arr++偏移的是整行数组,与注释的p++不同,如果p=&arr[0][0],p++表示的就是依次、连续的12个元素地址,偏移一个整型变量;因为数组元素是连续的地址空间,结果就会从arr[0][0]开始输出完整的12个数据,换成p=arr,arr++ 就会发出警告;分析:printf是从右往左开始输出打印的,先进行++p2后再p2,暂时先分开写。//能不能定义一个指针,让指针偏移的时候,也偏移对应大小的数组?//数组指针,定义一个指针,指向一个数组。

2024-11-15 00:33:22 378

原创 安装VMware Tools选项显示灰色以及连接不上服务器,下载出错的正确解决办法

3.安装是灰色的,可以试试在虚拟机开机后,出现紫色桌面前的这个时候,点开虚拟机-安装vmtools。亲测这个时间点按钮会亮。选择“虚拟机设置”,分别添加一个“软盘”和一个“CD/DVD”,并将所有软盘和CD/DVD(包括自带的)“连接”选项。改时间:找到settings,小三角下,不同版本可能不同。2.关闭虚拟机重启即可,若还不行,继续看下去。为“使用物理驱动器”

2024-11-08 19:24:58 2526 1

原创 I2C通信快速掌握

I2C总线,全称Inter-Integrated Circuit(互连集成电路),是一种由Philips(现NXP半导体)公司在1980年代初开发的同步 串行 半双工通信总线。

2024-10-31 15:37:45 678

原创 STM32中断控制点灯

/函数参数:响应中断号,抢占优先级,响应优先级 HAL_NVIC_EnableIRQ(EXTI0_IRQn);1.使能GPIO时钟: __HAL_RCC_GPIOA_CLK_ENABLE();按键开关引脚PA0,低电平触发,也就是检测该引脚是否为低电平,注意按键要接上拉电阻。中断服务函数选择中断线EXTI0,故函数形式 EXTI0_IRQHandler。3.设置NVIC(中断优先级分组,设置中断优先级,使能中断)

2024-09-27 00:19:43 655

原创 sizeof和strlen的区别

sizeof p此时结果为 :8 与char * 结果一致,同理可证int * ,double * ,函数指针 结果一样,都表示用8个字节来表示地址。由此可知:sizeof算的是整个字符空间的长度,而strlen算的还是有效字符的长度。上面的例子中未给cchar[]写入字节数 ,本来数组是空的然后将Hello写入其中。strlen计算有效字符的长度。sizeof计算指针变量会如何表示?若提前给数组写入字节数会怎样?

2024-09-15 19:58:58 203

原创 PWM差速电机

如果电机存在一定的启动延时,这通常是指从接收到第一个PWM信号到电机实际开始响应的时间。当你设置的PWM频率很高(如1kHz),而电机的响应跟不上这个频率,就可能导致电机在开始阶段有一个明显的滞后,直到积累到足够的脉冲宽度才能达到预期的速度。当设定定时器为每10微秒发送一次宽度可变的脉冲,而整个PWM周期是1毫秒(即1000微秒),这意味着每个完整的周期内会发出100次这样的脉冲。3.差速调节转弯时发现定时器1控制的电机运行过程中发生抽抽,运动不连贯,查询代码发现TL0、TH0没有更改为TH1、TL1。

2024-09-14 02:35:53 706

原创 结构体的基本认知01

声明一个结构体表示的是创建一种新的类型名,要用新的类型名再定义变量2.1定义结构体类型(注意大括号结尾要加上分号“;”)下面声明一个学生基本信息的结构体类型 告诉系统这是个结构体struct Student //一般结构体名首字母要大写//每一项元素后都要加上分号int num;int age;//双精度浮点型( double 类型)使用 %lf 是 Double类型占位符2.2结构体变量的定义 (3种)

2024-09-06 00:17:15 892

原创 EC03-DNC 4G通信模块

1.EC03-DNC简介E840-TTL(EC03-DNC)是为实现串口设备与网络服务器,通过网络相互传 输 数 据 而 开 发 的 产 品 , 该 产 品 是 一 款带 分 集 接 收 功 能 的LTE-FDD/LTE-TDD 无线通信数传模块, 支持 LTE-FDDLTE-TDD 网络数据连接,用户只需通过简单的设置,即可实现串口到网络服务器的双向数据透明传输软件和用户手册下载地址id=11022. 模块使用2.1模块引脚图。

2024-09-02 22:27:05 632

原创 单片机通过串口向电脑发送字符串

串行发送数据时,CPU向SBUF写入数据,此时99H表示发送SBUF;串行接收数据时,CPU从SBUF读出数据,此时99H表示接收SBUF。发送缓冲器只能写入而不能读出,接收缓冲器只能读出而不能写入,因而两个缓冲器可共用一个地址码(99H)由于UART是异步串行接口,通信双方的时钟频率不同,因为硬件不同所以就要约束他们的通信速度,就叫。接收数据时,外部数据串行送入移位寄存器,之后再并行送入SBUF(收)。发送数据时,内部数据并行写入SBUF(发),然后再串行送出。),数据位,停止位(

2024-09-01 23:43:13 1832

原创 宏定义#define

define 宏名 字符串该语句作用是用PI替代3.14159,在编译源程序过程中遇到PI就替换为3.14159.宏定义的好处:比如要替换程序中的某个常量时,只需改变#define命令行,整个程序的常量都会改变,大大提高了程序的灵活性。(宏定义不是C语言,不需要在末尾加分号。#define 宏名 (参数表)字符串 //注意宏名与带参数的括号之间不可以加空格#define MIX(a,b) ((a)*(b)+(b)) /*宏定义求两个数的混合运算*/main()

2024-09-01 01:59:02 285

原创 PWM控制舵机

如下图:为最便宜的sg90舵机, 常用三根或者四根接线,黄色为PWM信号控制,旋转扭矩大,不能调速,控制角度垃圾桶项目开盖用、智能小车的全比例转向、摄像头云台、机械臂等180°、扭矩:2.0kg/cm(4.8V),2.2kg/cm(6V)

2024-08-26 20:55:32 771

原创 脉宽,频率,占空比

待整理.....直流电机调速器。脉宽调制的全称为:Pulse WidthModulator、简称PWM、直流电机调速器就是调节直流电动机速度的设备, 由于直流电动机具有低转速大力矩的特点,是无法取代的, 因此调节直流电动机速度的设备—,由于它的特殊性能、常被用于直流负载回路中、灯具调光或调速、就是利用(PWM)原理制作的马达调速器、PWM调速器已经在:工业直流电机调速、工业传送带调速、灯光照明调解、计算机电源散热、直流电扇等、得到广泛应用。Pwm 电机调速原理。

2024-08-25 22:13:24 798

原创 定时/计数器相关代码

include //头文件内容// 循环右移 P2=0xFE// 循环左移定时器不关,会一直运行下去, 但是它的初始值已经变为0了,所以如果你不想关定时器,就必须重新给初值就可以了。

2024-08-25 03:46:51 464

原创 基于AT89C51单片机的简易电动车报警装置

所需材料:51单片机开发板、继电器模块、震动传感器模块、高功率喇叭、433M无线发射接收模块、杜邦线若干。

2024-08-24 03:19:56 301

原创 1.Linux创建运行一个C代码程序

*先写个总结*/输出当前位置的文件列表 su命令进入管理员模式创建文件夹 mkdir dir进入当前文件夹下、在当前文件夹下创建文件Ctrl+L清屏Ctrl+alt+T打开terminal。

2024-08-19 01:16:33 314

原创 博客摘录「 16:定时器和计数器」2024年8月17日

具体就是TR=1开启计数,TR=0结束计数。当timer用来计数时,很关键的就是什么条件下计数,什么条件下不计数。当GATE=0时计数条件只有TR1一个(TR1=1就计数,TR1=0就不计数),当GATE=1时是否计数不仅取决于TR1还取决于INT1引脚(P3.3),实际规则是:当TR1=1并且INT1引脚也为高电平时才会计数。若TR1=1,则与门打开,外部信号电平通过INT1引脚直接开启或关闭T1,当INT1引脚为高电平时,允许计数,若TR1=0,则与门被封锁,控制开关关闭,停止计数。

2024-08-18 00:11:01 172

原创 定时/计数器

更精细的是,每个字节可以进一步细分为8位,每一位都有独立的地址,称为位(bit)。(3)启动定时/计数器。如果采用软件启动,TCON中的TR0或TR1置1,如果采用硬软共同启动方式,不仅要把TCON中的TR0或TR1置1,还要相应的外部启动信号为高电平。计数器溢出:S1闭合时,计数器从初值开始,对脉冲进行加1或减1计数,当加到或减到最大最小值时,计数器产生溢出,将相应的溢出标志位TF置1.////设置定时器的工作方式并启动定时器后,定时器便会按照设定工作方式独立工作,不在占用CPU的操作时间///

2024-08-17 23:02:55 2066

原创 c语言中if语句后有大括号和没大括号有什么区别

c语言中if语句后有大括号和没大括号有什么区别。

2024-08-17 04:32:10 347

原创 minGW最新下载与编译器安装

2.下拉找到要下载的版本,一般选择稳定性较强的版本这里推荐8.1.0。选择哪个都可以,后面英文后缀无关紧要,不过要对应自己电脑。3.之后跳转便可自动下载。1.进入网站选择文件。

2024-08-14 05:05:29 1076

原创 二维数组元素地址验证

a+1偏移:a数组所包含的3个行元素,a+1则在行元素中进行,1偏移为9,3偏移为11;a+1偏移了16个字节,这要看这个二维数组有4列每一行4个元素,4x4=16 (int型4个字节)a[0]+1 子数组的名字也就是子数组的首地址加一,偏移的结果为3,a[0]第一列加一。a[0]+2 结果为5。

2024-05-15 23:38:07 226

原创 指针变量的赋值

注意:给指针变量赋值与给其他变量所赋的值不同,给指针变量赋值只能赋予地址,而不能赋予其他任何数据。2.先定义指针变量后进行赋值。

2024-05-07 21:23:18 678 2

原创 二维数组与指针

a[0]是第0行的首地址,那么&a[n]就是第n行的首地址。

2024-04-14 23:22:31 256 1

原创 指针变量指向一维数组,输出数组中元素

这有个问题,为什么明明输入数组a[5]=3,结果却导致了b[0]=3,是把多输入的数内存地址搞错了吗?

2024-04-13 23:59:10 282

原创 一维数组------指针引用一维数组

规律:*(p+1)==arr[1]=>*(arr+1) *p==arr==*(arr+0) 因为相等,所以两边同时去*=> p==arr。由上可以看出int占用四个字节,元素arr[i+1]的地址等于arr[i]的地址+sizeof(int)注意:指针指向的是元素的地址,数组名代表数组在内存的首地址p=arr与p=&arr[0]等价。arr[0]==*p arr==*p 由上两式=>arr==arr[0]可看到*p==arr[0] *(p+1)==arr[1]

2024-04-12 23:20:18 158

原创 指针和数组名///数组与指针见怪不怪

系统提供一段连续的内存来存储数组中的各元素,内存都有地址,指针变量就是存放地址的变量,如果把数组的地址赋给指针变量,就可以通过指针变量来引用数组了。1定义一个数组时,系统在内存中为数组分配一个存储空间,

2024-04-11 23:25:55 214 1

原创 字符数组/字符数组初始化的三种方式

在C语言中,使用字符数组保存字符串,一个一维数组保存字符串中的每一个字符,此时系统会自动为其添加“\0”作为结束符。但是如果用字符逐个赋值的话就不用“\0”结束符了,可以简单理解为一个字符就已经结束了,但是一串字符的就必须找到结束符才算结束。在初始化字符数组时,每一个元素的字符都是使用一对单引号“''”表示的,因为输出的类型是字符型,所以printf函数中使用的是。(1)逐个字符赋给数组中的各元素 char cArry[5]={'H','e','l','l','o'};

2024-04-10 23:10:06 1731 1

原创 指针常量与指针变量

例如printf(“sizeof point is %d\n”sizeof(p*));只要是个指针,他就是8个字节表示一个地址。指针常量不允许更改,指针变量可以++

2024-04-10 13:27:06 365 1

原创 auto 变量与static变量

对于局部变量static变量是与auto变量相对的,在语句执行期间,static变量将始终保持它的值,并且初始化操作只在第一次执行时起作用。在之后的运行中,变量将保持语句块上一次执行时的值。用于定义一个局部变量为自动的,这意味着每次执行到定义该变量时,都会产生一个新的变量并且对其进行初始化。auto关键字是可以省略的,如果不特别指定,局部变量的存储方式默认为自动的。

2024-04-09 23:49:17 192 1

原创 %c,%d输出的区别

在C语言中,百分号 %c 用于输出单个字符,而百分号 %d 用于输出十进制有符号整数。unsigned char 1字节 0~255。一般定义的话unsigned char比较多。char 1字节 -128~127。

2024-04-09 23:18:53 550

原创 数据类型——字符型常量//字符与字符串的差别

字符型常量可以分为两种:一种是字符常量,另一种是字符串常量字符常量只能包含一个字符‘a’ ‘A’ ‘#’等 字符常量区分大小写比如‘a’ ‘A’字符是不一样的,这两个字符代表着不同的字符常量 ‘’这对单直撇代表定界符,不属于字符常量中的一部分字符串常量

2024-04-09 22:45:11 297

原创 8.7数组应用————反向输出字符串

在main函数体中定义两个字符数组,分别为源字符数组和目标字符数组,然后循环遍历源字符数组的同时,将读取的字符从目标字符数组的末尾开始向前插入,最后分别输出源字符数组和目标字符数组。不解的是如果不定义字符串的长度为13的话,直接弄个空的,那输出的结果就会出错?值得注意sizeof计算字符串长度的时候默认将结束标记符“\0”也包括进去了。

2024-04-09 22:42:23 233

原创 sizeof获取变量的大小

例如,对于整数类型(int),在32位计算机系统中,它通常占用4个字节1;而对于双精度浮点数类型(double),它同样在32位计算机系统中占用8个字节。// 输出8(在32位系统中)printf("%d\n", sizeof(int));// 输出4(在32位系统中)如果你想知道特定类型变量的大小,你可以使用 sizeof() 操作符来获取。这将告诉你在你的计算机系统上,int和double类型分别占用多少字节。

2024-04-09 21:10:12 240

原创 变量名的命名规则

模板前缀还可以用于表示数据的基本类型,例如在整型变量名称前增加小写字母 i ,浮点数变量名称前增加小写字母 f。函数名应该尽量是动词或动名词,以便更清晰地表达函数的功能。如果变量名包含多个单词,通常有两种风格:Unix风格和Windows风格(匈牙利命名法)。Windows风格(匈牙利命名法)基本原则是:变量名 = 属性 + 类型 + 对象描述。使用模板前缀很重要,比如全局变量可以在前面加上 g ,指针变量可以在前面加上 *。名称应该简单,最好是单词或单词的缩写。

2024-04-08 22:50:26 740 1

空空如也

空空如也

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

TA关注的人

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