<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[SAN0821的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/SAN0821</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; SAN0821]]></copyright><item><title><![CDATA[嵌入式系统传感器接口设计]]></title><link>https://blog.youkuaiyun.com/SAN0821/article/details/160218465</link><guid>https://blog.youkuaiyun.com/SAN0821/article/details/160218465</guid><author>SAN0821</author><pubDate>Thu, 16 Apr 2026 16:06:03 +0800</pubDate><description><![CDATA[嵌入式系统传感器接口设计摘要 本文系统介绍了嵌入式系统中各类传感器的接口设计方法。主要内容包括：传感器分类（模拟/数字/开关量）、模拟传感器信号调理电路设计（放大/滤波/线性化）、ADC接口实现，以及数字传感器I2C、SPI、UART等接口协议的应用。文章详细阐述了温度、温湿度、光照等常见传感器的具体接口方案，提供了Arduino、STM32等平台的代码示例，并介绍了开关量传感器的中断触发和防抖处理技术。全文涵盖了从硬件电路设计到软件实现的完整流程，为嵌入式系统开发人员提供了实用的传感器接口设计指南。]]></description><category></category></item><item><title><![CDATA[嵌入式系统实时操作系统]]></title><link>https://blog.youkuaiyun.com/SAN0821/article/details/160216915</link><guid>https://blog.youkuaiyun.com/SAN0821/article/details/160216915</guid><author>SAN0821</author><pubDate>Thu, 16 Apr 2026 15:02:20 +0800</pubDate><description><![CDATA[嵌入式实时操作系统（RTOS）是专为嵌入式系统设计的轻量级操作系统，强调任务的时间约束和确定性响应。主流RTOS如FreeRTOS和RT-Thread具有轻量级、可裁剪、多架构支持等特点，提供任务管理、同步通信、内存管理等核心功能。FreeRTOS以其简单易用和商业免费著称，支持多种处理器；RT-Thread则提供丰富的组件和中文文档。两者都广泛应用于工业控制、汽车电子等领域，开发者可根据项目需求选择合适的RTOS进行嵌入式系统开发。]]></description><category></category></item><item><title><![CDATA[嵌入式系统数据处理技术]]></title><link>https://blog.youkuaiyun.com/SAN0821/article/details/160216431</link><guid>https://blog.youkuaiyun.com/SAN0821/article/details/160216431</guid><author>SAN0821</author><pubDate>Thu, 16 Apr 2026 14:44:10 +0800</pubDate><description><![CDATA[本文介绍了嵌入式系统中常用的数据处理技术，包括数据滤波、傅里叶变换和数据校准三大类方法。数据滤波部分详细讲解了移动平均滤波、中值滤波、卡尔曼滤波和IIR滤波器的原理、特点及实现代码。傅里叶变换部分涵盖了DFT和FFT算法及其在频谱分析、滤波和故障诊断中的应用。数据校准部分则介绍了线性和非线性校准方法。这些技术可有效处理传感器数据中的噪声和非线性问题，提升嵌入式系统的数据处理能力。]]></description><category></category></item><item><title><![CDATA[嵌入式系统电源设计指南]]></title><link>https://blog.youkuaiyun.com/SAN0821/article/details/160216234</link><guid>https://blog.youkuaiyun.com/SAN0821/article/details/160216234</guid><author>SAN0821</author><pubDate>Thu, 16 Apr 2026 14:40:37 +0800</pubDate><description><![CDATA[《嵌入式系统电源设计指南》摘要：本文系统介绍了嵌入式系统的电源设计要点，包括三种主要电源类型（线性电源、开关电源、电荷泵）的特性与应用场景，详细解析了稳压电路（线性/开关稳压器）和电池管理电路的设计方法。针对不同应用需求提供了电池选型指南，阐述了低功耗设计的硬件/软件策略，并给出电源干扰防护措施。文章还包含多个典型电源设计实例（如Arduino兼容板、低功耗传感器节点、工业控制系统），以及电源测试验证流程和常见问题解决方案，最后总结了电源设计的最佳实践原则，为嵌入式系统开发者提供全面的电源设计参考。]]></description><category></category></item><item><title><![CDATA[嵌入式通信协议]]></title><link>https://blog.youkuaiyun.com/SAN0821/article/details/160215124</link><guid>https://blog.youkuaiyun.com/SAN0821/article/details/160215124</guid><author>SAN0821</author><pubDate>Thu, 16 Apr 2026 14:30:18 +0800</pubDate><description><![CDATA[嵌入式通信协议主要包括UART、I2C、SPI和CAN四种常用方式。UART采用异步串行通信，简单易用但速率较低；I2C使用两根线实现主从通信，适合连接多个设备；SPI通过四线制实现高速全双工传输；CAN采用差分信号，具有强抗干扰能力，适用于汽车和工业环境。每种协议各有特点：UART和I2C硬件简单但速率有限，SPI速度快但接线复杂，CAN可靠性高但成本较高。开发时可根据项目需求选择合适协议，示例代码展示了在Arduino和STM32等平台上的实现方法。]]></description><category></category></item><item><title><![CDATA[进程通信与网络协议]]></title><link>https://blog.youkuaiyun.com/SAN0821/article/details/159994646</link><guid>https://blog.youkuaiyun.com/SAN0821/article/details/159994646</guid><author>SAN0821</author><pubDate>Thu, 09 Apr 2026 19:18:12 +0800</pubDate><description><![CDATA[本文摘要： 本文系统介绍了Linux系统中的进程间通信机制、文件类型和网络通信知识。主要内容包括：1）六种进程间通信方式（管道、信号、共享内存等）的特点与应用场景；2）Linux七种文件类型的分类；3）网络通信的核心知识，涵盖协议特性、七层/四层模型、套接字原理及五种I/O模型。重点对比了TCP/UDP协议的差异，分析了不同网络I/O模型的性能特点，并介绍了广播与组播的实现机制。全文从底层原理到实际应用，全面阐述了Linux系统通信的关键技术。]]></description><category></category></item><item><title><![CDATA[深入解析进程通信与生命周期]]></title><link>https://blog.youkuaiyun.com/SAN0821/article/details/159994593</link><guid>https://blog.youkuaiyun.com/SAN0821/article/details/159994593</guid><author>SAN0821</author><pubDate>Thu, 09 Apr 2026 19:15:49 +0800</pubDate><description><![CDATA[本文摘要： 本文系统介绍了Linux进程间通信(IPC)方式和进程生命周期管理。在IPC方面，详细分析了匿名管道、命名管道、消息队列、共享内存、信号量和本地套接字等六种方式的特性、适用场景及优缺点，并强调了共享内存同步和资源回收等注意事项。在进程管理部分，首先区分了程序与进程的概念，然后深入剖析了进程从创建到终止的完整生命周期，包括就绪态、执行态、睡眠态等状态转换机制，以及fork函数的实现原理。最后，特别说明了僵尸进程的产生原理和回收必要性，为系统资源管理提供了重要参考。]]></description><category></category></item><item><title><![CDATA[Linux进程通信与信号处理全解析]]></title><link>https://blog.youkuaiyun.com/SAN0821/article/details/159994548</link><guid>https://blog.youkuaiyun.com/SAN0821/article/details/159994548</guid><author>SAN0821</author><pubDate>Thu, 09 Apr 2026 19:11:49 +0800</pubDate><description><![CDATA[本文概述了Linux系统中的进程通信机制和信号处理。管道分为无名管道（用于亲缘进程）和有名管道（持久化文件），具有半双工、阻塞式通信特性。kill命令用于进程信号管理，支持按PID或进程名发送信号。信号分为非实时（1-31）和实时（34-64）两类，前者不可靠且可能丢失，后者可靠且按优先级处理。信号实现原理包括产生、挂起、处理和响应四个阶段，内核在进程状态切换时检查并处理信号，支持默认、忽略或自定义三种响应方式。SIGKILL和SIGSTOP信号具有强制处理特性。]]></description><category></category></item><item><title><![CDATA[网络IO模式解析：阻塞、非阻塞与信号驱动]]></title><link>https://blog.youkuaiyun.com/SAN0821/article/details/159994477</link><guid>https://blog.youkuaiyun.com/SAN0821/article/details/159994477</guid><author>SAN0821</author><pubDate>Thu, 09 Apr 2026 19:09:09 +0800</pubDate><description><![CDATA[网络IO模式主要分为阻塞、非阻塞和信号驱动三种。阻塞模式下，进程会在read/write等IO操作时等待数据就绪，文件描述符默认具有此属性。非阻塞模式通过fcntl修改文件描述符属性，使IO函数立即返回。信号驱动模式则通过注册SIGIO信号处理函数，由内核在数据就绪时主动通知进程，避免了轮询开销。三种模式各具特点，适用于不同场景的IO处理需求。]]></description><category></category></item><item><title><![CDATA[标准文件IO与系统文件IO]]></title><link>https://blog.youkuaiyun.com/SAN0821/article/details/159994445</link><guid>https://blog.youkuaiyun.com/SAN0821/article/details/159994445</guid><author>SAN0821</author><pubDate>Thu, 09 Apr 2026 19:03:26 +0800</pubDate><description><![CDATA[本文介绍了Linux系统文件IO与标准文件IO的区别，重点讲解了系统调用函数open()、read()、write()和close()的使用方法。系统文件IO直接与内核交互，无缓冲机制，而标准文件IO基于C标准库实现并维护用户空间缓冲区。详细说明了各函数的参数含义、功能及返回值，包括文件打开方式、权限设置、读写操作等核心内容。这些系统调用是Linux文件操作的基础，返回值中的文件描述符是操作文件的关键标识。]]></description><category></category></item><item><title><![CDATA[C语言：文件I/O]]></title><link>https://blog.youkuaiyun.com/SAN0821/article/details/159731981</link><guid>https://blog.youkuaiyun.com/SAN0821/article/details/159731981</guid><author>SAN0821</author><pubDate>Wed, 01 Apr 2026 16:57:23 +0800</pubDate><description><![CDATA[本文摘要： C语言预处理机制通过条件编译（#ifdef/#ifndef/#if）实现代码选择性编译，支持跨平台开发。文件包含（#include）用于共享头文件内容，需注意避免循环包含。库文件分为静态库（.a）和动态库（.so），前者编译时链接，后者运行时加载。标准I/O操作通过文件指针（FILE*）实现，包括fopen/fclose、单字符读写（fgetc/fputc）和行读写（fgets/fputs）等函数，需注意文件打开模式（r/w/a）和缓冲区管理。多文件开发时，头文件应包含函数声明和宏定义，并通过条]]></description><category></category></item><item><title><![CDATA[C语言：构造类型]]></title><link>https://blog.youkuaiyun.com/SAN0821/article/details/159731134</link><guid>https://blog.youkuaiyun.com/SAN0821/article/details/159731134</guid><author>SAN0821</author><pubDate>Wed, 01 Apr 2026 16:24:25 +0800</pubDate><description><![CDATA[本文摘要： C语言构造类型详解（150字） 本文系统讲解了C语言中的构造类型，重点包括结构体和共用体。结构体部分详细介绍了定义方式、成员访问、数组操作及指针使用，并通过投票系统案例展示实际应用。共用体部分阐述了其共享内存的特性及使用注意事项。文章还深入探讨了字节对齐机制，分析默认对齐规则和#pragma pack自定义对齐方法，并通过示例说明成员顺序对结构体大小的影响。最后介绍了柔性数组的概念和使用场景。全文结合代码案例，全面解析了构造类型的语法规则、内存布局和最佳实践，为C语言开发者提供了实用的参考指南。]]></description><category></category></item><item><title><![CDATA[C语言：动态内存分配和内存操作]]></title><link>https://blog.youkuaiyun.com/SAN0821/article/details/159730829</link><guid>https://blog.youkuaiyun.com/SAN0821/article/details/159730829</guid><author>SAN0821</author><pubDate>Wed, 01 Apr 2026 16:10:52 +0800</pubDate><description><![CDATA[本文介绍了C语言中动态内存分配和内存操作的相关函数。动态内存分配部分详细讲解了malloc、calloc、realloc和free函数的使用方法、参数说明及注意事项，并通过示例代码演示了具体应用场景。内存操作部分则重点介绍了memset、memcpy/memmove、memcmp和memchr等函数的功能特点，强调了对内存重叠、初始化、拷贝等关键问题的处理方式。文章提供了多个完整代码示例，帮助理解各函数的实际应用，并特别提醒了内存泄漏、野指针等常见问题的防范措施。]]></description><category></category></item><item><title><![CDATA[C语言：二级指针及void与void*的区别]]></title><link>https://blog.youkuaiyun.com/SAN0821/article/details/159730227</link><guid>https://blog.youkuaiyun.com/SAN0821/article/details/159730227</guid><author>SAN0821</author><pubDate>Wed, 01 Apr 2026 15:56:59 +0800</pubDate><description><![CDATA[本文系统梳理了C语言指针相关核心概念。主要内容包括：1. 二级指针定义与使用，强调其与指针数组的等效性及与二维数组的区别；2. main函数原型解析，介绍标准写法和扩展形式；3. 常量指针、指针常量和常量指针常量的区别与应用场景；4. 野指针、空指针和空悬指针的识别与防范措施；5. void与void*的类型特性差异；6. 内存管理机制，详细说明栈、堆、数据段和代码段的内存特性及管理方法。文章通过代码示例深入浅出地阐述了指针操作的关键技术点，为C语言指针学习提供了系统性的参考。]]></description><category></category></item><item><title><![CDATA[C语言：字符数组和字符指针-、指针函数、 函数指针]]></title><link>https://blog.youkuaiyun.com/SAN0821/article/details/159729830</link><guid>https://blog.youkuaiyun.com/SAN0821/article/details/159729830</guid><author>SAN0821</author><pubDate>Wed, 01 Apr 2026 15:37:47 +0800</pubDate><description><![CDATA[本文详细讲解了C语言中指针的高级应用，重点包括数组指针、指针数组、函数指针、指针函数和二级指针的使用方法。文章通过多个案例演示了指针与数组的结合应用，如遍历二维数组、字符串操作等；阐述了函数指针的定义和使用，包括回调函数的实现原理；介绍了二级指针的概念及其与指针数组的关系。此外，文中还对比了字符数组和字符指针的区别，强调了指针在不同场景下的适用性。这些内容为深入理解C语言指针机制提供了实用指导。]]></description><category></category></item><item><title><![CDATA[C语言：变量指针、指针变量与数组指针、指针数组]]></title><link>https://blog.youkuaiyun.com/SAN0821/article/details/158206334</link><guid>https://blog.youkuaiyun.com/SAN0821/article/details/158206334</guid><author>SAN0821</author><pubDate>Thu, 19 Feb 2026 10:34:20 +0800</pubDate><description><![CDATA[本文摘要： 本文系统讲解了C语言中指针与数组的核心概念及应用。主要内容包括：1.指针变量与指针运算符(&amp;和*)的使用；2.指针变量作为函数参数的两种交换方式（交换指向和交换数据）；3.指针与数组的关系，包括数组名作为指针、指针运算规则；4.通过下标法和指针法遍历数组的实现与效率对比；5.数组指针（指向整个数组）与指针数组的区别，以及一维和二维数组指针的使用方法。文中通过大量代码示例演示了指针操作数组元素的多种技巧，并分析了不同实现方式的优缺点，为深入理解C语言指针与数组提供了全面指导。]]></description><category></category></item><item><title><![CDATA[C语言：指针基础知识]]></title><link>https://blog.youkuaiyun.com/SAN0821/article/details/158206299</link><guid>https://blog.youkuaiyun.com/SAN0821/article/details/158206299</guid><author>SAN0821</author><pubDate>Thu, 19 Feb 2026 10:18:01 +0800</pubDate><description><![CDATA[本文摘要： 本文系统讲解了C语言中指针的核心概念与应用。主要内容包括：1) 内存地址基础，解释字节、地址、基地址等概念；2) 指针本质，区分变量指针和指针变量，说明指针尺寸在32/64位系统的差异；3) 指针操作，详细讲解取地址(&amp;)和解引用(*)运算符的使用；4) 指针应用，通过变量交换、排序等案例展示指针的两种操作方式：改变指向或修改指向对象的值。文章强调指针与内存访问的直接/间接方式，以及指针类型必须与指向对象类型匹配的重要原则。]]></description><category></category></item><item><title><![CDATA[C语言：函数的作用域和生命周期]]></title><link>https://blog.youkuaiyun.com/SAN0821/article/details/158206244</link><guid>https://blog.youkuaiyun.com/SAN0821/article/details/158206244</guid><author>SAN0821</author><pubDate>Thu, 19 Feb 2026 10:09:39 +0800</pubDate><description><![CDATA[本文摘要：文章探讨了变量作用域在函数设计中的重要性，重点分析了全局变量和局部变量的特点及其使用场景。全局变量作用域覆盖整个文件，但会带来资源消耗和程序混乱等问题；局部变量包括形参、函数内变量等，作用域有限。文章还介绍了变量的存储类型（auto、static、extern、register）及其对变量生命周期和作用域的影响，特别强调了static关键字的多重作用。最后指出应尽量减少全局变量使用，推荐通过参数传递实现函数间通信，以遵循&quot;高内聚，低耦合&quot;的设计原则。]]></description><category></category></item><item><title><![CDATA[C语言：函数后续]]></title><link>https://blog.youkuaiyun.com/SAN0821/article/details/157141655</link><guid>https://blog.youkuaiyun.com/SAN0821/article/details/157141655</guid><author>SAN0821</author><pubDate>Mon, 19 Jan 2026 19:36:54 +0800</pubDate><description><![CDATA[本文主要讲解了C语言中函数的嵌套调用与递归调用的概念及应用。在嵌套调用部分，通过素数判断、数组查找等案例展示了函数嵌套调用的正确方式，并强调不允许嵌套定义但允许嵌套调用。递归调用部分详细解释了递归原理、终止条件及底层实现机制，通过年龄计算、阶乘等案例进行演示，并分析了快速排序算法的递归实现。此外，还探讨了数组作为函数参数的传递方式（地址传递）、变量的作用域（全局/局部变量）及存储类型（static/extern等），并比较了它们的优缺点。最后通过多个实际案例（如数组比较、字符串拷贝等）加深理解，并总结了st]]></description><category></category></item><item><title><![CDATA[C语言：函数]]></title><link>https://blog.youkuaiyun.com/SAN0821/article/details/157141566</link><guid>https://blog.youkuaiyun.com/SAN0821/article/details/157141566</guid><author>SAN0821</author><pubDate>Mon, 19 Jan 2026 19:28:38 +0800</pubDate><description><![CDATA[本文系统介绍了C语言中函数的概念、分类和使用方法。函数是C程序的基本组成单元，可分为库函数和自定义函数，按参数分为有参和无参函数，按返回值分为有返回值和无返回值函数。文章详细讲解了函数的定义语法、形参与实参的区别、返回值的处理规则，并通过多个案例演示了函数的具体应用。同时阐述了函数声明的重要性，解释了函数调用时的底层工作原理，包括栈帧管理和参数传递机制。最后还介绍了变量的底层执行机制，帮助读者深入理解程序运行原理。]]></description><category></category></item></channel></rss>