自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 读写内部FLASH&读取芯片ID

本文介绍了STM32F1系列FLASH存储器的基本结构和操作方法。FLASH包含程序存储器、系统存储器和选项字节三部分,支持ICP和IAP两种编程方式。使用前需通过特定键值序列解锁FPEC模块,操作完成后需重新加锁。文章详细说明了FLASH的写入、页擦除和全擦除过程,并给出了具体的代码实现,包括32位/16位数据读写、页擦除等功能。通过Store模块示例展示了如何利用FLASH剩余空间存储用户数据,包括初始化、保存和清除操作。最后强调了volatile关键字在嵌入式开发中的重要性,确保直接访问硬件寄存器和特

2025-11-26 21:22:57 894

原创 独立看门狗&窗口看门狗

本文介绍了STM32中的两种看门狗(WDG)机制:独立看门狗(IWDG)和窗口看门狗(WWDG)。IWDG使用内部低速时钟(40kHz),能在各种模式下工作,通过定期喂狗防止系统卡死;WWDG则要求精确计时,在特定时间窗口内喂狗才有效。文章详细说明了两种看门狗的框图、寄存器配置、超时时间计算公式及工作特性,并提供了实际应用中的代码示例和接线图。IWDG适合对时间精度要求不高的场景,而WWDG适用于需要精确控制喂狗时间的应用。两种看门狗都能有效提高系统的可靠性和安全性。

2025-11-25 19:19:46 895

原创 修改主频&睡眠模式&停机模式&待机模式

摘要: 本文介绍了STM32低功耗模式的实现与应用。主要内容包括:1) PWR电源控制模块的功能,包括电压监测和三种低功耗模式(睡眠、停机、待机);2) 三种模式的特性对比,包括唤醒方式、时钟状态和功耗水平;3) 实际应用示例:通过修改系统主频、结合串口通信实现睡眠模式唤醒,以及使用红外传感器在停机模式下计次。实验结果表明,合理使用低功耗模式可显著降低系统功耗,其中待机模式功耗最低但会复位程序,停机模式保持寄存器内容,睡眠模式唤醒后继续执行原程序。文中提供了详细的代码实现和硬件接线图,为STM32低功耗设计

2025-11-22 11:44:17 894

原创 Unix时间戳&读写备份寄存器&实时时钟

本文介绍了Unix时间戳、GMT/UTC标准时间以及STM32的BKP备份寄存器和RTC实时时钟功能。Unix时间戳定义为从1970年1月1日开始的秒数,采用32/64位整型存储。GMT基于地球自转,而UTC使用原子钟计时并通过闰秒保持同步。 重点阐述了STM32的BKP备份寄存器特性:可在断电时保持数据,具有20字节存储容量(中容量设备)。RTC模块提供了独立计时功能,支持三种时钟源,断电后可通过VBAT供电继续计时。两者共享备份域电源,需配置PWR和BKP时钟才能访问。 最后通过代码示例展示了BKP寄存

2025-11-20 11:42:09 779

原创 硬件SPI读写W25Q64

本文介绍了STM32硬件SPI配置及非连续传输特性在W25Q64闪存读写中的应用。硬件SPI配置采用模式0,通过软件控制片选信号,实现非连续传输时允许帧间延迟且SCK时钟暂停。关键点包括:初始化时需保持片选信号为高电平,发送数据前需检查发送寄存器空标志(TXE),接收完成标志(RXNE)用于判断数据传输结束。与软件SPI相比,硬件SPI在SCK边沿触发时反应更快。实验结果表明,硬件SPI能有效提升W25Q64的读写效率,非连续传输模式为数据处理提供了更大的灵活性。

2025-11-18 10:56:42 633

原创 软件SPI读写W25Q64

SPI(串行外设接口)是一种高速全双工同步串行通信总线,广泛应用于微控制器与外围设备(如Flash存储器、传感器等)之间的通信。SPI采用主从模式,通过SCK、MOSI、MISO和SS信号线实现通信,支持4种工作时序模式(CPOL/CPHA组合)。W25Q64是一款8MB容量的Nor Flash存储器,采用分层存储结构(页/扇区/块)。其写入操作需先擦除(最小单位4KB扇区),且只能将位从1改为0,读取则无限制。软件SPI实现需注意引脚配置(推挽输出用于控制信号,上拉输入用于数据线)和时序控制,通过位操作逐

2025-11-17 16:58:04 751

原创 硬件I2C读写MPU6500

本文介绍了STM32硬件I2C读写MPU6500的实现方法。主要内容包括:1) STM32硬件I2C外设特性,支持多主机模式、7/10位地址、不同通讯速度等;2) 主机发送/接收时序图和流程控制;3) MPU6500初始化配置,通过I2C接口设置电源管理、采样率、滤波器等寄存器;4) 具体代码实现,包含写寄存器、读寄存器和I2C事件处理函数。硬件I2C利用STM32内置电路自动完成时钟生成、应答处理等操作,相比软件模拟可降低CPU负担。

2025-11-12 21:37:24 972

原创 软件I2C读写MPU6050

本文介绍了I2C总线通信协议及其在MPU6050传感器中的应用。首先阐述了I2C的基本概念,包括设备连接方式(SCL和SDA线使用开漏输出模式并接上拉电阻)和时序要求。其次详细解析了I2C的关键时序单元:起始/终止条件、发送/接收字节、应答机制等,并配有时序图说明。随后讲解了如何通过STM32实现软件I2C,包括初始化配置、启动/停止信号生成、数据收发等核心函数。最后展示了MPU6050传感器的具体读写操作,提供了硬件连接图和寄存器操作代码示例,为嵌入式开发中I2C设备通信提供了实用参考。

2025-11-10 15:36:43 647

原创 串口收发HEX数据包&串口收发文本数据包

本文介绍了串口通信中HEX和文本数据包的收发实现方法。主要内容包括:1)HEX数据包格式定义,以0xFF开头、0xFE结尾;2)文本数据包格式定义,以@开头、回车键结尾;3)状态机设计用于接收数据包处理;4)基于STM32的串口通信实现,包括初始化配置、数据发送函数等核心代码。文章提供了完整的Serial.c和Serial.h文件代码,详细说明了数据包的收发流程和状态转换机制,为嵌入式系统中的串口通信开发提供了实用参考。

2025-11-07 17:35:21 630

原创 串口发送&串口发送+接收

本文介绍了STM32串口通信的基本原理与实现方法。主要内容包括:1)USART模块的特性与配置参数,如波特率、数据位、校验位等;2)STM32F103的USART硬件资源;3)串口发送功能的C语言实现,包括字节发送、数组发送、字符串发送和数值发送等功能;4)printf函数的重定向实现。重点讲解了GPIO模式选择、数据帧格式、标志位处理等关键技术细节,并指出USART1与USART2/3的总线差异。通过代码示例展示了如何初始化USART硬件并实现多种数据发送功能,为嵌入式系统中的串口通信开发提供了实用参考。

2025-11-04 20:20:22 848

原创 DMA数据转运&DMA+AD多通道

本文介绍了STM32的DMA(直接存储器存取)技术及其应用。DMA可在不占用CPU资源的情况下实现高速数据传输,支持外设与存储器或存储器间的数据传输。STM32F103C8T6具有7个DMA通道,通过AHB总线连接。文章详细讲解了DMA的存储器映射、框图结构、初始化配置流程和转运实现,并提供了MyDMA.c和main.c的示例代码。重点说明了DMA的传输次数、数据宽度、触发模式等关键参数配置注意事项,以及自动重装与软件触发的互斥关系。最后展示了DMA数据转运的实际应用示例和硬件连接图。

2025-11-02 22:19:37 927

原创 AD单通道&AD多通道

本文介绍了STM32的ADC(模数转换器)模块的基本原理与单通道配置方法。ADC作为模拟与数字电路的桥梁,可将0-3.3V模拟电压转换为12位的数字信号(0-4095)。重点阐述了ADC单通道的实现步骤:初始化GPIO为模拟输入模式、配置ADC时钟、设置规则组通道参数(采样时间55.5个周期)、执行复位校准和AD校准。文中强调校准顺序的重要性,并指出软件触发转换与实际转换完成的区别,配以清晰的初始化流程图说明整个配置流程。通过电位器连接PA0引脚的实例,展示了如何获取并处理ADC转换结果。

2025-10-31 17:29:51 718

原创 编码器接口测速

所以及时重复使用一个结构体名称也并不会发生冲突.③配置编码器参数函数TIM_EncoderInterfaceConfig(TIM3,TIM_EncoderMode_TI12,TIM_ICPolarity_Rising,TIM_ICPolarity_Rising);这个函数官方已经写好了,第二个参数表示编码模式,使用。

2025-10-29 16:25:52 874

原创 输入捕获模式测频率&PWMI模式测频率和占空比

设置被测信号变化为100000HZ,而测量信号为1000000HZ这不是错误,事实上,被测信号变化为100000HZ则信号总时间为10us,测量信号为1000000HZ为1us,测量信号测量时间小于被测信号时间,则测量信号当然能测量被测信号。答:PA0输入过来的时钟信号是待测量的信号,而在IC.c文件配置PA6的内部时钟信号是为了测量PA0信号而产生的,如果PA6的内部时钟是一把尺子,而PA0就是待测量物体.②设置PSC的值为72,是将72MHZ内部时钟信号变化为1MHZ,最小周期为1us.

2025-10-28 12:04:31 1001

原创 PWM驱动舵机&PWM驱动直流电机

本文介绍了STM32使用PWM驱动舵机和直流电机的方法。对于舵机驱动,通过修改PWM波形参数实现角度控制,占空比范围2.5%-12.5%对应0-180度旋转。直流电机驱动则通过GPIOA_Pin_2输出PWM信号。两种应用均基于TIM2定时器,通过配置时基单元、输出比较模式等参数生成所需的PWM波形。文中提供了详细的代码实现和计算公式,包括频率设置、占空比转换等关键步骤,并附有电路接线图说明。

2025-10-26 21:38:02 859

原创 PWM驱动LED呼吸灯与引脚重映射

本文介绍了PWM技术及其在STM32上驱动LED呼吸灯的实现方法。PWM(脉冲宽度调制)通过调节方波信号的占空比来控制输出功率,具有高效率、精确控制和抗干扰性强等优点。文章详细讲解了PWM的基本结构、参数计算(频率、占空比、分辨率)以及工作原理。 在STM32实现部分,通过定时器TIM2配置PWM输出,使用PA0引脚连接LED灯。重点说明了GPIO需要配置为复用推挽输出模式,时基单元的参数设置,以及输出比较结构体的初始化注意事项。给出了PWM初始化代码和独立设置CCR值的函数,并解释了参数计算公式。最后通过

2025-10-24 20:49:32 764

原创 定时器定时中断&定时器外部时钟

本文介绍了STM32定时器的工作原理及配置方法,主要包含以下内容: 总线架构:STM32采用三级总线结构(AHB、APB1、APB2),AHB作为高速主干总线连接核心部件,APB1和APB2分别连接低速和高速外设。定时器根据类型连接在不同总线上:基本/通用定时器接APB1,高级定时器接APB2。 定时器分类及原理: 基本定时器(TIM6/7):仅支持定时中断和DAC触发 通用定时器(TIM2-5):支持PWM输出、输入捕获等高级功能 高级定时器(TIM1/8):支持互补输出等电机控制功能 定时器工作时通过预

2025-10-23 17:01:11 611

原创 对射式红外传感器计次&旋转编码器计次

本文介绍了STM32外部中断的应用,重点分析了对设式红外传感器和旋转编码器的计次实现。外部中断适用于实时性要求高、事件随机且低功耗的场景,能够提高系统响应效率。文中详细说明了中断处理的关键要点:保持中断服务函数简短、处理中断抖动、合理配置优先级。通过GPIO、AFIO、EXTI和NVIC等模块的配置流程,实现了红外传感器的下降沿触发计次功能,并采用软件消抖确保数据准确性。旋转编码器的计次方法类似,但未展开具体代码。整个设计体现了外部中断在嵌入式系统中的高效应用。

2025-10-21 21:26:06 924

原创 按键控制LED&光敏传感器控制蜂鸣器

基于STM32的硬件控制项目 本项目包含两个功能模块:1)按键控制LED灯,2)光敏传感器控制蜂鸣器。 按键控制LED模块: 采用GPIO端口控制,LED灯连接PA1和PA2引脚 通过按键开关(PB1和PB11)触发LED状态切换 实现了LED初始化、开关控制、状态翻转等功能 关键点:使用GPIO_ReadOutputDataBit()检测电平状态,实现按键按下时LED状态翻转 光敏传感器控制蜂鸣器模块: 蜂鸣器连接PB12引脚 光敏传感器监测环境光线变化 当光线强度低于阈值时触发蜂鸣器报警 采用类似按键控

2025-10-20 15:45:32 827

原创 GPIO内部输出模式与上下拉电阻

本文介绍了STM32 GPIO的内部输出模式与上下拉电阻原理。主要分析了推挽输出和开漏输出两种模式:推挽输出通过P-MOS和N-MOS互斥工作,适用于芯片供电的外设控制;开漏输出则需外接电源,适用于高电压外设。对比了两者的特性差异,并提及了复用输出模式。此外,说明了上下拉电阻的作用:上拉使初始电平为高,下拉为低,避免悬空干扰。这些原理为GPIO配置提供了理论基础,适用于不同外设的驱动需求。

2025-10-20 14:32:44 318

原创 LED灯闪烁&LED流水灯设计&蜂鸣器

本文介绍了STM32开发板在面包板上的三种基础电路实现:LED灯闪烁、LED流水灯和蜂鸣器控制。通过详细的硬件连接图示和代码示例,说明了GPIO端口配置、时钟初始化及电平控制方法。其中LED闪烁采用GPIO_WriteBit函数实现周期性亮灭;流水灯通过GPIO_Write函数配合十六进制地址控制8个LED依次点亮;蜂鸣器则利用GPIO_ResetBits/SetBits产生间歇性鸣响。特别强调了面包板的正负极连接特性、LED正负极区分以及低电平点亮的注意事项,并指出蜂鸣器VCC需接电源正极形成回路。所有实

2025-10-17 15:33:43 868

原创 STM32点灯操作

在跳转的函数定义中的函数上面可以看到一些声明,包括函数的参数介绍和可供选择的函数参数,第一个参数选择RCC_APB2Periph_GPIOC(至于为什么选择这个函数,我是新手也不太懂),第二个参数选择ENABLE。之后的配置端口模式(涉及结构体函数)、配置端口的高低电平进行点灯操作也是如此操作。

2025-10-15 19:35:56 353

原创 关于Tomcat启动时报工件部署错误的一个解决办法

另外,在Tomcat部署Servlet会报404的一个原因也是因为Tomcat的版本问题,如果用Tomcat10版本的,javax.servlet会变成另外的名字,具体留言我会出贴。是我的jdk版本过高(20),而Tomcat版本只有9,才报的错!因此,我下载了支持jdk20的Tomcat10版本,成功解决。百度了一下,有很多解决方法,我一一尝试后还是没能解决。

2023-10-13 19:36:39 1991 1

空空如也

空空如也

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

TA关注的人

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