
STM32
文章平均质量分 59
以实战为主
1101 1101
道阻且长,行则必至
展开
-
STM32-笔记37-吸烟室管控系统项目
1. 使用 mq-2 获取环境烟雾值,并显示在 LCD1602 上;2. 按键修改阈值,并显示在 LCD1602 上;3. 烟雾值超过阈值时,蜂鸣器长响,风扇打开;烟雾值小于阈值时,蜂鸣器不响,风扇关闭;原创 2025-01-05 19:56:20 · 416 阅读 · 0 评论 -
STM32-笔记36-ADC(模拟/数字转换器)
使用 ADC1 采集通道 1 的电压值,通道 1 连接光敏电阻传感器。复制项目文件夹19-串口打印功能重命名为43-ADC单通道采集实验打开项目文件加载文件main.cHAL_Init();/* 初始化HAL库 *//* 设置时钟, 72Mhz */led_init();/* 初始化LED灯 */adc_init();\r\n");while(1)//换算成电压的形式输出adc.c//ADC的句柄//初始化ADC函数//基地址//数据右对齐//要不要扫描?不需要扫描。原创 2025-01-05 18:55:17 · 1209 阅读 · 0 评论 -
STM32-笔记35-DMA(直接存储器访问)
实验目的使用DMA将一个大数组的数据搬运到另一个位置。复制项目文件19-串口打印功能重命名为40-DMA实验(内存到内存)新建文件夹dma dma.c dma.h打开项目文件加载文件main.cHAL_Init();/* 初始化HAL库 *//* 设置时钟, 72Mhz */led_init();//初始化led灯dma_init();\r\n");led2_OFF();led1_OFF();led2_ON();原创 2025-01-04 19:46:17 · 1188 阅读 · 0 评论 -
STM32-笔记34-4G遥控灯
外网连接内网连接。原创 2025-01-04 00:15:48 · 364 阅读 · 1 评论 -
STM32-笔记33-Wi-Fi遥控风扇项目
电脑通过esp8266模块远程遥控风扇。PC端的网络调试助手(以服务端的模式连接客户端的esp8266)原创 2025-01-03 23:04:43 · 482 阅读 · 0 评论 -
STM32-笔记32-ESP8266作为服务端
esp8266作为服务器的时候,这时候网络助手以客户端的模式连接到esp8266,其中IP地址写的是esp8266作为服务器时的IP地址,可以使用AT+CIFSR查询esp8266的ip地址,端口号默认写333。原创 2025-01-03 21:51:05 · 678 阅读 · 0 评论 -
STM32-笔记31-ESP8266连接TCP服务器
使用网络助手,设立TCP服务器。原创 2025-01-03 18:27:58 · 302 阅读 · 0 评论 -
STM32-笔记30-编程实现esp8266联网功能
复制项目文件34-ESP8266串口间的通信。重命名为35-编程实现ESP8266联网功能。串口2连接ESP8266模块。原创 2025-01-03 17:35:45 · 381 阅读 · 0 评论 -
STM32-笔记30-串口间的通信
本次实现串口间的正常通信,主要是为了后面的在此之前需要检验两个串口之间是否可以正常通信,串口1:是用来接收串口2中打印的日志-当给ESP8266输入AT指令之后,打印出的结果显示。串口2:用来接后续的ESP8266-实现单片机通过串口2传递AT代码信息给ESP8266,ESP8266解析AT执行把结果日志通过串口2传递给串口1。检验两个串口间是否可以正常通信,使用两个USB转TTL用杜邦线和STM32连接,两个USB连接电脑,电脑上的两个串口助手分别与其相连接。原创 2025-01-03 15:11:14 · 593 阅读 · 0 评论 -
STM32-笔记29-蓝牙遥控插座项目
手机通过蓝牙模块远程遥控风扇。(插座的原理就是继电器,所以控制继电器就是控制插座电源)原创 2025-01-02 21:22:46 · 577 阅读 · 0 评论 -
STM32-笔记28-蓝牙模块
HC-08 蓝牙模块是通过串口与单片机进行通信,这个模块既可以作为主机也可以作为从机(通过 AT 指令配置)。有些蓝牙模块不支持主机(如 HC-02 、HC-04),所以在使用时需要注意区分。HC-08 蓝牙模块实物图如下所示:可以看到,HC-08 模块一共有 6 个引脚,下面详细介绍各个引脚的作用。• STATE:状态输出引脚。未连接时,则为低电平。连接成功时,则为高电平。可以在程序中作指示引脚使用;• RXD:串口接收引脚。接单片机的 TX 引脚(如果是5V MCU,需串联一个 220R 电阻)原创 2025-01-02 20:02:04 · 1305 阅读 · 0 评论 -
STM32-笔记27-串口
1. 全双工通信:USART支持全双工通信,即数据可以在两个方向上同时传输(A→B且B→A)。这使得USART能够满足许多需要双向通信的应用场景。2. 同步与异步传输:尽管USART的“S”代表同步,但在实际应用中,USART更常用于异步通信。然而,它也支持同步通信模式,只是这种模式通常用于兼容其他协议或特殊模式,并且两个USART设备不能通过同步模式进行直接通信。3. 波特率发生器:USART自带波特率发生器,最高可达4.5Mbits/s,可以根据需要配置不同的波特率。原创 2025-01-01 18:01:41 · 1187 阅读 · 0 评论 -
STM32-笔记26-WWDG窗口看门狗
窗口看门狗内有一个7位的递减计数器,并可以设置成自由运行。它可以被当成看门狗用于在发生问题时复位整个系统。它由主时钟驱动,具有早期预警中断功能;在调试模式下,计数器可以被冻结。原创 2025-01-01 16:01:31 · 1331 阅读 · 0 评论 -
STM32-笔记25-IWDG独立看门狗
在键寄存器(IWDG_KR)中写入0xCCCC,开始启用独立看门狗;此时计数器开始从其复位值0xFFF递减计数。当计数器计数到末尾0x000时,会产生一个复位信号(IWDG_RESET)。无论何时,只要在键寄存器IWDG_KR中写入0xAAAA, IWDG_RLR中的值就会被重新加载到计数器,从而避免产生看门狗复位。IWDG_PR和IWDG_RLR寄存器具有写保护功能。要修改这两个寄存器的值,必须先向 IWDG_KR寄存器中写入0x5555。原创 2024-12-31 21:24:13 · 1037 阅读 · 0 评论 -
STM32-笔记24-智能开关垃圾桶盖
初始化状态位为关盖状态,当有物品挡在超声波前面的时候,调用开盖函数,在开盖函数中判断状态位是否是CLOSE状态,如果是,则执行开盖函数,否则不执行,此时这里状态位是CLOSE所以,执行开盖函数,并且把状态位置为OPEN,在下次执行if语句的时候,如果满足if里的条件,则会调用开盖函数,但是由于状态位为OPEN,所以此时不会执行开盖函数中的代码。复制项目文件夹19-串口打印功能,重命名为26-智能感应开关垃圾桶盖项目。1、问题:当手一直放在超声波前面的时候,每隔2秒蜂鸣器会响一下。在代码中出现的bug。原创 2024-12-31 14:37:48 · 682 阅读 · 0 评论 -
STM32-笔记23-超声波传感器HC-SR04
HC-SR04 工作参数:• 探测距离:2~600cm• 探测精度:0.1cm±1%• 感应角度:原创 2024-12-31 13:04:42 · 610 阅读 · 0 评论 -
STM32-笔记22-sg90舵机
动手让 SG90 每秒转动一下,0° -> 20° -> 40° -> 100° -> 180° 如此循环。舵机接A6复制18-呼吸灯,重命名24-sg90舵机把PWM重命名sg90打开项目文件在魔术棒和品上把PWM都去掉,加载sg90文件夹加载之后把文件中含有pwm.h字样的换成sg90编译使用定时器3通道1(产品手册18页)在代码中把相应数据改掉。原创 2024-12-30 18:45:55 · 751 阅读 · 0 评论 -
STM32-笔记21-脉冲计数
将定时器 2 通道 2 输入的低电平脉冲作为定时器 2 的时钟,并通过串口打印脉冲数外部时钟模式1、触发选择、上升沿触发、不分频、不滤波。原创 2024-12-30 17:04:44 · 560 阅读 · 0 评论 -
STM32-笔记20-测量按键按下时间
我们先检测下降沿信号,检测到以后,在回调函数里切换成检测上升沿信号,当两个信号都检测到的时候,这段时间就是按键按下的时间,如图所示:=>N*(ARR+1)+CCRx的值N个重装载值+CCRx的值。原创 2024-12-29 20:18:10 · 1237 阅读 · 0 评论 -
STM32-笔记19-串口打印功能
给开发板通电,编译,下载代码,可以在串口助手中看见打印的字符串。复制项目文件夹03-流水灯,重命名为19-串口打印功能。接线:使用USB转TTL。打开串口调试助手工具。到此,串口打开成功!原创 2024-12-29 16:54:34 · 401 阅读 · 0 评论 -
STM32-笔记18-呼吸灯
使用定时器 4 通道 3 生成 PWM 波控制 LED1 ,实现呼吸灯效果。频率:2kHz,PSC=71,ARR=499利用定时器溢出公式周期等于频率的倒数。故Tout = 1/2KHZ;Ft = 72MHZPSC=71(喜欢设置成Ft的倍数),ARR=499其实PSC与ARR的组合有很多种,上面只是一种。原创 2024-12-29 14:33:15 · 1043 阅读 · 0 评论 -
STM32-笔记17-PWM波型
PWM波形(Pulse Width Modulation,脉冲宽度调制波形)是一种占空比可变的脉冲波形。这种调制方式通过改变脉冲的宽度来控制电路中的信号强度和频率。具体来说,PWM波形中的高电平持续时间和低电平持续时间可以根据需要进行调整,从而实现对模拟信号电平的数字编码。PWM波形在各种领域都有广泛的应用,包括电源管理、电机控制、LED亮度调节等。此外,生成PWM波形的方法有多种,例如使用波形发生器、单片机或可编程逻辑器件等。占空比 = Ton / Ts。分辨率 = 占空比变化步距。原创 2024-12-26 21:56:29 · 325 阅读 · 0 评论 -
STM32-笔记16-定时器中断点灯
使用定时器 2 进行中断点灯,500ms LED 灯翻转一次。原创 2024-12-26 21:33:51 · 782 阅读 · 0 评论 -
STM32-笔记15-状态机
状态机广泛应用于多个领域,包括但不限于计算机科学、电子工程、通信、自动化和机器人技术等。在计算机科学中,状态机常用于描述软件系统的行为,特别是在硬件设计、编译器设计、网络协议以及用户界面交互等方面。原创 2024-12-26 13:42:56 · 510 阅读 · 0 评论 -
STM32-笔记14-排队控制系统
1. 红外传感器检测有人通过并计数;2. 计数值显示在LCD16023. 允许通过时,LED1闪烁,蜂鸣器不响,继电器不闭合;4. 不允许通过时,LED2闪烁,蜂鸣器响,继电器闭合;5. 每次允许通过5个人,之后转为不允许通过,3秒后再转为允许通过。原创 2024-12-25 22:37:58 · 539 阅读 · 0 评论 -
STM32-笔记13-红外避障模块-LCD1602模块
复制03-流水灯项目,重命名14-LCD1602模块新建文件夹LCD1602以及对应的.c和.h文件加载文件编译。原创 2024-12-25 16:13:36 · 713 阅读 · 0 评论 -
STM32-笔记12-实现SysTick模拟多线程流水灯
正常STM32实现多线程,需要移植一个操作系统FreeRTOS。但是在这里不移植FreeRTOS怎么实现多线程呢?使用SysTick,那么怎么使用SysTick来模拟多线程呢?前面我们知道SysTick就是一个定时器,它不是在主函数的while循环里实现的,就是在旁边自己玩自己的。所以我们可以理解成,main函数是主线程,而SysTick在一边实现自己的,在SysTick里面。可以通过配置让SysTick每一秒钟中断一次,在中断服务函数里面干其他的事情,这样就实现了多线程。原创 2024-12-24 21:59:13 · 1228 阅读 · 0 评论 -
STM32-笔记11-手写带操作系统的延时函数
流程如下:给滴答定时器一个重装载值:reload,当滴答定时器开始计时,从重装载值开始倒数(从16777215倒数到0),然后自动重载再倒数...... ,ticks是一共需要计多少数,获取刚进入while循环时计数器时VAL的值(tnow)和进入while循环时,当前VAL的值作为told,然后,不断的累加told和tnow的差值(tcnt),不断的判断tcnt是否大于等于ticks,当是的时候,证明已达到需要的数值,故可以退出循环。时基即时间基准,在电子线路中主要用来表示数字电路中的基准时钟。原创 2024-12-24 15:55:00 · 624 阅读 · 0 评论 -
STM32-笔记10-手写延时函数(SysTick)
Systick,即滴答定时器,是内核中的一个特殊定时器,用于提供系统级的定时服务。该定时器是一个24位的倒计数定时器。它从设定的初值(即重载值)开始计数,每经过一个系统时钟周期,计数值就减1,直到计数到0时,SysTick计数器会自动从RELOAD寄存器中重装初值并继续计数 1。如果中断使能,当计数到0时,还会触发中断 1。Systick定时器的主要功能包括实现简单的延时、生成定时中断以及进行精确定时和周期定时操作。原创 2024-12-22 20:48:11 · 1263 阅读 · 0 评论 -
STM32-笔记9-电动车报警器
把08-继电器定时开闭项目中的alarm文件夹复制到10项目中。将alarm文件夹中的内容加载到项目文件中。原创 2024-12-21 16:27:39 · 395 阅读 · 0 评论 -
STM32-笔记8-433M点灯
因为在一个项目中,一个模块是处理自己的模块的东西,不可以跟其他模块有联动的。就是在这个模块下,加入了其他模块的函数,属于一种联动。为什么代码里要有flag?联动应该在主函数实现。原创 2024-12-21 13:25:23 · 323 阅读 · 0 评论 -
STM32-笔记7-继电器定时开闭
因为:在很多项目中,继电器是要接其他固件的,比如在接下来的项目中,继电器是要接警报器的所以,不需要给与继电器本身的名字。在\Drivers\BSP\该路径下,新建alarm文件夹,该文件夹下里面包含alarm.c和alarm.h文件。这个单词,而不是继电器(relay)的单词?打开alarm.h文件。原创 2024-12-21 11:22:00 · 577 阅读 · 0 评论 -
STM32-笔记6-震动控制灯(中断法)
因为在人为给予震动的时候,对于振动传感器来说是一个很缓慢的过程,在人眼看来是一个震动,在传感器看来是一行波动,所以,传感器接收到第一次震动的时候触发程序,执行函数,但是代码执行的速度是很快的所以,执行完一次之后灯光处于打开状态,但是vibrate_flag标志位虽然在get函数中将其置回FALSE,但是在接收到震动的时候还会再次触发一遍代码,就会产生四秒的延迟,故在主函数中,需要调用vibrate_flag_set函数,在检测到一次true的时候手动置位。第二段代码中,标志状态在获取时自动清零。原创 2024-12-20 12:24:27 · 901 阅读 · 0 评论 -
STM32-笔记5-按键点灯(中断方法)
在\Drivers\BSP目录下创建一个文件夹exti,在该文件夹下,创建两个文件exti.c和exti.h文件,并且把这两个文件加载到项目中,打开项目工程文件。原创 2024-12-18 19:26:52 · 631 阅读 · 0 评论 -
STM32-笔记4-按键点亮led
在品和魔术棒里面把刚才新建的key文件夹里面的.c 和.h文件加载到工程文件中(不会加载请看前面的笔记)在key.c文件中写入这两个头文件,点击编译,编译通过,在侧边栏中可以在key.c文件的下面看到key.h文件。在BSP文件夹里新建key文件夹,在该文件夹里面,新建两个key.c和key.h文件。代码解析都在代码的注释里。原创 2024-12-18 13:40:48 · 513 阅读 · 0 评论 -
STM32-笔记3-驱动蜂鸣器
打开04项目的Drivers/BSP/led文件夹,把led文件夹更改为beep文件夹,改文件夹内部的.c和.h文件更改为beep.c和beep.h文件,如下图所示。点击品和魔术棒,把原来的关于led的文件删掉,重新加载beep文件中内容。I/O口接PB8(因为上面代码引脚没有改变,所以接PB8)接上之后,通电,蜂鸣器开始随着灯光的亮灭而响灭。出现beep.h文件,更改头文件,如下图。出现弹窗,显示找不到xx文件,点击确定。编译运行,通过,烧录代码,看现象,符合。运行程序,编译一下,编译通过。原创 2024-12-18 12:13:13 · 398 阅读 · 0 评论 -
STM32-笔记2-流水灯
流水灯原理:假设有5个灯,分别是1、2、3、4、5号,流水灯就是,1号灯亮,2345号灯灭,紧接着2号灯亮,1345号灯灭,3号灯亮,1245号灯灭,4号灯亮1235号灯灭,5号灯亮,1234号灯灭。形成流水一样的灯亮灭。这里开发板只有两个灯,led1和led2,所以在形成流水灯的时候,让led1和led2灯交替亮灭。原创 2024-12-18 11:19:43 · 389 阅读 · 0 评论 -
STM32-笔记1-点亮led灯
查看原理图,我们会知道,led1在PB上,我们要改变led1灯的状态变化,也就是给led1的端口信息,所以这里是GPIOB。2这里为什么要调用这个__HAL_RCC_GPIOB_CLK_ENABLE();我们在这里能看到各种GPIO的宏函数,找到了GPIOB这个函数,那么为什么不是GPIOA而是GPIOB?在led.c文件中调用该函数,在结构体类型中F12打开stm32f1xx_hal_gpio.h文件。stm32f1xx_hal_rcc.h :用于配置和管理系统时钟的函数和宏定义。原创 2024-12-17 21:32:40 · 373 阅读 · 0 评论 -
STM32-KEIL5中相关设置
1、自定义关键字设置,以及自定义快捷键设置。原创 2024-12-22 11:20:56 · 693 阅读 · 0 评论