自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 nanoMODBUS MODBUS-RTU 主机移植到 STM32F4 教程

本教程详细介绍了如何将nanoMODBUS的MODBUS-RTU主机功能移植到STM32F4平台。主要内容包括:1)使用STM32CubeMX配置FreeRTOS、UART和DMA;2)解析nanoMODBUS源码结构,重点修改硬件适配层;3)实现DMA发送/接收机制,通过信号量实现任务同步;4)创建Modbus任务,实现周期性的寄存器读取功能。教程提供了完整的代码实现方案,包括串口DMA配置、信号量处理及Modbus通信任务框架,适合嵌入式开发人员参考。

2025-09-03 23:04:09 1386 1

原创 LVGL8.2移植到正点原子STM32F407ZGT6探索者4.3‘MCU屏幕笔记

本文介绍了在CLION+GCC+CMAKE环境下移植LVGL图形库的步骤。主要内容包括:1)将LVGL源码解压至工程根目录;2)分析LVGL自带的CMakeLists文件结构,重点说明了根据不同平台选择对应cmake文件;3)修改主CMake文件实现项目链接;4)提供了基于FreeRTOS的LVGL任务示例代码;5)最后指出需要在lv_conf.h中启用widgets演示功能。该移植方案适用于STM32F407平台,通过官方demo测试验证移植正确性。

2025-08-27 13:43:14 282

原创 STM32+LwIP+FreeRTOS网络编程实战指南

这是一篇关于嵌入式网络开发的实用指南,重点介绍了在STM32F4平台上整合LwIP协议栈与FreeRTOS实现网络功能的核心技术。文章系统讲解了从底层Socket通信到应用层协议的开发路径,包括TCP/IP基础、UDP通信、HTTP协议实现和MQTT物联网协议。特别强调了RTOS环境下的阻塞I/O处理机制、网络字节序转换、HTTP协议行为特点以及MQTT发布/订阅模型的实现方法。最后提供了工程实践中的关键调试经验,如资源管理、时序控制和源码级调试技巧,为开发者构建稳定可靠的物联网设备提供了实用指导。

2025-08-18 11:50:37 380

原创 精通FreeRTOS静态任务:从入门到最佳实践

从动态到静态,不仅仅是API的改变,更是编程思想的转变——从追求灵活方便,到追求稳健、可预测和绝对可靠。在资源受限、对安全性要求极高的嵌入式世界里,静态任务创建是FreeRTOS赋予我们的一把利器。掌握它,你的应用程序将站上一个更坚实可靠的新台阶。

2025-07-28 00:35:54 943

原创 从HardFault到真相:FreeRTOS任务创建与调试深度解析

FreeRTOS为嵌入式开发带来了强大的并发处理能力,但也将开发者从“顺序执行”的安逸区带入了一个充满异步、抢占和资源共享的“新世界”。在这个世界里,很多bug不再是简单的逻辑错误,而是隐藏在任务时序和状态切换中的“幽灵”。本文将从FreeRTOS最核心的概念——动态任务创建 () 出发,结合一系列从真实调试场景中提炼出的经典问题,深度剖析从任务创建到复杂调度行为背后的原理,帮助你真正驾驭FreeRTOS。当你用调试器查看一个分配了512字节堆栈的任务时,可能会惊讶地发现总大小显示为504字节。

2025-07-28 00:03:43 1058

原创 外部SRAM在GCC及非KEIL/ARMCC环境下的配置过程与踩坑记录

【摘要】本文针对STM32开发者从Keil切换到GCC工具链时遇到的外部SRAM配置问题展开分析。通过实验发现,GCC的__attribute__((at(ADDRESS)))指令无法直接将变量定位到外部SRAM,原因是链接器脚本未定义外部SRAM区域,导致变量被默认分配至内部SRAM。解决方案包括三步:修改链接器脚本添加ExtSRAM定义、使用section属性指定变量段、确保FSMC在初始化前完成配置。研究揭示了Keil与GCC工具链的本质差异——前者提供"一站式"处理,后者需要开发

2025-07-20 01:47:43 1126

原创 STM32将内部FLASH作为E2PROM读写指南

本文旨在为STM32开发者提供一份关于内部Flash读写的核心技术指南。内容聚焦于关键操作、常见错误及其解决方案,帮助开发者快速构建稳定、高效的Flash驱动。

2025-07-11 19:23:50 770

原创 volatile关键字在嵌入式开发中的重要作用,STM32,8051,ARM,32位单片机

编译器的首要目标之一就是,让程序运行得更快、体积更小。为此,它会做很多“聪明”的假设。。:是CPU内部速度最快的存储单元。:相对于寄存器,访问速度要慢得多。volatile一个“聪明”的编译器可能会这样想:“嗯,p_addr指向的地址在这两次读取之间没有被我的代码修改过。为了提高效率,我没必要去访问两次慢速的Flash内存。我可以在第一次读取*p_addr后,把它的值存到一个高速的CPU寄存器里。当第二次需要读取*p_addr时,我直接从这个寄存器里拿数据就行了,快得多!

2025-07-11 19:11:56 341

原创 __HAL_DMA_GET_FLAG的BUG

进行与操作的时候并没有进行移位,这就会造成但ISR对应位是0时可以正常返回RESET但是当为1时 不一定能返回SET。但由于宏内部的问题,DMA2->HISR & (注释写的返回值是SET或者RESET。

2025-05-31 19:34:45 422

原创 CubeMX关于刹车输入的一个小BUG

摘要:使用STM32CubeMX配置定时器PWM刹车功能时,需确保刹车极性与引脚上下拉模式相反,否则会导致复位后波形异常。经检测发现CubeMX未正确初始化刹车输入引脚,需手动修改配置才能正常工作。该问题涉及硬件外设的正确初始化设置。

2025-05-24 12:03:17 347

原创 STM32F103使用硬件I2C调用MPU6050时数据读取错误(-11823)或数据无法更新,EV8_2等例程无法通过等问题解决方案

和标题一样,这是我最困扰的问题之一,在我跟着江协科技的视频教程使用硬件I2C外设I2C2调用MPU6050时发现数据读取出错,设备地址不正确,数据不更新,事件ERROR死循环等问题。看到这个贴子,笔者茅塞顿开,立马打开IDE将I2C外设从I2C2切换为I2C1,编译下载后,果然,问题解决了,读取非常顺畅,和软件I2C读取数据无差别。笔者尝试很多方法去解决,使用了KEIL5调试 串口调试 OLED调试都试过,唯独没有怀疑STM上的I2C外设,具体可参考此篇。

2024-07-11 14:17:33 1859 3

空空如也

空空如也

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

TA关注的人

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