自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 nucleo-f411re学习记录-14,OTA 固件升级-bootloader与app分区实现

本文介绍了基于STM32的OTA无线固件升级实现方案。核心思路采用Bootloader+App双分区设计:Bootloader位于0x8000000负责固件更新,App从0x8008000启动实现业务功能。关键技术包括:1) 中断向量表重定向(SCB->VTOR);2) 跳转函数实现内存地址切换;3) 使用STM32CubeProgrammer工具进行分区烧录。

2026-04-30 15:41:26 307

原创 nucleo-f411re学习记录-13,flash的操作

本文介绍了STM32F411RET6芯片的Flash操作流程,主要包括三个关键部分:1) 定义Flash扇区地址范围,从16KB到128KB不等;2) 提供了核心API函数,包括解锁/锁定Flash、清除标志位、擦除扇区和编程字节;3) 实现了获取扇区地址及尾部地址的辅助函数。重点强调在修改Flash前必须调用FLASH_Unlock()解锁,操作完成后立即用FLASH_Lock()上锁的安全机制,并给出了完整的编程流程建议。文中代码示例详细展示了如何安全地进行Flash读写操作。

2026-04-29 11:28:49 219

原创 nucleo-f411re学习记录-12,Wifi模块ESP8684

本文介绍了使用ESP8484 WiFi模块与STM32微控制器的串口通信实现。通过UART1接口连接,采用中断方式接收数据,并设计了环形缓冲区处理机制。系统包含接收任务(检测50ms无新数据视为完成接收)和发送任务(通过队列管理待发数据)。初始化部分配置了GPIO复用、串口参数及NVIC中断优先级。代码提供了完整的收发处理框架,包括数据超时判断、缓冲区管理及错误处理机制,适用于AT指令交互场景。

2026-04-27 15:11:20 46

原创 nucleo-f411re学习记录-11,蓝牙模块HC-05

摘要: 本文介绍了基于STM32的HC-05蓝牙模块串口通信实现方案。通过UART6接口实现蓝牙数据收发,采用双任务架构:接收任务通过中断机制检测数据并判断接收完成(50ms无新数据视为结束),发送任务使用队列机制处理数据发送。关键实现包括串口初始化(使能接收中断)、中断服务程序(256字节缓冲区)、接收任务(动态检测数据长度)和发送任务(队列管理)。该方案有效解决了蓝牙通信中的延迟和多任务协调问题,代码已开源。

2026-04-27 11:53:18 360

原创 nucleo-f411re学习记录-10,温湿度传感器DHT11

本文针对DHT11温湿度传感器的驱动代码进行了优化改进。主要修改包括:1)在DHT11_Read_Bit函数中将超时返回值由0x1改为0xFF,便于区分异常状态;2)完善DHT11_Read_Data功能,支持获取温湿度的整数和小数部分,并组合成浮点数值。

2026-04-24 18:51:48 34

原创 nucleo-f411re学习记录-9,双轴XY摇杆传感器

本文介绍了双轴XY摇杆传感器的硬件连接与STM32驱动实现。该传感器通过5个引脚(GND、+5V、VRx、VRy、SW)与主控芯片连接,其中VRx和VRy输出模拟信号,SW输出数字信号。文章详细说明了ADC初始化配置流程,包括GPIO模式设置(模拟输入和上拉输入)、ADC参数配置(12位分辨率、独立模式等),并提供了带超时保护的ADC读取函数实现。最后封装了X/Y轴数据读取接口,完整实现了摇杆位置检测功能。所有代码已开源至指定代码仓库。

2026-04-24 14:58:13 51

原创 nucleo-f411re学习记录-8,点亮RGB灯

该代码实现了基于STM32的RGB LED控制功能,通过TIM3定时器的三个PWM通道(PA6/PA7/PB0)分别控制红绿蓝三色。配置步骤包括:1)初始化GPIO为复用功能模式,2)设置TIM3为1kHz PWM输出(50MHz时钟源,1000级分辨率),3)提供RGB_SetColor()函数通过调整占空比(0-999)实现颜色混合。

2026-04-24 11:56:58 285

原创 nucleo-f411re学习记录-7,移植FreeRTOS

摘要: 本文介绍了在STM32项目中使用FreeRTOS的优势,特别适用于多任务并发场景(如计算、通信、控制等)。FreeRTOS以较小的资源开销(几KB RAM/Flash)提供结构化、可扩展的架构。移植步骤包括配置CPU频率(如100MHz)、定时器中断(1ms触发)和堆大小(需参考硬件内存限制)。关键配置参数包括configCPU_CLOCK_HZ、configTICK_RATE_HZ及configTOTAL_HEAP_SIZE。

2026-04-24 10:29:40 208

原创 nucleo-f411re学习记录-6,使用独立看门狗

摘要: 本文介绍了独立看门狗(IWDG)的基本原理与STM32实现方法。看门狗作为硬件定时器,超时未喂狗会触发系统复位,常用于检测死机问题。通过配置LSI时钟(32kHz)、预分频器(64分频)和重装载值(1250),实现2.5秒超时复位功能。核心代码包括初始化(IWDG_Init)和喂狗(IWDG_Feed),实测在2.7秒内喂狗可避免复位,与设定值有些误差,影响不算太大。示例中主循环通过delay_ms(2700)验证功能,确保系统稳定性。

2026-04-23 19:37:34 29

原创 nucleo-f411re学习记录-5,使用串口打印

摘要: 本文记录了STM32串口调试log输出的解决方案。通过分析发现USART2与ST-Link存在冲突,不能外接usb转ttl实现日志输出,直接通过usb线输出log。关键步骤包括:1) 硬件上确认USART1/6引脚可用;2) 编写UART初始化代码,配置GPIO复用和串口参数;3) 重定向printf到目标串口。该方法有效解决了调试时的日志输出问题,且不影响程序下载功能。

2026-04-23 18:25:29 27

原创 nucleo-f411re学习记录-4,定时器TIM2实现延时功能

本文介绍了使用STM32定时器实现精确延时的方法。通过配置TIM2定时器(挂载在APB1总线,50MHz时钟),实现了微秒级和毫秒级延时函数。具体步骤包括:1)初始化定时器配置(不分频时每个计数周期20ns);2)实现delay_us()函数通过等待定时器更新事件实现微秒延时;3)基于delay_us()封装delay_ms()毫秒延时函数。该方法可替代滴答定时器,适用于需要精确延时的场景,如按键检测和LED闪烁控制。文中提供了完整的代码实现和配置说明。

2026-04-23 17:43:00 44

原创 nucleo-f411re学习记录-3,实现按键功能

本文介绍了如何实现STM32 GPIO输入功能,通过PC13按键检测实现短按和长按功能。首先初始化GPIOC引脚为输入模式,并配置上拉电阻。然后编写按键扫描函数,通过计时判断短按(触发LED切换)和长按(触发LED闪烁5次)。主循环中检测按键事件并执行相应操作。代码包含按键状态机处理,有效区分不同按键时长,并提供了清晰的接口定义和调用示例。

2026-04-23 16:47:30 375

原创 nucleo-f411re学习记录-2,点亮led

本文介绍了STM32F411RE开发板GPIO输出控制的实现步骤。首先通过原理图确认用户LED连接在PA5引脚,高电平点亮。在工程中创建外设目录并添加LED驱动文件,配置GPIO为推挽输出模式。提供了LED初始化、开关控制和状态翻转函数,并利用系统滴答定时器实现精确延时功能。文中还给出了相关代码片段和工程结构截图,完整代码已同步至Gitee仓库。该实现为后续外设开发奠定了基础。

2026-04-23 16:09:25 380

原创 nucleo-f411re学习记录-1,搭建标准库工程

本文介绍了STM32F411RE开发板工程的配置过程。主要内容包括:1)工程文件目录结构说明,包含启动文件、核心文件、主程序及标准库文件;2)添加头文件路径和关键宏定义USE_STDPERIPH_DRIVER、STM32F411xE;3)工程设置包括生成hex/bin文件、使用MicroLib微库;4)解决编译错误的方法,通过排除stm32f4xx_fmc.c和stm32f4xx_fsmc.c文件。相关资源已上传至Gitee仓库供后续更新使用。

2026-04-23 11:11:09 159

原创 记录一下:关于Keil编译出现的异常

摘要:在Keil调试过程中出现"_defs.h"和"iosfwd"文件中的"namespace"未定义及分号缺失错误。经排查发现并非直接修改导致,而是由某个头文件引入的问题。最终发现缺少".h"后缀的头文件引用,补全后问题解决。该问题表明头文件名称不完整可能导致间接的编译错误,需注意细节检查。

2026-04-22 17:10:46 35

原创 git本地提交推送到远程仓时失败

git push 推送异常,原因与邮箱限制有关

2024-11-01 15:25:45 435

原创 STM32f407zgt6的学习记录-(1)环境搭建

USE_STDPERIPH_DRIVER,STM32F40_41xxx 添加,相当于宏定义,有些是根据这些宏进行条件编译。添加完文件,编译大概率是会出错的,若是下面这个问题,直接移除掉 stm32f4xx_fmc.c 这个文件。要是想生成bin文件,则添加 fromelf --bin -o “$L@L.bin” “#L”像文件带个钥匙的就是文件属性设置为只读,是不能改动,若需要改动则需要到目录下修改文件属性。若要开启代码补全功能,则如下图,我的设置是4个才会出现提示。按照个人习惯文件存储的位置不同。

2024-11-01 13:55:03 548

原创 关于24年EMV接触认证的一些信息

有关EMVL1与L2的测试认证一些信息

2024-10-31 15:51:41 1030

原创 关于ESP32-C2(ESP8684)的部分AT指令的实现

关于乐鑫ESP32-C2wifi模块的AT指令的一些使用

2024-10-31 14:30:29 1849 2

原创 关于Visual Studio 2013使用时出现error LNK2019: 无法解析的外部符号_main,该符号在函数tmainCRTStartup 中被引用

自从使用KEIL之后很少使用vs,想着编译一下mbedtls库,顺便学习一下加密算法的使用,结果刚建好工程,写了一个main函数就挂了,编译的时候出现。遇事不决,百度走起,看来好多篇资料,感觉不太符合。莫名的回去看了看main.c文件,看到了main函数被我写成了mian,哭死。

2024-01-03 20:28:52 599 1

原创 关于USB驱动安装失败,或者说安装异常导致插上电之后电脑蓝屏不断重启

看到有说删去USB设备的,但我想着是出问题的USB还没插上去,删除其他的没有用啊,就这方法,也怕删除了,鼠标键盘不能用,怎么继续操作其他的,所以就没按照他的搞。客户发过来一个usb的驱动,作为一种串口使用,想着更新一下,本来安装的时候已经警告说有异常,但我还是强行安装,导致电脑蓝屏之后一直重启,拔掉USB线才停止重启,但一插上直接蓝屏。因为要删除的是系统文件,需要权限,况且我想着四个文件一起删,结果打开文件属性没有更改权限的功能,放弃。

2024-01-03 20:17:09 1073 1

原创 记录一下:关于KEIL5开启自动补全代码功能后,还是不能出现提示

因为这个不是第一个工程,之前的工程都是可以补全的,怎么新建了一个工程就不行了,思来想去,网上到处看解决方案,有说什么键盘冲突的,开始还试了一下,不太明白,放弃,后面在main函数里面,发现可以实现补全功能,脑子灵光一现,明白新的.c文件没有加入项目中。天–杀的猪脑子,大晚上的脑子不好使了。以此记录,望后人谨记,不要犯我这种低级错误。如图,按理已经开启了补全这个功能,但是还是没有出现需要补全的代码提示。

2023-12-28 23:21:18 5841 8

空空如也

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

TA关注的人

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