- 博客(58)
- 收藏
- 关注
原创 Error running ‘testForTest.test‘ Failed to resolve org.junit.platform:junit-platform-launcher:1.3.
改成无代理模式就可以了。
2025-10-23 20:01:36
106
原创 使用python脚本储存mosquito服务器数据到sqlite
本文介绍了一个基于MQTT协议的物联网数据采集与存储系统架构。系统由ESP32下位机采集传感器数据,通过Mosquitto MQTT代理传输,由Python编写的上位机程序接收并存储到SQLite数据库。详细说明了Python脚本的实现过程,包括数据库初始化、MQTT消息订阅和数据存储功能。通过sqlite3命令可以查看存储的温湿度数据,验证了系统正常运行。该方案实现了传感器数据的实时采集、传输和持久化存储功能。
2025-09-11 20:23:33
319
原创 stm32中 中断和事件的区别
中断与事件的核心区别在于CPU参与度:中断需要CPU响应并执行中断服务程序,会打断当前任务;事件则通过硬件路径直接触发外设动作,完全由硬件自动完成,无需CPU参与,速度更快且更省电。例如定时器触发ADC采样时,中断需CPU处理代码,而事件则硬件自动执行,CPU可继续休眠。
2025-09-10 20:07:32
409
原创 硬件电路-按键电路
本文介绍了两种按键电路设计方式。按键接地时,左侧IO口需设置为上拉输入,右侧可选择上拉或浮空输入;而按键接VCC的方式则较少采用。文章简要说明了不同按键连接方式对应的IO口配置要求。
2025-09-09 17:20:56
226
原创 硬件电路-led和蜂鸣器
摘要:介绍了LED和蜂鸣器的两种驱动电路设计。LED采用低电平驱动方式,符合单片机"低电平驱动能力强"的原则。蜂鸣器电路使用三极管作为电子开关,PNP型在STM32输出0时导通,NPN型则在输出1时导通。两种电路设计考虑了单片机输出特性与三极管工作状态的匹配,确保可靠驱动。
2025-09-09 15:55:25
163
原创 使用虚拟机Ubuntu搭建mosquito服务器 使esp32、上位机通信
本文介绍了在Ubuntu服务器上搭建MQTT服务并实现ESP32与上位机通信的过程。主要内容包括:1)使用NAT+端口转发解决校园网防火墙限制,通过手机热点建立连接;2)基于apt安装Mosquitto服务器,配置监听所有地址的1883端口并设置匿名连接;3)ESP32端通过WiFi连接MQTT服务器,定时发布测试数据;4)使用MQTT.fx工具验证双向通信功能。重点解决了网络配置问题,实现了下位机与上位机之间的MQTT消息传输通路。
2025-09-09 10:02:46
1051
原创 使用MQTT.fx和ESP32连接Onenet平台
本文介绍了使用MQTT.fx工具连接OneNET物联网平台的方法及注意事项。主要内容包括:1)通过MQTT.fx模拟客户端测试连接;2)在OneNET平台创建产品设备,获取产品ID、设备ID和Token;3)OneJSON数据格式规范;4)ESP32连接平台实现数据收发。文章指出MQTT.fx不能作为ESP32的上位机进行通信测试的原因:平台限制不同设备间通信,且同一设备鉴权信息无法共享。最后提供了ESP32连接OneNET的Arduino代码示例,实现定时发送数据和接收指令功能。
2025-09-07 20:35:12
821
原创 第三十二天-SPI接口实验
【摘要】本文系统介绍了SPI接口的工作原理及应用。主要内容包括:SPI接口的基本概念与内部结构、NSS脚管理(软件/硬件模式)、时钟信号的相位极性控制、数据帧格式、状态标志及中断机制。同时阐述了硬件连接方式、常用寄存器配置及库函数使用方法,并以W25Qxx系列芯片为例说明SPI接口的实际应用。文章通过原理图与寄存器分析,完整呈现了SPI接口从底层硬件到上层软件的实现过程。
2025-09-04 15:08:42
231
原创 第三十一天-I2C通信实验
本文对比分析了I2C和USART两种通信协议的主要差异:I2C采用同步半双工传输,支持多设备连接,主要用于控制外设;USART采用异步全双工传输,仅支持点对点连接,主要用于数据传输。重点阐述了I2C的硬件设计原理,包括开漏输出模式、线与特性等关键设计,以避免多主设备冲突。详细介绍了I2C通信的时序规范,包括起始/终止条件、字节收发、应答机制等基础单元,以及指定地址读写、当前地址读等具体操作流程。通过硬件电路设计和通信时序的解析,展现了I2C协议在控制外设方面的优势特性。
2025-09-03 22:11:24
821
原创 第三十天-DMA串口实验
摘要:本文介绍了STM32的DMA(直接内存访问)技术在串口通信中的应用。重点说明了DMA通道配置要点:串口发送(USARTx_TX)在DR寄存器为空时请求DMA,接收(USARTx_RX)在DR满时请求。提供了一个实验案例,通过DMA将800字节从内存传输到串口1,详细展示了DMA初始化配置和使能代码。特别强调在非循环模式下,每次DMA传输后需重新设置BufferSize并先禁用DMA通道。实验实现了按键触发DMA数据传输功能,并通过LED指示系统运行状态。
2025-09-02 11:56:31
382
原创 第二十九天-PWM DAC应用实验
本文介绍了基于STM32的PWM DAC实现原理与代码实现。PWM DAC通过低通滤波将PWM方波转换为模拟电压,再经ADC采样转换为数字值。硬件部分采用TIM1定时器产生PWM信号,配合RC低通滤波电路实现DAC功能。文章详细给出了TIM1 PWM初始化代码和主程序逻辑,包括按键控制PWM占空比调节、电压计算与LCD显示等功能。调试中发现按键未初始化导致占空比自动增加的问题,最终通过初始化按键解决。整个系统实现了从PWM信号到模拟电压再到数字采样的完整转换过程。
2025-09-02 10:16:26
236
原创 第二十八天-DAC数模转换实验
本文介绍了DAC模块的基本概念、转换过程和关键特性。主要内容包括:1)DAC数据转换流程,从数字输入到模拟输出的完整路径;2)DAC输出特性与阻抗关系;3)基于STM32的实验方案,通过按键控制DAC输出电压(0.1V步进),并用ADC进行电压测量验证。实验代码实现了DAC初始化、电压转换计算、按键控制及显示功能,展示了DAC模块的实际应用方法。硬件上将ADC和DAC引脚连接,通过程序实现数字电压的精确控制和测量验证。
2025-09-01 17:41:20
255
原创 第二十八天-光敏传感器实验
本文介绍了光敏传感器的硬件连接与实验代码实现。硬件部分采用分压电路设计,光敏电阻LS1与固定电阻R34组成电压检测电路,光照强度与输出电压成反比。软件部分基于STM32F10x系列芯片,提供了完整的ADC初始化、数据采集及光照值计算代码,包括头文件定义、ADC配置、多通道采样平均值计算等功能。调试过程中发现并解决了ADC时钟配置顺序问题,确保软件触发正常工作。最终实现了通过ADC采集光照数据并转换为百分比显示的功能。
2025-09-01 12:15:08
378
原创 第二十七天-内部温度传感器
本文介绍了基于STM32的温度传感器实验。实验通过ADC通道16连接温度传感器,实现了温度测量功能。硬件连接方面,温度传感器与ADC引脚16相连,电压与温度呈负相关关系。实验详细说明了温度测量原理和注意事项,特别注意温度传感器使能必须在ADC初始化之后。实验代码包括三个主要文件:tsensor.h(头文件定义)、tsensor.c(温度获取和ADC初始化函数)和main.c(主程序)。经过调试解决了温度读数异常的问题,最终成功实现了温度测量功能,并通过LCD显示测量结果。该实验为基于STM32的温度监测系统
2025-09-01 09:23:19
168
原创 第二十七天-ADC模数转换实验
本实验使用STM32的ADC1模块测量3.3V电压,通过PA0通道采集数据。硬件连接中将PA1引脚接3.3V电源,设置为模拟输入。实验重点说明了ADC校准的必要性,包括解决零点误差、增益误差和工艺偏差等问题。代码部分实现了ADC初始化、单次采样、多次平均采样及电压值转换功能,最终通过LCD显示测量结果。主程序循环执行电压采集和显示,同时通过LED状态指示系统运行。实验完整展示了ADC模块的使用流程,从硬件连接到软件实现,并强调了校准对测量精度的重要性。
2025-08-31 17:09:10
302
原创 第二十六天-ADC基本原理
本文系统介绍了STM32微控制器模数转换器(ADC)的完整知识体系。主要内容包括:ADC基本概念、特点及引脚对应关系;内部结构框图解析;STM32通道组分类;工作模式(单次/连续转换、扫描模式);中断机制;时钟配置方法;9个关键寄存器功能说明;采样时间设置要点;常用库函数应用。文章重点阐述了ADC的两种转换模式(单次/连续转换)和扫描模式的区别,详细列出了各控制寄存器的功能,并提供了完整的ADC应用开发知识框架。
2025-08-30 18:14:30
281
原创 第二十六天-待机唤醒实验
本文介绍了嵌入式系统中的待机唤醒功能实现方法。主要内容包括:1)待机模式与低功耗模式的原理;2)相关寄存器和库函数的使用;3)通过WKUP按键实现待机唤醒的详细实验方案。实验代码实现了从待机状态唤醒后重新初始化系统,并设计了3秒长按判断机制来控制待机状态切换。文章特别分析了唤醒过程中中断触发的关键问题,指出由于重新初始化后的电平状态不会触发上升沿中断,从而确保了系统正常运行。实验通过GPIO配置、外部中断设置和待机模式管理,展示了完整的低功耗待机唤醒解决方案。
2025-08-30 16:40:15
247
原创 第二十五天-RTC实时时钟实验代码(LCD显示)
本文展示了基于RTC和LCD的时间显示系统实现。代码部分包含rtc.c中的时间显示函数Disp_TimeByLcd(),通过RTC_Get()获取时间并在LCD上显示年、月、日、时、分、秒;main.c完成初始化并实现LED闪烁。实验心得指出:1)字表尺寸选择注意事项;2)建议静态符号先绘制,动态数据后刷新。系统实现了基本的时间显示功能,代码结构清晰,注重显示优化。
2025-08-29 22:10:43
148
原创 第二十五天-RTC实时时钟实验代码(串口显示)
该代码实现了基于STM32的RTC实时时钟功能,包含时间设置、获取和显示等功能。主要特点包括:1) 采用LSE时钟源初始化RTC模块;2) 实现了从1970年开始的Unix时间戳计算;3) 包含闰年判断和星期计算算法;4) 通过串口输出时间信息;5) 使用结构体组织时间数据。代码中展示了volatile、extern、const等关键字的使用技巧,以及中断处理和变量备份等编程实践。实验结果表明,该实现能够准确获取和显示时间日期信息,并可通过秒中断实时更新。该代码为嵌入式系统的时间管理提供了完整解决方案,具有
2025-08-29 14:38:54
205
原创 第二十四天-RTC实时时钟特征
本文介绍了实时时钟(RTC)的核心概念和工作原理。RTC通过APB1总线与主系统连接,具有独立时钟源RTCCLK。关键部件包括预分频器(RTC_PRL/RTC_DIV)实现时钟分频、计数器(RTC_CNT)记录时间、以及闹钟寄存器。重点阐述了RTC寄存器组的操作规范:1)修改控制寄存器需检查同步标志RSF;2)配置计数器等寄存器需先进入配置模式(CNF=1);3)每次操作前必须确认上次操作完成(RTOFF=1)。文章还介绍了备份寄存器和余数寄存器的特殊功能,后者可提供更高精度的时间测量。
2025-08-27 15:37:05
371
原创 第二十四天-USMART调试组件实验
USMART是一种嵌入式调试工具,通过定时器中断轮询串口缓冲区,实现远程函数调用功能。其核心原理是检测到函数名后,在中断中执行对应函数。配置步骤包括初始化定时器和串口,注册可调函数。实验代码演示了LED控制函数led_set()的远程调用,通过串口发送指令可控制LED状态。系统支持查看注册函数、执行命令等操作。USMART实现了不重新编译即可调试嵌入式程序的功能,显著提高了开发效率。
2025-08-27 11:09:00
163
原创 第二十三天-LCD液晶显示实验
该文章主要介绍了LCD显示驱动的实现细节。首先解释了LCD结构体定义中地址处理逻辑,通过SRAM的A10信号解决8080接口的RS信号问题。接着描述了LCD显示字符的核心函数LCD_ShowChar,该函数通过访问字库获取字符点阵数据,并逐像素绘制到指定位置。函数处理了不同字体大小(12/16/24像素)、两种显示模式(叠加/非叠加),并包含屏幕边界检查。实现过程涉及字库索引计算、点阵数据解析、像素绘制和坐标更新等关键步骤,通过FSMC或GPIO模拟8080接口完成硬件交互,最终实现在LCD屏幕上高效显示A
2025-08-26 18:16:30
965
原创 第二十三天-FSMC简介
FSMC是一个外部存储器控制器,可将外部存储器的物理地址映射为微处理器的逻辑地址。它包含两个可同时工作的部分,通过模拟SRAM时序来驱动TFTLCD(需调整RS信号)。FSMC将存储空间划分为4个4×64MB的存储块,每个块包含4个区。HADDR地址线的高2位用于区片选,低26位用于区内寻址。针对不同位宽的外部存储器(如16位),FSMC通过地址偏移实现与8位微处理器的兼容。操作时序涉及ADDSET和DATAST参数控制,相关寄存器包括片选控制寄存器(BCRx)、时序寄存器(BTRx)和写时序寄存器(BWT
2025-08-26 12:11:15
261
原创 第二十二天-TFTLCD驱动原理介绍和配置
本文介绍了TFTLCD显示模块及其驱动原理,重点分析了正点原子TFTLCD模块的硬件接口和ILI9341驱动芯片的工作时序。文章详细阐述了8080并口时序要求,解释了脉宽参数的重要性,并概述了驱动流程。同时介绍了ILI9341的关键指令集,包括0XD3、0X36等指令的具体功能,以及RGB565颜色格式的16位表示方法(红绿蓝5:6:5位分布)。内容涵盖从硬件接口到软件驱动的完整知识体系,为TFTLCD模块开发提供了技术参考。
2025-08-25 22:18:01
291
原创 第二十天-电容触摸按键实验
本文介绍了基于STM32的电容触摸检测实验。实验通过测量电容充电时间变化来判断触摸动作:当手指接触TPAD时会增加系统电容,导致充电时间延长。文章详细说明了硬件连接(PA1引脚用于放电/充电)、实验步骤(放电、计时、捕获上升沿)和核心算法(采样10次去除极值后取平均)。同时指出了代码中的两个关键bug:1)循环条件错误导致采样异常;2)需要添加延时消除按压抖动。实验最终实现了通过比较当前充电时间与基准值来判断触摸状态的功能。
2025-08-14 16:50:27
528
原创 第十九天-输入捕获实验
可以设置滤波,滤除一些高电平脉宽不足的脉冲信号。①:要注意多个中断共用一个中断函数,所以在中断函数中要进行判断。②:extern修饰的变量,定义一次,多次声明。③:printf中/r/n表示换行。一定要注意,开启中断的时候,不光是外设开启中断,还要设置中断分组和中断优先级设置!//设置从模式映射//主模式设置PWMIConfig直接会设置两个通道捕获的极性相反。也只有前两个通道可以使用PWMI模式。
2025-08-09 22:34:09
259
原创 第十八天-定时器PWM实验
摘要:本文介绍了PWM(脉宽调制)技术原理及其在STM32上的实现。PWM通过调节脉冲占空比(DutyCycle=Ton/T×100%)控制平均功率输出,详细说明了PWM模式1/2的工作机制和寄存器配置。实验部分展示了使用TIM3定时器控制PB5引脚LED亮度渐变的过程,通过动态调整比较寄存器值实现呼吸灯效果。关键点包括:PWM模式配置、定时器初始化和比较值更新(TIM_SetCompare2),并解释了利用人眼视觉暂留实现亮度渐变的基本原理。代码实现了从0到400比较值的循环渐变,每10ms调整一次亮度。
2025-08-08 15:24:09
419
原创 第十七天-定时器中断实验
摘要:本文介绍了STM32定时器的工作原理及实现方法。主要内容包括:1)定时器工作流程,包括时钟源选择、三种计数模式(向上/向下/中心)及时钟计算(通过PSC和ARR寄存器设置500ms定时);2)关键寄存器如CNT、PSC、ARR等;3)定时器库函数配置;4)实验代码实现,通过TIM3定时器控制LED翻转,配置预分频值7199和重装载值4999实现500ms定时。代码部分包含定时器初始化、中断处理及主程序调用流程。
2025-08-05 19:42:04
227
原创 第十六天-通用计时器基本原理
本文主要介绍了计时器的分类与通用寄存器功能。首先分析了三种计时器的区别,随后详细描述了通用寄存器:包括总体功能特性、计数器的三种工作模式、计时器结构框图,以及计数时钟源的选择方法。全文系统性地阐述了计时器的工作原理和寄存器配置要点。
2025-08-04 20:16:03
246
原创 WWDG窗口看门狗-中断响应函数未执行错误
摘要:在WWDG模块中,若使能函数放在逻辑最后执行会导致错误。原因是使能看门狗时若寄存器初值大于40h会强制中断标志位置1,导致无法响应后续中断。解决方法是将WWDG_ClearFlag()和WWDG_EnableIT()函数移至看门狗使能函数之后执行,确保中断正常响应。(99字)
2025-08-04 19:44:23
144
原创 第十五天-窗口开门狗
本文介绍了STM32窗口看门狗(WWDG)的工作原理与实现。窗口看门狗通过设置上下窗口值(W和3Fh)来控制喂狗时机,在上窗口前或下窗口后喂狗都会触发复位。文章详细说明了计数器运行机制、寄存器配置(CR、CFR、SR)及库函数使用方法,并提供了具体代码实现。通过LED状态变化验证功能:不喂狗时LED闪烁,正确喂狗时LED常亮。代码中特别强调中断标志位清除和使能顺序的重要性,以避免误触发。该机制可有效监控程序运行状态,防止系统死锁。
2025-08-04 19:33:59
330
原创 第十五天-独立看门狗实验
摘要:本文介绍了STM32独立看门狗的实现原理与应用。首先阐述了看门狗模块的必要性及其类型,详细说明了独立看门狗的工作流程和超时时间计算公式(42^prer/40重装载值)。重点展示了代码实现过程,通过配置预分频系数和重装载值实现最长1秒复位时间,并设计了喂狗指示功能(按键触发喂狗时红灯常亮,复位时红灯闪烁)。代码包含初始化函数Iwdg_Init()和主程序中的喂狗操作,使用IWDG_ReloadCounter()函数实现喂狗功能,确保系统正常运行。
2025-08-03 15:56:33
155
原创 第十四天-外部中断
外部中断是微控制器(如STM32)中一种由 外部硬件信号触发 的中断机制,用于快速响应引脚电平变化(如按键按下、传感器信号)。
2025-08-01 18:07:27
585
原创 第十三天-串口通信
本文介绍了STM32串口通信的基本原理与实现方法。主要内容包括:1)串行通信的基本概念,包括全双工/半双工通信、接口类型及电平转换;2)STM32串口相关寄存器(状态、数据、波特率、控制寄存器)及其库函数;3)波特率计算方法;4)详细配置流程及代码实现,涵盖GPIO初始化、串口参数设置、中断配置等关键步骤;5)给出了完整的USART初始化代码和中断处理函数,实现了串口数据收发功能。文中还特别说明了STM32与PC机通信时的电平转换需求,以及通过RS232转换器解决电平匹配问题的方法。
2025-07-30 17:08:15
345
原创 第十二天-NVIC中断优先级管理
STM32中断优先级管理采用16级可编程优先级,包含抢占和响应优先级。优先级分组有5种(0-4),每组分配不同位数的抢占和响应优先级。抢占优先级高的可打断低优先级中断,同级则比较响应优先级。设置时需注意:1)通常只设置一次分组;2)通过专用寄存器配置;3)使用库函数设置优先级和使能中断。关键是要合理分配抢占和响应优先级,避免中断管理混乱。
2025-07-29 19:14:58
363
原创 第十二天-端口复用和重映射
STM32芯片引脚复用与重映射技术解析:1)端口复用通过使能GPIO和外设时钟,在有限引脚上实现多功能共用,需参考手册配置模式;2)重映射可将外设引脚重新布局以优化电路设计,分为部分/完全两种类型,具体映射关系需查阅数据手册的引脚表。两种技术有效解决了芯片引脚资源受限问题,为硬件设计提供灵活性。
2025-07-29 11:59:01
167
原创 第十一天-软件仿真和硬件调试
本文介绍了嵌入式开发的软件仿真和硬件调试方法。在软件仿真部分,详细说明了MDK开发环境的调试设置步骤,包括晶振配置、调试模式切换和程序执行控制(单步执行、函数跳转等),以及寄存器监测和逻辑分析功能。硬件调试部分简要提及了调试原理、引脚分配及库函数配置,强调需使用STlink调试器并与软件设置保持一致。文章重点阐述了开发调试过程中的关键操作步骤和注意事项。
2025-07-28 23:34:25
154
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅