自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 兴趣爱好——虾哥开源小智AI机器人搭建(丐版—最低成本)ESP32开发板 MicroPython V1.0.0 Rev1

本文介绍了ESP32在VSCode+ESP-IDF环境下的丐版搭建教程,重点解决烧录成功后无现象的常见问题。主要原因是ESP32处于下载模式而非运行模式,表现为rst:0x1和boot:0x7的启动状态。提供了三种解决方案:硬件复位操作、检查GPIO0连接状态以及强制退出下载模式。特别提醒初学者在前期测试阶段不要过早引出GPIO0作为唤醒开关,建议先确保OLED正常显示后再进行相关操作。文中还提供了源码版本信息(1.5.6)和硬件连接参考。

2025-08-18 19:44:56 330

原创 STM32F103C8T6学习——直接存储器访问(DMA)标准库实战3(ADC数据采集+DMA回传)

本文介绍了一个基于STM32F103C8T6微控制器的双通道模拟信号采集系统。系统采用ADC1(光敏和红外传感器输入)、DMA1(双通道数据自动传输)和USART1(串口通信)等外设,构建了高效的数据采集流水线。通过DMA实现ADC数据自动搬运至内存数组,CPU仅需定期格式化数据并通过DMA发送至上位机,显著降低了CPU占用率。重点阐述了ADC连续扫描模式配置、DMA循环传输机制及volatile关键字的使用,展示了硬件并行工作的嵌入式系统设计思想。该系统实现了2Hz的数据采集频率,具有高实时性和低功耗特点

2025-08-15 15:08:35 1074

原创 STM32F103C8T6学习——直接存储器访问(DMA)标准库实战2(DMA串口接收与回显服务器 (DMA-RX))

本项目基于STM32F103C8T6微控制器与标准外设库(SPL),成功实现了一个高性能、高健壮性的DMA串口回显服务器。该系统巧妙运用DMA循环模式接收数据,并结合串口的IDLE线路空闲中断来精确判断不定长数据帧的结束,极大降低了CPU开销。项目的关键和精髓在于中断服务函数中对DMA通道的精细化状态管理。通过在每次任务循环后,手动重置DMA接收通道的数据计数器、并清除DMA发送通道的“传输完成”标志位,我们最终解决了因硬件状态残留导致的“仅首次成功”和“数据错乱”等典型“坑点”。

2025-08-14 19:26:40 577

原创 FreeRTOS学习笔记(四)——任务管理

本文介绍了FreeRTOS任务创建的核心要点,重点关注动态和静态两种任务创建方式。动态创建使用xTaskCreate函数,需要指定任务函数、名称、栈大小、优先级等参数,系统会从堆内存自动分配资源,但存在内存不足失败的风险。静态创建使用xTaskCreateStatic函数,需预先分配好栈和任务控制块内存,可靠性更高但灵活性较低。文章详细说明了两个函数的参数含义、返回值及使用注意事项,并通过类比形象地解释了两种方式的区别。最后强调参数类型匹配的重要性以避免错误。

2025-08-13 21:23:53 677

原创 STM32F103C8T6学习——直接存储器访问(DMA)标准库实战1(入门级 - “解放CPU的直观展示”)

本项目演示了在STM32F103C8T6微控制器上,如何利用直接内存访问(DMA)技术实现高效的串口(UART)数据传输。核心程序在主循环中周期性地调用函数,以非阻塞方式启动DMA传输。CPU仅需下达该指令,便可从繁琐的数据搬运任务中解放出来,转而处理其他逻辑。DMA控制器则在后台自主完成内存到UART外设的数据传送。最终,PC串口助手成功接收到开发板循环发送的信息,验证了CPU主程序与DMA数据传输可并行工作、互不干扰,该方法有效提升了嵌入式系统的运行效率与实时性。

2025-08-13 10:49:47 1082

原创 STM32F103C8T6学习—直接存储器访问(DMA) 理论篇

本文深入浅出地讲解了STM32的DMA技术及其应用。通过CEO与快递小哥的生动比喻,形象说明了DMA如何解放CPU,提高系统效率。重点介绍了STM32F103C8T6的DMA资源(1个DMA1控制器,7个通道)及关键配置参数(源/目标地址、传输方向、数据宽度等)。随后通过一个实战项目演示了如何使用DMA实现串口数据发送,同时保证LED灯正常闪烁,直观展现了DMA的优势。项目采用STM32CubeMX配置,结合HAL库实现,通过对比实验验证了DMA在降低CPU负载方面的重要作用。

2025-08-12 09:04:06 778

原创 FreeRTOS学习笔记-RTOS如何使用栈(三)

FreeRTOS中每个任务拥有独立栈的原因是为了在任务切换时正确保存和恢复执行现场。现场包括CPU寄存器(程序计数器、通用寄存器等)和函数调用栈(局部变量、返回地址等)。如果任务共享同一个栈,切换时会导致栈数据被覆盖,造成程序崩溃。FreeRTOS通过任务控制块(TCB)管理每个任务的私有栈,在切换时保存当前任务的栈指针到TCB,并恢复下一个任务的栈指针,确保各任务现场完整隔离,实现透明的任务切换执行。

2025-08-11 20:12:23 695

原创 FreeRTOS学习笔记—堆和栈(二)

本文介绍了计算机内存管理中堆和栈的核心概念与工作原理。堆是一个动态分配的大内存区域,需要手动管理(通过malloc/free),适合存储运行时确定大小的数据;栈则是自动管理的连续内存区域,用于存储函数调用时的局部变量和参数,遵循后进先出原则。文章通过仓库和储物柜的比喻,阐述了堆的灵活分配与栈的高效自动管理特性,并详细说明了函数调用时栈如何保存现场和恢复现场的关键机制,突出了这两种内存结构在程序执行中的不同作用与重要性。

2025-08-11 16:56:45 837

原创 FreeRTOS入门学习笔记(一)

本文介绍了RTOS多任务系统的基本原理,重点讲解了使用CubeMX配置FreeRTOS工程的完整流程。主要内容包括:1. RTOS核心机制,通过时间片轮转实现任务"并行"执行,需解决互斥和同步问题;2. 使用CubeMX新建STM32工程的详细步骤,特别是HSE/LSE时钟源的配置选择;3. 时钟树配置建议和FreeRTOS版本选择(推荐CMSIS-RTOS V2);4. 开发中常见报错解决方案,如启动文件缺失导致的L6236E错误。文章还提供了LED闪烁实验的配置示例,适合嵌入式开发者

2025-08-11 09:55:51 742

原创 Linux基础学习笔记(一)程序的编译和调试

gcc(GNU Compiler)是GNU推出的多平台编译器,可以将C、C++源程序编译连接成可执行文件,支持以下后缀.i 已经预处理过的C源代码文件.s 汇编语言源代码文件。

2025-07-03 18:08:15 212

原创 【STM32F103C8T6】多路USART串口Printf重定向标准库版

最近在学习过程中对串口便捷输出数据有应用需求,原本的实现思路是将串口重定向到printf进行数据输出,但是通常情况下只能重定向到一个串口,后来随着对上述文章的学习,在使用STM32F103C8T6实现了多路USART串口Printf重定向,以达到在多个串口上进行输出,而又不用为每个串口单独封装发送函数。

2024-12-28 21:16:38 1367 2

原创 基于STM32F103C8T6的PID增量式控制(原理+代码+感悟)

编码器A相PA6 编码器VCC3.3V 编码器B相PA7 编码器GNDGNDTB6612_AIN1PA5 USB转TTLRXPB10(USART3 TX)TB6612_AIN2PA4 USB转TTLTXPB11(USART3 RX)TB6612_PWMATIM2_CH3(PA2)软件层面我们使用TIM4来配置编码器采样时间在

2024-10-17 22:54:00 2701

原创 编程思想:解耦—卸载循环函数

解耦—卸载循环函数

2024-08-04 11:29:05 936

原创 编程思想:解耦 的运用

编程中解耦思想的运用

2024-08-03 16:05:51 936 1

STM32F103C8T6学习-直接存储器访问(DMA)标准库实战3(ADC数据采集+DMA回传)

本文介绍了一个基于STM32F103C8T6微控制器的双通道模拟信号采集系统。系统采用ADC1(光敏和红外传感器输入)、DMA1(双通道数据自动传输)和USART1(串口通信)等外设,构建了高效的数据采集流水线。通过DMA实现ADC数据自动搬运至内存数组,CPU仅需定期格式化数据并通过DMA发送至上位机,显著降低了CPU占用率。重点阐述了ADC连续扫描模式配置、DMA循环传输机制及volatile关键字的使用,展示了硬件并行工作的嵌入式系统设计思想。该系统实现了2Hz的数据采集频率,具有高实时性和低功耗特点

2025-08-15

STM32F103C8T6学习-直接存储器访问(DMA)标准库实战2(DMA串口接收与回显服务器 (DMA-RX))

本项目基于STM32F103C8T6微控制器与标准外设库(SPL),成功实现了一个高性能、高健壮性的DMA串口回显服务器。 该系统巧妙运用DMA循环模式接收数据,并结合串口的IDLE线路空闲中断来精确判断不定长数据帧的结束,极大降低了CPU开销。项目的关键和精髓在于中断服务函数中对DMA通道的精细化状态管理。 通过在每次任务循环后,手动重置DMA接收通道的数据计数器、并清除DMA发送通道的“传输完成”标志位,我们最终解决了因硬件状态残留导致的“仅首次成功”和“数据错乱”等典型“坑点”,确保了系统在连续通信下的可重复性与绝对稳定性。

2025-08-14

STM32F103C8T6学习-直接存储器访问(DMA)标准库实战1(入门级 - “解放CPU的直观展示”)

UARTTX+DMA

2025-08-13

【STM32F103C8T6】多路USART串口Printf重定向标准库版

多路USART串口Printf重定向测试源码

2024-12-28

基于STM32F103C8T6的PID增量式控制代码

基于STM32F103C8T6的PID增量式控制代码

2024-10-17

空空如也

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

TA关注的人

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