自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 stm32第十一天外部中断按键控制灯

初始化NVIC嵌套中断控制器及分组。初始化GPIO、EXTI外设时钟。初始化EXTI外部中断条件。2:exti_key.h工程。判断中断发生控制LED火。1:exti_key.c工程。初始化按键和LED引脚。3:main.c工程。

2025-03-31 20:22:01 383

原创 stm32第十天外部中断和NVIC讲解

Cortex-M3内核支持256个中断,其中包含了16个内核中断 (异常)和240个外部中断,并且具有256级的可编程中断设置。STM32有84个中断,包括16个内核中断(异常)和68个可屏蔽中断,具有16级可编程的中断优先级。抢占优先级相同的中断,当两个中断同时发生的情况下,哪个响应优先级高,哪个先执行;中断的概念:在主程序运行过程中,出现了特点的中断触发条件,使得CPU暂停当前正在运行的程序,转而去处理中断程序,处理完成后又返回原来被暂停的位置继续运行。,比如分组2,设置好分组之后一般不会再改变分组。

2025-03-31 20:12:23 964

原创 stm第九天433M无线遥控灯

else if(GPIO_Pin_2 ==1) 这种写法是错误的。GPIO_Pin_o 和 GPIO_Pin_2是GPIO引脚的宏定义,代表引脚编号,不能直接和 1进行比较。数据发射模块的工作频率为315M,采用声表谐振器SAW稳频,频率稳定度极高,当环境温度在-25~+85度之间变化时,频飘仅为3ppm.接收到信号,1.供电正极,连接此引脚到电源5V,以提供433M无线模块所需的电流。,有DO D1 D2 D3,可能对应遥控器的A/B/C/D。2.GND():地,连接此引脚到电源的负极或者地。

2025-03-24 20:28:48 922

原创 stm32第八天小项目震动感应灯

第一步先检查继电器是否正常使用,第二步检查继电器和灯能否正常使用,第三步检查震动传感器能否正常使用。4:震动传感器shake.c函数。二:1:main主函数代码。3:继电器relay.c函数。

2025-03-24 19:45:46 144

原创 stm32第七天震动传感器

震动传感器黑色震动检测传感器,工作时电源LED灯常量,震动信号检测LED灯发生震动的时候会保持亮的过程。用于各种震动触发作用,防盗报警,智能小车,电子积木灯等。2.GND:地,连接到板子电源的负极或者GND。初始化震动传感器DO相连的单片机引脚输入配置。1.VCÇ:接到板子电源的5v或者3.3v。初始化震动传感器DO相连的单片机引脚时钟。,可以与单片机相连检测环境是否发生震动。.震动传感器硬件引脚接线。要动传威器软件开发流程。1:shake.c工程。2:shake.h工程。3:main.c工程。

2025-03-19 23:50:26 491

原创 stm32第六天继电器

3.IN:控制输入信号,通常用于连接控制信号,当该信号变化,继电器切换状态。1.VCC(+):供电正极,连接此引脚到电源,以提供继电器所需的电流(判断是3.3v还是5v)6.NC(Normally Closed):常闭接口,继电器吸合前与COM连接,吸合后悬空。5.NO(Normally Open):常开接口,继电器吸合前悬空,吸合后于COM连接。继电器是一个电控开关,工作原理基于电磁感应,继电器包括一个电磁线圈和一组触点。4.COM (common):公共端,通常是中间的触点,与常开或常闭触点相连。

2025-03-18 22:07:10 957

原创 stm32第五天按键的基础知识

• 检测按键输入电平来控制LED灯。o 初始化按键和LED的引脚。3:主函数main.c工程。o 初始化GPIO外设时钟。

2025-03-17 22:33:52 400

原创 stm32第四天控制蜂鸣器

蜂鸣器是一种常用的电子发声元器件,采用直流电压供电。广泛应用于计算机,打ED机,报警器,电子玩具,汽车电子设备灯等产品中常见的蜂鸣器可分为有源蜂鸣器和无源蜂鸣器。从外观上来看两种蜂鸣器形状相似,有源蜂呜器底部有黑胶密封。无源峰鸣器底部可以看到电路板,两种蜂鸣器都标注有正负极。无源蜂鸣器:内部无震荡源,需要外部脉冲信号驱动发声,声音频率可变。(可改变频率来改变音色)有源蜂鸣器:内部有震荡源,只要通电即可自动发出固定频率的声音。初始化GPIO外设时钟GPIOA。b:写Bear.h(头文件)

2025-03-12 21:21:11 408

原创 STM第三天点亮LED

2:只需要控制PA1为相对应的低电平,即可点亮对饮的LED灯,输出高电平则熄灭对应的LED灯。1:LED灯的正极接到了3.3V, LED灯的负极接到了PA1,也就是GPIOA1引脚。1:为了方便,以后我们写外设写在user新建一个文件夹,里面建.c和.h文件。a:建立LED的.c文件(每一行代码必须要写注释,全部搞懂)2:写LED.h(头文件)三:让LED灯实现一秒闪烁。我们使用软件延时 粗延时。2:在keil上写工程。3:写main主函数。

2025-03-12 17:01:20 382

原创 STM32第二天基本GPIO控制

d:开漏输出模式下,只有低电平才有驱动能力,高电平无驱动能力,引脚只能输出低电平,可以作为通信协议的区动方式比如12C通信的引脚,使用开漏输出模式。STM32的I/O引脚工作再输出模式下时,需要配置I/O引脚的输出速度该输出速度不是输出信号的速度,而是I/O口驱动电路的响应速度。3:·简单模块:LED, 按键,蜂鸣器,温度传感器,使用一个GPIO就可以完成数据的传输/控制,也就是输出高低电平(0和1)此时,I/O引脚浮空,读取的电平是不确定的,外部信号是什么电平,MCU引脚就输入什么电平。

2025-03-10 23:38:40 611

原创 STM32第一天建立工程

start_up启动文件。》cmsis内核文件。》FWLIB外设文件。b:Libraries固件库。(一般这就是stm32的启动文件)(这种就是stm32外设文件不全)(一般这就是stm32内核文件)(一般这就是stm32应用程序)c:CMSIS 内核配置相关文件。a:START_UP启动文件。FWLIB 外设相关配置。1:新建一个文件,添加文件。c:Project工程文件。二:Keil里面新建文件。d:User应用程序。b:USER应用程序。

2025-03-09 22:39:37 438

原创 C语言入门第十九天函数与数组和指针

递推阶段:从原问题出发,按递归公式递推从未知到已知,最终达到 递归的终止条件。递归函数是指一个函数的函数体中直接或间接调用了该函数自身。函数指针用来存放函数的地址,这个地址是一个函数的入口地址。实参为数组的指针,形参为数组名(本质上是一个指针变量)2:题目:编写一个指针函数,删除一个字符串中的空格。数据类型 是函数指针所指向的函数的返回值类型。指针函数是指一个函数的返回值为地址量的函数。实参为数组的指针,形参为同类型的指针变量。题目:计算一个一维整型数组的所有元素的和。函数名代表了函数的入口地址。

2025-03-08 23:01:55 701

原创 C语言入门第十八天函数

如果想把power()函数放到main函数后就要用到函数的说明(以上面的代码为例)函数是一个完成特定功能的代码模块,其程序代码独立,通常要求有返回值,也可以是空。实参就是在使用函数时,调用函数传递给被调函数的数据。全局变量就是在函数体外说明的变量,它在程序中的每个函数里都是可见的。形参是新开辟的存储空间,因此在函数中改变形参的值,不会影响到实参。语句中表达式的值要和函数的数据类型一致,如无返回值应写为。按地址传递,实参为变量的,而形参为同类型的指针。被调用函数中对形参的操作,将直接改变实参的值。

2025-03-07 23:26:24 678

原创 c语言入门第十七天void指针和const修饰指针

常量化指针目标限制通过指针改变其目标的数值。常量化指针目标是限制通过指针改变其目标的数值。指针是一种不确定数据类型的指针变量,它可以。修饰时,若想用指针间接访问变量,指针也要有。常量化变量是为了使得变量的值不能修改。注意:必须要在初始化指针的地方指向地址。4:常量化指针变量及其目标表达式。指针,在没有强制转换类型之前,但是指针变量存储的地址可以修改。常量化变量使a的值不能改变,2:常量化指针目标表达式。可以修改所指向变量的数值。存储的地址值不能修改。任何指针的算术运算。存储的地址值不能修改。

2025-03-06 21:55:32 270

原创 C语言入门第十六天指针数组和多级指针

因为a[2][3]是二维数组,所以a[0],a[1],表示第一行第二行的首地址,不是数。1:所谓指针数组是指若干个具有相同存储类型和数据类型的指针变量构成的集合。c:而把指向一级指针变量的指针变量称为二级指针变量,简称二级指针。,是向地址大的方向移动一个目标数据。b:对于指向处理数据的指针变量称为一级指针变量,简称一级指针。题目:使用指针数组处理二维数组,求出二维数组所有元素的和。a:把一个指向指针变量的指针变量,称为指针变量。的首地址分别赋予指针变量数组的数组元数。指针数组名表示该指针数组的起始地址。

2025-03-05 23:24:11 244

原创 C语言入门第十五天指针和二维数组

指针指向的对象的值,因为静态存储是不能修改的,静态存储有1:全局变量2:static局部变量3:字符串常量。题目:使用行指针表示二维数组的某个元素题目:使用行指针表示二维数组的某个元素。初始化字符指针是把内存中字符串的首地址赋予指针,并不是把该字符串复制到指针。语言编程中,当一个字符指针指向一个字符串常量时,不能修改指针指向的对象。题目:不使用任何字符串函数,实现字符串函数连接功能。语言中 ,二维数组的元素连续存储,按行优先存。二维数组名代表数组的起始地址,数组名加。两个的地址是不一样的,打印结果可知道。

2025-03-04 21:58:08 287

原创 C语言入门第十四天指针运算,指针和数组

7:两个指针之间的关系运算符表示它们指向的地址位置之间的关系,指向地址大的指针。两个指针相减的结果值不是地址量,而是一个整数值,表示两指针之间相隔数据的个。(--和++规则一样);表示的实际位置的地址量是: (px)+sizeof(px的类型) * n。语言中 ,数组的指针是指数组在内存中的起始地址,数组元素的地址是指数组元。表示的实际位置的地址是: (px)-sizeof(px的类型) * n。运算的结果是两个指针指向的地址位置之间相隔数据的个数。因此两个指针相减不是两个指针持有的地址值相减的结果。

2025-03-03 20:58:34 511

原创 C语言入门第十三天指针

2:如果它指向的区域是程序的一个变量的内存空间,则这个变量称为指针的目标变量,简称 为指针的目标。程序简洁,紧凑,高效;1:在C语言中,内存单元的地址称为指针,专门用来存放地址的变量,也就是通俗来讲地址==指针。内存单元的地址称为指针,专门用来存放地址的变量,也就是通俗来讲地址==指针。px:指针变量(也就是他指的那个变量),它的内容是地址量,%p。2:在计算机内存中,每一个字节单元,都有一个编号,称为地址;指针在说明的同时,也可以被赋予初值,叫做指针的初始化。指针指向的内存区域中的数据称为指针的目标。

2025-03-01 17:28:27 629 1

原创 C语言入门第十二天字符串数组和函数

1:头文件为#include<string.h>返回值:返回字符串的实际长度,不包括'\0'在内。题目:输入一个字符串,将字符串逆序输出。遇到反斜杠零就截至有效长度1;比较规则:对两串从左向右逐个字符比较。格式:strlen(字符串组)字符串拷贝函数 strcpy。例如:对于一下字符串,对应的。注意:一定要给i,j,初始化。字符串连接函数strcat。一:通过代码学习字符串数组。几个常见的字符串处理函数。, 忽略大小写比较字符串。注释:这是代码有字符串的。不用string.h函数。

2025-02-28 21:49:01 405

原创 C语言入门第十一天二维数组

2:写二维数组[][],第一个[]的行的值可以省略,第二个[]列的值不能省略。二维数组a是由 三个元素组成 a[0]、a[1]、a[2]例如int a[3][2]为a[0][0]a[0][1]每个元素a[i] 由包含2个元素的一维数组组成。第一个常量表达式是行数第二个常量表达式是列数。3:查看二维数组的地址和打印二维数组的值。字符数组是元素的数据类型为字符类型的数组。注意:写二维数组是{{},{}}2:二维数组:按行序优先。二维数组元素的初始化。按元素排列顺序初始化。

2025-02-27 22:02:54 307

原创 C语言入门第十天冒泡排序

if()括号结束后不要分号。注意事项:n的表达式。

2025-02-27 15:38:45 105

原创 C语言入门第九天辅助控制语句和数组

等价于:a[0]=6,a[1]=2,a[2]=3,a[3]=0,a[4]=0;等价于:a[0]=0,a[1]=0,a[2]=0,a[3]=0,a[4]=0;c:数组中各个元素的数据类型要求相同,用数组名和下标确定,数组可以是一维的,也可以是多维的;b:数组是具有一定循序关系的若干个变量的集合,组成数组的各个变量称为数组的元素。int a[]={1,2,3,4,5,6} 编译系统根据初值个数确定数组维数。这种写法是不行的,因为a[5]数组只有01234,没有a[5]

2024-11-15 22:08:49 280

原创 C语言入门第八天循环语句

while先判断后执行可能一次都不执行,但do-while先执行后判断,至少执行一次。1:当程序有多个出口,使用goto把这些出口集中到一处很方便,特别是函数中有很多重。2. 求解表达式 2 ,若为真,则执行循环体,然后执行步骤三,若为假则执行步骤 5。c:可以避免忘记更新某一个出口点的问题。a:while语句构成循环的基本形式。while和do-while的区别。1. 先求解表达式 1 ,初始值。5. 执行 for 下面的语句。d:代码展示(一到一百求和)a:无条件跳转易于理解;while(表达式)

2024-11-14 20:43:07 153 1

原创 C语言入门第七天字符串输入输出函数和控制语句

f:break语句用于强行跳出switch体,一般一个case后接一个break,default分支后的break可以省去。if(x=1)是将x赋值为1,所以括号内为1为真,if(x==1)是用x的值和1比较相同为真不同为假。如:if(a==b&&x==y){printf("%d \n",x);c:当表达式的值和常量表达式的值相等时,就会执行case后的语句。c:语句块,当有诺干条语句的时候,必须用{}括号括起来。3:区分if(x=1)和if(x==1)的不同。case常量表达式1:语句块1;

2024-11-14 20:31:36 952

原创 C语言入门第六天输入函数

scanf支持的格式字符有很多如%d%i%x%o%c%s%f%g%e作用和printf代表作用一样(看第五天的)b:功能:按指定格式从键盘读入数据,存入地址表指定存储单元中,并按回车键结束。c:返回值:正常,返回从键盘输入的代码值,出错或结束返回-1。修饰符h:功能为 d,o,x前,指定输入为short型整数;修饰符|:功能为用于d,o,x前,指定输入为long型整数;修饰符|:功能为用于e,f前,指定输入为double型实数;d:地址表:变量的地址,常用取地址运算符&c:返回值:正常,返回输入数据个数。

2024-11-14 20:28:03 324

原创 C语言第五天输入输出

d输出十进制数,%x,%X用于输出十六进制数,%o用于输出八进制数,%f用于输出浮点数也就是小数,精确度小数点后六位,%e,%E用于输出指数形式的浮点小数,%c用于输出字符(单一字符);%s用于输出字符串,%i也可以输出十进制数,%u输出无符号十进制数,%g是输出e和f较短的一种小数,%%百分号本身。a:C语言没有I/O语句,I/O即为输入和输出,在C语言是通过包含相对应的头文件(如stdio.h)来调用标准输入输出函数,从而实现数据的输入和输出。c:输出表:就是要输出的对象,也就是要输出的数据。

2024-11-14 20:26:05 145

原创 C语言入门第二天常量

a:字符常量的形式就是'填一个字符',其实也就是字符常量是指一个单一字符,其表示形式是由两个单引号包括的一个字符’A‘、’a‘、’Q‘、’0‘、’9’、‘+’、‘?c:几个重点要记得的ASCII码' '是32,'0'是48,' A'是65,'a'是97.a:所谓字符串常量是指用双引号括起来的一串字符来表示的数据(字符串以'\0'结尾)。当一个实数的符号为正号。所谓标识常量是指用标识符替代常量使用的一种一种常量,其名称通常是一个标识符。b:在C语言中,字符常量具有数值,字符常量的值就等于字符的ASCII值!

2024-11-14 20:19:00 234

原创 C语言入门第四天运算符

a>b-1我这里b-1没打括号因为在C运算符应为加减运算的优先级高于大小于运算的优先级,但是我的建议是一般都打括号,因为括号的优先级最高。<表达式2>:<表达式3>先判断表达式1,表达式1为真,则输出表达式2,表达式1为假,则输出表达式3。e:位逻辑异或”^“运算符的运算规律如下:相同为假,不同为真。a:运算符的一般形式:sizeof(类型或变量名)<变量> <操作符> = <表达式>a:逻辑运算符 “!<左值表达式> = <右值表达式><运算量>必须为整形结果数值;<表达式>也必须为整形结果数值。

2024-11-14 20:17:28 208

原创 C语言入门第三天变量和简单运算符

a:称为寄存器型,register变量想将变量放入CPU的寄存器中,这样可以加快程序的运行速度。a:static变量称为静态存储类型的变量,既可以在函数体内,也可在函数体外说明情况。不能用“&”来获取register变量的地址。a:当变量在一个文件中的函数体外说明,所有其他文件中的函数或程序段都可引用这个变。c:在函数体的某程序段内说明auto存储类型的变量时,以省略关键字auto,b:说明的变量只能在某个程序范围内使用,通常在函数体内或函数中的复合语句中。d:变量在内存空间中的首地址,称为变量的地址。

2024-11-14 20:10:54 787

原创 C语言入门第一天从运行第一个代码和数据类型

1:在printf输出结果是要输出a的值,因为bool类型只有零和非零,只要是非零为真,返回值都为1.反码:正数的反码是其本身,负数的反码是在其原码的基础上符号位不变,其余位按位取反。补码:正数的补码就是其本身,负数的补码就是,在其原码的基础上,符号位不变,其余按。原码:符号位加上真值的绝对值,用最高位(第一位)表示符号位,其余表示值。//出错,数据越界(-128)char c1 = 129;//出错,数据越界(127)

2024-11-14 20:01:05 606

空空如也

空空如也

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

TA关注的人

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