- 博客(42)
- 收藏
- 关注
原创 STM32定时器PWM和SG90舵机
特性控制对象比较寄存器 (CCR2) 的更新方式(立即 or 缓冲)输出引脚 (CH2CH2N) 的有效电平极性主要目的确保动态更新CCR2时 PWM 波形无毛刺、平滑定义输出信号的逻辑有效电平(高 or 低)影响的寄存器TIMx_CCMR1(OC2PE 位)TIMx_CCER(CC2P, CC2NP 位)典型值应用场景需要动态改变 PWM 占空比CCR2) 的应用根据外部电路要求定义有效电平;控制初始/空闲状态;互补输出配置本质区别时间维度- 管理值何时生效逻辑维度- 管理值生效时。
2025-07-24 14:08:01
390
原创 STM32超声波模块
一:超声波模块1:工作原理采用IO触发测距,给至少10us的高电平信号。模块自动发送8个40KHz的方波,自动检测是否有信号返回。·有信号返回,通过IO输出一高电平,高电平持续时间就是超声波从发射到返回的时间声波从发射到返回的时间· HC-SRO4超声波测距模块提供2cm-400cm的测距功能,精度达3mm。2.硬件接线。
2025-07-16 15:52:11
982
原创 STM32第二十天 ESP8266-01S和电脑实现串口通信(3)
并请注意不不要携带空格或换⾏行行符等不不可⻅见字符。有超时机制,如果连接建⽴立后,⼀一段时间内⽆无数据来往,超出⻓长度的部分数据被认为是⽆无效数据,不不被接受。超出⻓长度的部分数据被认为是⽆无效数据,不不被接受。超出⻓长度的部分数据被认为是⽆无效数据,不不被接受。发送数据时,如果输⼊入的字节数超过了了设置⻓长度(发送数据时,如果输⼊入的字节数超过了了设置⻓长度(发送数据时,如果输⼊入的字节数超过了了设置⻓长度(在透传发送数据过程中,若识别到单独的⼀一包数据。,可能耗时太⻓长,不不被认为是连续的三个。
2025-07-10 23:00:45
1031
原创 STM32第十九天 ESP8266-01S和电脑实现串口通信(2)
1:UDP传输UDP传输不不区分server或者client,由指令建⽴立传输。1.配置WiFi模式响应OK2.连接路路由器器响应OK3.查询ESP8266设备的IP地址AT+CIFSR响应OK4. PC与ESP8266设备连接同⼀一路路由器器,在PC端使⽤用⽹网络调试⼯工具,建⽴立⼀一个UDP传输。假设,PC创建的UDP⾃自身IP地址为,端⼝口为8080。5.后⽂文将基于前述步骤,介绍两种UDP。
2025-07-10 21:35:45
1046
原创 STM32第十八天 ESP8266-01S和电脑实现串口通信
为啥我选本地ip选了上面两个192.168.85.1和192.168.237.1使用AT+CIPSTART="TCP","192.168.237.1",8000。超出⻓长度的部分数据被认为是⽆无效数据,不不被接受。发送数据时,如果输⼊入的字节数超过了了设置⻓长度(虚拟网络(如 WSL2/Docker)默认。端使⽤用⽹网络调试⼯工具,建⽴立⼀一个。设备连接同⼀一路路由器器,在。设备向服务器器发送数据。ESP8266 只能访问。个字节,发送完成后响应。
2025-07-08 22:55:01
744
原创 STM32第十七天ESP8266-01Swifi模块
ESP8266是实现wifi通讯的一个模块种类,有很多分类包含esp8266-12、esp8266-12E、ESP8266-01S、esp32等等。esp8266-01S由一颗esp8266作为主控再由一块flash作为存储芯片组成,带有板载芯片供电采用3.3V电压使用串口进行烧写程序和AT指令集调试,。
2025-07-08 15:39:21
1064
原创 STM32第十六天蓝牙模块
当设置AT+ROLE=0时,HC-05 模块被配置为从模式特性说明角色定位被动等待连接(类似"服务员")连接行为无法主动扫描/连接其他设备,只能被主设备(Master)发现并连接典型应用作为外围设备(如传感器、执行器)与手机/电脑配对工作状态启动后广播自身存在(可被手机蓝牙列表检测到)连接限制同一时间只能被一个主设备连接(1:1连接)✅对比主模式(AT+ROLE=1:主设备可主动扫描连接多个从设备(类似"顾客")3:设置密码为4位数。
2025-07-06 19:57:25
1648
原创 STM32第15天串口中断接收
写串口中断void USART1_IRQHandler()去startup_stm32f10x_hd.s找到WEAK的弱定义。一:库函数实现串口接收。
2025-07-05 21:01:49
293
原创 STM32第十四天串口
它的逻辑含义是:循环等待,直到USART1的发送数据寄存器空标志(TXE)被置位(即变为SET状态)才退出循环。在中断方式下,当TXEIE中断使能时,TXE事件会触发中断,在中断服务程序里你就可以写入下一个字节。当你发送一串数据(比如一个字符串)后,你需要确认所有字节(包括最后一个字节的所有位)都已经。但之前装好的那封信,寄送台的工作人员可能还在往邮筒里塞呢(数据正在发送中)。在中断方式下,当TCIE中断使能时,TC事件会触发中断,通知你发送彻底完成。此时TDR寄存器是空的,可以安全地写入新的待发送数据。
2025-07-05 19:28:17
937
原创 stm32第十三天串口发送数据
一:串口发送软件流程设计usart.hmain.c二:代码心得1:在写usart.c的初始化串口引脚时为什么用复用模式? 3:或(|)和与(&)的原理用于组合多个使能标志位(每个标志位对应一个外设)。将多个二进制位中至少有一个为1的位设为1。假设:(二进制:)(二进制:)按位或操作:text0000 0100 (GPIOA)OR0001 0000 (USART1)----------0001 0100 (结果:0x14) 结果同时保留了GPIOA和USART1的使
2025-07-03 21:59:01
804
原创 STM32的串口USART
在绝大多数场合下,发送端和接收端,采用的都是同一个时钟,所以在传送数据的同时还要发送时钟信号,以便接收端可以使用时钟信号来确定每一个信息位。1:同步是指在约定的通信速率下,发送端和接收端的时钟信号和相位始终保持一致,保证通信双方在发送和接收数据具有完全一致的定时关系。3:发送端和接收端可以有各自独立的时钟来控制数据的发送和接收,这两个时钟是互不影响的各自独立,互不同步。.字符帧也叫做数据帧,由起始位,数据位,奇偶校验位,停止位等部分组成, 是异步通信的一个重要指标。的位数应为偶数(偶校验)或者奇数(奇校。
2025-07-02 16:27:10
708
原创 stm32第十一天外部中断按键控制灯
初始化NVIC嵌套中断控制器及分组。初始化GPIO、EXTI外设时钟。初始化EXTI外部中断条件。2:exti_key.h工程。判断中断发生控制LED火。1:exti_key.c工程。初始化按键和LED引脚。3:main.c工程。
2025-03-31 20:22:01
474
原创 stm32第十天外部中断和NVIC讲解
Cortex-M3内核支持256个中断,其中包含了16个内核中断 (异常)和240个外部中断,并且具有256级的可编程中断设置。STM32有84个中断,包括16个内核中断(异常)和68个可屏蔽中断,具有16级可编程的中断优先级。抢占优先级相同的中断,当两个中断同时发生的情况下,哪个响应优先级高,哪个先执行;中断的概念:在主程序运行过程中,出现了特点的中断触发条件,使得CPU暂停当前正在运行的程序,转而去处理中断程序,处理完成后又返回原来被暂停的位置继续运行。,比如分组2,设置好分组之后一般不会再改变分组。
2025-03-31 20:12:23
1075
原创 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
1145
原创 stm32第八天小项目震动感应灯
第一步先检查继电器是否正常使用,第二步检查继电器和灯能否正常使用,第三步检查震动传感器能否正常使用。4:震动传感器shake.c函数。二:1:main主函数代码。3:继电器relay.c函数。
2025-03-24 19:45:46
208
原创 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
678
原创 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
1260
原创 stm32第五天按键的基础知识
• 检测按键输入电平来控制LED灯。o 初始化按键和LED的引脚。3:主函数main.c工程。o 初始化GPIO外设时钟。
2025-03-17 22:33:52
493
原创 stm32第四天控制蜂鸣器
蜂鸣器是一种常用的电子发声元器件,采用直流电压供电。广泛应用于计算机,打ED机,报警器,电子玩具,汽车电子设备灯等产品中常见的蜂鸣器可分为有源蜂鸣器和无源蜂鸣器。从外观上来看两种蜂鸣器形状相似,有源蜂呜器底部有黑胶密封。无源峰鸣器底部可以看到电路板,两种蜂鸣器都标注有正负极。无源蜂鸣器:内部无震荡源,需要外部脉冲信号驱动发声,声音频率可变。(可改变频率来改变音色)有源蜂鸣器:内部有震荡源,只要通电即可自动发出固定频率的声音。初始化GPIO外设时钟GPIOA。b:写Bear.h(头文件)
2025-03-12 21:21:11
617
原创 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
467
原创 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
680
原创 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
487
原创 C语言入门第十九天函数与数组和指针
递推阶段:从原问题出发,按递归公式递推从未知到已知,最终达到 递归的终止条件。递归函数是指一个函数的函数体中直接或间接调用了该函数自身。函数指针用来存放函数的地址,这个地址是一个函数的入口地址。实参为数组的指针,形参为数组名(本质上是一个指针变量)2:题目:编写一个指针函数,删除一个字符串中的空格。数据类型 是函数指针所指向的函数的返回值类型。指针函数是指一个函数的返回值为地址量的函数。实参为数组的指针,形参为同类型的指针变量。题目:计算一个一维整型数组的所有元素的和。函数名代表了函数的入口地址。
2025-03-08 23:01:55
800
原创 C语言入门第十八天函数
如果想把power()函数放到main函数后就要用到函数的说明(以上面的代码为例)函数是一个完成特定功能的代码模块,其程序代码独立,通常要求有返回值,也可以是空。实参就是在使用函数时,调用函数传递给被调函数的数据。全局变量就是在函数体外说明的变量,它在程序中的每个函数里都是可见的。形参是新开辟的存储空间,因此在函数中改变形参的值,不会影响到实参。语句中表达式的值要和函数的数据类型一致,如无返回值应写为。按地址传递,实参为变量的,而形参为同类型的指针。被调用函数中对形参的操作,将直接改变实参的值。
2025-03-07 23:26:24
712
原创 c语言入门第十七天void指针和const修饰指针
常量化指针目标限制通过指针改变其目标的数值。常量化指针目标是限制通过指针改变其目标的数值。指针是一种不确定数据类型的指针变量,它可以。修饰时,若想用指针间接访问变量,指针也要有。常量化变量是为了使得变量的值不能修改。注意:必须要在初始化指针的地方指向地址。4:常量化指针变量及其目标表达式。指针,在没有强制转换类型之前,但是指针变量存储的地址可以修改。常量化变量使a的值不能改变,2:常量化指针目标表达式。可以修改所指向变量的数值。存储的地址值不能修改。任何指针的算术运算。存储的地址值不能修改。
2025-03-06 21:55:32
353
原创 C语言入门第十六天指针数组和多级指针
因为a[2][3]是二维数组,所以a[0],a[1],表示第一行第二行的首地址,不是数。1:所谓指针数组是指若干个具有相同存储类型和数据类型的指针变量构成的集合。c:而把指向一级指针变量的指针变量称为二级指针变量,简称二级指针。,是向地址大的方向移动一个目标数据。b:对于指向处理数据的指针变量称为一级指针变量,简称一级指针。题目:使用指针数组处理二维数组,求出二维数组所有元素的和。a:把一个指向指针变量的指针变量,称为指针变量。的首地址分别赋予指针变量数组的数组元数。指针数组名表示该指针数组的起始地址。
2025-03-05 23:24:11
295
原创 C语言入门第十五天指针和二维数组
指针指向的对象的值,因为静态存储是不能修改的,静态存储有1:全局变量2:static局部变量3:字符串常量。题目:使用行指针表示二维数组的某个元素题目:使用行指针表示二维数组的某个元素。初始化字符指针是把内存中字符串的首地址赋予指针,并不是把该字符串复制到指针。语言编程中,当一个字符指针指向一个字符串常量时,不能修改指针指向的对象。题目:不使用任何字符串函数,实现字符串函数连接功能。语言中 ,二维数组的元素连续存储,按行优先存。二维数组名代表数组的起始地址,数组名加。两个的地址是不一样的,打印结果可知道。
2025-03-04 21:58:08
390
原创 C语言入门第十四天指针运算,指针和数组
7:两个指针之间的关系运算符表示它们指向的地址位置之间的关系,指向地址大的指针。两个指针相减的结果值不是地址量,而是一个整数值,表示两指针之间相隔数据的个。(--和++规则一样);表示的实际位置的地址量是: (px)+sizeof(px的类型) * n。语言中 ,数组的指针是指数组在内存中的起始地址,数组元素的地址是指数组元。表示的实际位置的地址是: (px)-sizeof(px的类型) * n。运算的结果是两个指针指向的地址位置之间相隔数据的个数。因此两个指针相减不是两个指针持有的地址值相减的结果。
2025-03-03 20:58:34
606
原创 C语言入门第十三天指针
2:如果它指向的区域是程序的一个变量的内存空间,则这个变量称为指针的目标变量,简称 为指针的目标。程序简洁,紧凑,高效;1:在C语言中,内存单元的地址称为指针,专门用来存放地址的变量,也就是通俗来讲地址==指针。内存单元的地址称为指针,专门用来存放地址的变量,也就是通俗来讲地址==指针。px:指针变量(也就是他指的那个变量),它的内容是地址量,%p。2:在计算机内存中,每一个字节单元,都有一个编号,称为地址;指针在说明的同时,也可以被赋予初值,叫做指针的初始化。指针指向的内存区域中的数据称为指针的目标。
2025-03-01 17:28:27
663
1
原创 C语言入门第十二天字符串数组和函数
1:头文件为#include<string.h>返回值:返回字符串的实际长度,不包括'\0'在内。题目:输入一个字符串,将字符串逆序输出。遇到反斜杠零就截至有效长度1;比较规则:对两串从左向右逐个字符比较。格式:strlen(字符串组)字符串拷贝函数 strcpy。例如:对于一下字符串,对应的。注意:一定要给i,j,初始化。字符串连接函数strcat。一:通过代码学习字符串数组。几个常见的字符串处理函数。, 忽略大小写比较字符串。注释:这是代码有字符串的。不用string.h函数。
2025-02-28 21:49:01
464
原创 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
385
原创 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
312
原创 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
205
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
1036
原创 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
362
原创 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
190
原创 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
275
原创 C语言入门第四天运算符
a>b-1我这里b-1没打括号因为在C运算符应为加减运算的优先级高于大小于运算的优先级,但是我的建议是一般都打括号,因为括号的优先级最高。<表达式2>:<表达式3>先判断表达式1,表达式1为真,则输出表达式2,表达式1为假,则输出表达式3。e:位逻辑异或”^“运算符的运算规律如下:相同为假,不同为真。a:运算符的一般形式:sizeof(类型或变量名)<变量> <操作符> = <表达式>a:逻辑运算符 “!<左值表达式> = <右值表达式><运算量>必须为整形结果数值;<表达式>也必须为整形结果数值。
2024-11-14 20:17:28
238
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅