<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[potato_may的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/potato1w</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; potato1w]]></copyright><item><title><![CDATA[第十二章：Timer_输入捕获模块 —— 给你的开发板装上“电子秒表”]]></title><link>https://blog.youkuaiyun.com/potato1w/article/details/155854349</link><guid>https://blog.youkuaiyun.com/potato1w/article/details/155854349</guid><author>potato1w</author><pubDate>Fri, 12 Dec 2025 13:50:00 +0800</pubDate><description><![CDATA[摘要：本文详细讲解STM32输入捕获功能，将其比作&quot;电子秒表&quot;来测量外部信号参数。主要内容包括：1）输入捕获原理（通过边沿跳变记录定时器计数值）；2）XL555信号源芯片特性；3）CubeMX配置13个关键步骤；4）频率/周期/脉宽计算公式及计算示例；5）HAL库代码实现（DMA和中断两种方式）。文章特别针对蓝桥杯竞赛需求，提供实用配置建议和常见问题解决方案，帮助开发者快速掌握这一重要外设功能。]]></description><category></category></item><item><title><![CDATA[第十一章：Timer & PWM 模块 —— 给你的开发板装上“节奏大师”！]]></title><link>https://blog.youkuaiyun.com/potato1w/article/details/155854020</link><guid>https://blog.youkuaiyun.com/potato1w/article/details/155854020</guid><author>potato1w</author><pubDate>Fri, 12 Dec 2025 13:33:27 +0800</pubDate><description><![CDATA[本文详解STM32的PWM与定时器模块，通过生动比喻帮助初学者快速掌握核心概念。内容涵盖：1）PWM原理与生活应用；2）硬件/软件PWM实现对比；3）STM32五类定时器功能解析；4）CubeMX配置13项关键参数；5）频率/占空比计算公式与设置步骤；6）HAL库API使用方法；7）与8051定时器的对比。重点强调硬件PWM的高效稳定特性，提供配置口诀和避坑指南，适合电机控制、LED调光等场景开发。通过系统讲解，使开发者能精准控制外设&quot;节奏&quot;，实现从呼吸灯到无刷电机的多样化应用。]]></description><category></category></item><item><title><![CDATA[第十章：RTC 模块 —— 给你的开发板装上“生物钟”！]]></title><link>https://blog.youkuaiyun.com/potato1w/article/details/155826675</link><guid>https://blog.youkuaiyun.com/potato1w/article/details/155826675</guid><author>potato1w</author><pubDate>Fri, 12 Dec 2025 13:21:44 +0800</pubDate><description><![CDATA[📝 RTC模块开发指南摘要 RTC（实时时钟）是嵌入式系统的&quot;生物钟&quot;，断电后仍可通过纽扣电池持续计时。本文详解STM32 RTC开发要点： 1️⃣ 硬件配置关键 推荐LSE(32.768kHz晶振)+VBAT供电 注意时间/日期读取顺序：先GetTime再GetDate 2️⃣ CubeMX核心配置 时钟源选择（LSE最佳） 预分频器设置（自动生成1Hz信号） 双闹钟+唤醒定时器配置 备份域确保数据掉电不丢失 3️⃣ 典型应用场景 电子钟/数据记录仪 低功耗定时唤醒 安全设备防篡改检]]></description><category></category></item><item><title><![CDATA[第九章： I²C 模块 —— 给你的芯片装上“微信”！]]></title><link>https://blog.youkuaiyun.com/potato1w/article/details/155826161</link><guid>https://blog.youkuaiyun.com/potato1w/article/details/155826161</guid><author>potato1w</author><pubDate>Thu, 11 Dec 2025 20:20:07 +0800</pubDate><description><![CDATA[【摘要】 本文系统讲解I²C通信协议及其应用，通过&quot;微信群聊&quot;类比阐释I²C工作原理：两根总线（SDA/SCL）实现多设备通信，MCU作为&quot;群主&quot;通过地址寻址管理设备。重点解析MCP4017数字电位器的控制方法，提供完整的STM32CubeMX配置指南（引脚设置、时钟配置）和底层驱动代码（含EEPROM读写修复）。内容涵盖硬件设计要点（上拉电阻必须）、地址计算（0x5E/0x5F）、数据范围限制（0x7F）等实战细节，并对比I²C与SPI的适用场景。]]></description><category></category></item><item><title><![CDATA[第八章： 滤波模块 —— 给你的数据“洗个澡”！]]></title><link>https://blog.youkuaiyun.com/potato1w/article/details/155824048</link><guid>https://blog.youkuaiyun.com/potato1w/article/details/155824048</guid><author>potato1w</author><pubDate>Thu, 11 Dec 2025 20:08:29 +0800</pubDate><description><![CDATA[本文介绍了数据滤波的核心概念与四种常用算法。首先通过电话降噪的比喻形象说明滤波的作用是去除噪声保留有效信息。然后分析了传感器数据常见的噪声来源（环境干扰、硬件误差等），指出滤波能让数据更稳定可靠。重点讲解了四种滤波方法：限幅滤波（设数据范围边界）、中值滤波（取中间值抗脉冲干扰）、算术平均滤波（平滑小波动）和一阶滞后滤波（低通跟踪慢变信号）。每种方法都附有代码示例、适用场景和优缺点分析，并通过图表对比了滤波效果。最后强调应根据具体场景选择合适算法，并提供了完整的头文件实现。全文用生活化比喻使复杂概念易于理解，]]></description><category></category></item><item><title><![CDATA[第七章：ADC 模块 —— 给你的开发板一双“慧眼”！]]></title><link>https://blog.youkuaiyun.com/potato1w/article/details/155789203</link><guid>https://blog.youkuaiyun.com/potato1w/article/details/155789203</guid><author>potato1w</author><pubDate>Wed, 10 Dec 2025 20:29:08 +0800</pubDate><description><![CDATA[📝【STM32 ADC模块高效采集指南】 本文详细讲解STM32 ADC模块的配置与使用技巧： 1️⃣ 硬件连接：强调模拟输入引脚的去耦电容与接地设计，确保信号质量 2️⃣ CubeMX配置： 推荐12-bit右对齐+扫描模式（多通道） 详解DMA循环模式配置（内存地址递增） 3️⃣ DMA机制：比喻为&quot;自动搬运工&quot;，实现ADC数据到内存的无CPU干预传输 4️⃣ 代码实现： 提供DMA双通道缓冲区定义 包含数据归一化处理（/4096）和电压转换公式 5️⃣ 关键口诀：总结分辨率选择、]]></description><category></category></item><item><title><![CDATA[第六章：UART 模块 —— 让你的开发板“会说话”！]]></title><link>https://blog.youkuaiyun.com/potato1w/article/details/155788794</link><guid>https://blog.youkuaiyun.com/potato1w/article/details/155788794</guid><author>potato1w</author><pubDate>Wed, 10 Dec 2025 20:15:30 +0800</pubDate><description><![CDATA[本文详细讲解STM32的UART串口通信实现，涵盖硬件连接、CubeMX配置及两种接收方案：1）中断+超时解析，适合简单命令；2）DMA+空闲中断+环形缓冲区，适合大数据传输。重点通过厨房比喻解释DMA原理，用贪吃蛇类比环形缓冲区。文章提供完整代码实现，包括环形缓冲区管理、DMA初始化和中断处理，并对比两种方案的优缺点。最后总结UART配置口诀，帮助开发者快速掌握串口通信核心要点，根据项目需求选择合适方案。]]></description><category></category></item><item><title><![CDATA[第五章：LCD 模块 —— 让你的开发板“看得见”世界！]]></title><link>https://blog.youkuaiyun.com/potato1w/article/details/155715402</link><guid>https://blog.youkuaiyun.com/potato1w/article/details/155715402</guid><author>potato1w</author><pubDate>Mon, 08 Dec 2025 20:52:09 +0800</pubDate><description><![CDATA[蓝桥杯嵌入式lcd]]></description><category></category></item><item><title><![CDATA[ 第四章：Key 模块 —— 让你的开发板“听得懂”你按了什么！]]></title><link>https://blog.youkuaiyun.com/potato1w/article/details/155715232</link><guid>https://blog.youkuaiyun.com/potato1w/article/details/155715232</guid><author>potato1w</author><pubDate>Mon, 08 Dec 2025 20:40:48 +0800</pubDate><description><![CDATA[摘要：本文介绍两种STM32按键检测方案，适用于STM32G431RBT6开发板。方案一为简洁版，通过位运算识别按键按下/松开瞬间，适合简单应用；方案二采用状态机实现，具备去抖、长按、连按检测功能，适合复杂场景。文章详细讲解了硬件连接原理（上拉电阻+按键接地）、HAL库GPIO读取API，并提供完整代码示例。两种方案均以生活场景比喻（电梯按钮/手机闹钟），帮助初学者理解嵌入式按键处理的核心思想：周期性扫描（5-10ms）和状态管理。文末总结两套方案的适用场景，让开发者能根据项目需求选择合适方案。]]></description><category></category></item><item><title><![CDATA[第三章：LED 模块 —— 为你的开发板点亮“表情”！]]></title><link>https://blog.youkuaiyun.com/potato1w/article/details/155678567</link><guid>https://blog.youkuaiyun.com/potato1w/article/details/155678567</guid><author>potato1w</author><pubDate>Sun, 07 Dec 2025 21:47:05 +0800</pubDate><description><![CDATA[摘要：本文详细讲解了基于STM32G431RBT6开发板的LED模块控制方法，重点介绍了共阳极LED的连接方式（PC8-PC15）和控制原理。核心内容包括：1）LED状态数组ucLed[8]的定义与使用；2）关键函数led_disp()的工作原理，包括数据拼装、取反处理和同步更新机制；3）常见问题解答，如位操作原理和共阳极电路特性；4）实际应用示例和调试技巧。文中特别强调了对GPIO高低8位的保护操作，并提供了简单易懂的&quot;舞台换景&quot;类比来帮助理解LED刷新过程，最后给出了一个LED跑马灯]]></description><category></category></item><item><title><![CDATA[工程框架搭建（续）]]></title><link>https://blog.youkuaiyun.com/potato1w/article/details/155678476</link><guid>https://blog.youkuaiyun.com/potato1w/article/details/155678476</guid><author>potato1w</author><pubDate>Sun, 07 Dec 2025 21:34:55 +0800</pubDate><description><![CDATA[本文介绍了STM32嵌入式系统开发的两个核心模块：系统初始化和任务调度器实现。系统初始化部分指出了常见错误操作（如直接写ODR寄存器）并给出了正确方法，强调时钟使能、GPIO配置和初始状态的正确设置流程。任务调度器部分通过结构体封装任务信息，利用HAL_GetTick()实现基于时间差的任务触发机制，解决了多任务调度问题。文章采用通俗比喻（如&quot;智能管家&quot;）解释技术概念，提供了可直接使用的代码模板，并总结了&quot;初始化三步走&quot;等实用口诀，帮助开发者快速掌握嵌入式系统的基本架]]></description><category></category></item><item><title><![CDATA[ 二、工程框架搭建 —— 打好嵌入式开发的地基！]]></title><link>https://blog.youkuaiyun.com/potato1w/article/details/155677222</link><guid>https://blog.youkuaiyun.com/potato1w/article/details/155677222</guid><author>potato1w</author><pubDate>Sun, 07 Dec 2025 20:43:22 +0800</pubDate><description><![CDATA[零基础小白打蓝桥杯嵌入式第二课！]]></description><category></category></item><item><title><![CDATA[序：代码命名规则 —— 让你的代码“会说话”]]></title><link>https://blog.youkuaiyun.com/potato1w/article/details/155677053</link><guid>https://blog.youkuaiyun.com/potato1w/article/details/155677053</guid><author>potato1w</author><pubDate>Sun, 07 Dec 2025 20:21:33 +0800</pubDate><description><![CDATA[蓝桥杯嵌入式零基础小白到国赛高手第一课！]]></description><category></category></item><item><title><![CDATA[第9讲：函数递归——用“套娃”思维解决复杂问题]]></title><link>https://blog.youkuaiyun.com/potato1w/article/details/152659432</link><guid>https://blog.youkuaiyun.com/potato1w/article/details/152659432</guid><author>potato1w</author><pubDate>Sat, 06 Dec 2025 21:20:37 +0800</pubDate><description><![CDATA[本文介绍了递归编程的核心概念与应用。递归是通过函数调用自身将复杂问题拆解为更小规模的子问题，需要满足终止条件和趋近条件两大铁律以避免无限递归。文章通过阶乘计算和数字逐位打印两个案例展示了递归的实现逻辑，并对比了递归与迭代在效率上的差异，指出递归适合树形结构等天然递归问题，但需警惕栈溢出风险。最后提出斐波那契数列的递归陷阱和经典递归问题挑战，帮助读者深入理解递归的适用场景与局限性。]]></description><category></category></item><item><title><![CDATA[C++ 模板初阶 —— 编写“万能代码”的魔法模具]]></title><link>https://blog.youkuaiyun.com/potato1w/article/details/155647541</link><guid>https://blog.youkuaiyun.com/potato1w/article/details/155647541</guid><author>potato1w</author><pubDate>Sat, 06 Dec 2025 21:16:54 +0800</pubDate><description><![CDATA[📝 C++模板初阶摘要 模板是C++泛型编程的核心工具，通过类型参数化实现代码复用。 🔹 函数模板 使用template&lt;typename T&gt;定义通用函数 编译器根据调用类型自动实例化（隐式/显式） 与普通函数共存时优先匹配普通函数 🔹 类模板 整个类可参数化（如Stack&lt;T&gt;） 需将声明和定义都放在头文件中 💡 优势 消除重复代码 提高可维护性 支持任意兼容类型 ⚠️ 注意 类模板不能分离编译 类型推导需一致 模板为STL等高级特性奠定基础，是掌握现代C++的关键。]]></description><category></category></item><item><title><![CDATA[CC++ 内存管理 —— 程序的“五脏六腑”在哪里？]]></title><link>https://blog.youkuaiyun.com/potato1w/article/details/155615976</link><guid>https://blog.youkuaiyun.com/potato1w/article/details/155615976</guid><author>potato1w</author><pubDate>Fri, 05 Dec 2025 19:50:38 +0800</pubDate><description><![CDATA[📝 C/C++内存管理核心摘要 1️⃣ 内存五大分区： 栈：自动管理，存局部变量 堆：手动管理，malloc/new申请 数据段：存全局/静态变量 代码段：存函数代码和字符串常量 内存映射段：高级用途 2️⃣ C语言动态内存： malloc/calloc分配，free释放 realloc调整大小（注意地址可能改变） 3️⃣ C++内存管理： new：分配内存+调用构造函数 delete：调用析构函数+释放内存 数组用new[]和delete[] ]]></description><category></category></item><item><title><![CDATA[C++ 类和对象（下）——进阶玩法大揭秘！]]></title><link>https://blog.youkuaiyun.com/potato1w/article/details/155615933</link><guid>https://blog.youkuaiyun.com/potato1w/article/details/155615933</guid><author>potato1w</author><pubDate>Fri, 05 Dec 2025 19:46:02 +0800</pubDate><description><![CDATA[C++ 类和对象进阶摘要 本文深入探讨了C++类和对象的进阶特性： 初始化列表：比构造函数体内赋值更高效，特别是对于自定义类型成员。强制使用场景包括引用成员、const成员和无默认构造的类成员。 类型转换：通过单参数构造函数实现隐式类型转换，可用explicit关键字禁止。支持类间转换。 static成员：属于整个类而非单个对象，用于实现类级别的共享数据。静态成员函数无this指针，只能访问静态成员。 其他特性：包括友元(打破封装)、内部类(嵌套类)、匿名对象和编译器优化技术。 ]]></description><category></category></item><item><title><![CDATA[C++ 类和对象（中）—— 默认成员函数全解析！]]></title><link>https://blog.youkuaiyun.com/potato1w/article/details/155578127</link><guid>https://blog.youkuaiyun.com/potato1w/article/details/155578127</guid><author>potato1w</author><pubDate>Thu, 04 Dec 2025 19:54:52 +0800</pubDate><description><![CDATA[C++ 类和对象（中）核心知识点摘要 🔍 核心内容： 默认成员函数：编译器自动生成的6个特殊函数（构造/析构/拷贝构造/赋值重载/取地址重载） 构造函数：初始化对象成员，可重载，不写时生成无参默认构造 析构函数：对象销毁时自动调用，负责资源清理，栈式销毁顺序（后进先出） 拷贝构造：用已有对象初始化新对象，浅拷贝危险，深拷贝必要 关键原则：写了析构就必须写拷贝构造；自定义类型成员会自动调用其构造/析构 💡]]></description><category></category></item><item><title><![CDATA[类和对象（中）]]></title><link>https://blog.youkuaiyun.com/potato1w/article/details/155578105</link><guid>https://blog.youkuaiyun.com/potato1w/article/details/155578105</guid><author>potato1w</author><pubDate>Thu, 04 Dec 2025 19:53:32 +0800</pubDate><description><![CDATA[本文介绍了C++面向对象编程中最重要的默认成员函数机制，包括构造函数、析构函数和拷贝构造函数。主要内容有： 构造函数是对象创建时自动调用的初始化函数，具有与类名相同的名称且无返回值。它可重载，分为无参、带参和全缺省三种形式。 析构函数在对象销毁前自动调用，用于释放资源，名称格式为~类名。它没有参数和返回值，且不可重载。 拷贝构造函数用于通过已有对象初始化新对象，函数签名为类名(const 类名&amp;)。编译器会自动生成浅拷贝版本，但需要资源管理时应手动实现深拷贝。]]></description><category></category></item><item><title><![CDATA[类和对象（上）]]></title><link>https://blog.youkuaiyun.com/potato1w/article/details/155502615</link><guid>https://blog.youkuaiyun.com/potato1w/article/details/155502615</guid><author>potato1w</author><pubDate>Tue, 02 Dec 2025 20:39:27 +0800</pubDate><description><![CDATA[C++类和对象基础摘要 本文介绍了C++中类和对象的基本概念及使用方式： 类与对象：类(class)是抽象设计图，对象(object)是具体实例。例如&quot;日期类&quot;和&quot;2024年3月31日&quot;这个具体日期。 类定义语法： 使用class关键字定义 包含成员变量(属性)和成员函数(方法) 类定义结束必须加分号 访问控制： public：公开访问 private：仅类内访问(默认) protected：类内及子类访问 ]]></description><category></category></item></channel></rss>