- 博客(48)
- 收藏
- 关注
原创 嵌入式环形缓冲区:原理、使用方法与实战指南
在嵌入式系统开发中,数据的实时传输与缓冲是高频需求(如 UART 数据接收、传感器数据暂存、多线程间数据通信等)。环形缓冲区(Ring Buffer)作为一种高效的 “生产者 - 消费者” 数据缓冲方案,凭借内存复用、无数据拷贝、运算高效等特性,成为嵌入式开发的核心工具。本文将从核心原理、使用流程、实战技巧三个维度,详细介绍环形缓冲区的设计思想与使用方法,帮助开发者快速集成到项目中。
2025-11-19 15:03:27
824
原创 事件(Event)和信号量(Semaphore)对比,区别,优缺点,应用场景
在 RT-Thread(或所有 RTOS)中,**事件(Event)**和**信号量(Semaphore)**是核心的 IPC 同步机制,但设计目标、使用场景和特性完全不同 —— 事件侧重 “多条件通知”,信号量侧重 “资源计数 / 互斥”。下面从 **核心区别、优缺点、适用场景** 三个维度详细解析 简单记:“通知用事件,资源用信号量”。
2025-11-18 15:24:15
689
原创 TTS芯片 文字转语音
本文介绍了SYN8086中文语音合成芯片的应用方法。该芯片通过UART接口接收文本数据并转换为语音输出。系统架构采用串口通信方式,文中提供了详细的通信协议说明和C语言示例代码,演示了如何通过51单片机控制芯片实现文本转语音功能。示例代码包含串口初始化、数据帧构造和文本发送过程,以"欢迎使用宇音天下研发的语音合成芯片"为样例文本,展示了完整的通信流程。该方案适用于各种需要语音合成的嵌入式应用场景。
2025-07-22 10:46:39
479
原创 rt_thread hc32f460引脚编号
RT-Thread在HC32单片机中使用宏定义实现硬件引脚的数字化标识。核心逻辑是通过GET_PIN(PORT, PIN)宏将"端口+引脚号"转换为唯一数字编号,具体实现为(端口值×16)+引脚号。例如PortA(0)的4号引脚PA4转换为4(0×16+4),PortA的5号引脚PA5转换为5。这种转换方式确保了每个引脚编号的唯一性,方便RT-Thread统一管理硬件引脚,提高代码可移植性和可维护性。当配置BSP_I2C1_SCL_PIN=4时,实际对应硬件上的PA4引脚。
2025-07-18 15:38:28
981
原创 嵌入式linux架构理解(宏观理解)6ull学习心得---从架构理解到自写程序运行及自写程序开机自启动
嵌入式linux架构理解(宏观理解)6ull学习心得---从架构理解到自写程序运行及自写程序开机自启动
2025-04-18 09:26:57
1250
原创 ninja | grep error(编译并只显示包含error的行)
把这些命令组合起来,ninja | grep error 就会运行 ninja 构建项目,并且把 ninja 的输出传递给 grep,最后只显示包含 error 单词的行。这在你想要快速找出项目构建过程中出现的错误信息时非常有用。grep error:grep 是用于在文本中查找特定模式的工具,error 是你要查找的模式。ninja:这是一个专注于速度的构建系统,常用于编译项目,它能快速地对项目文件进行编译操作。|:是管道符号,它的作用是把前一个命令(ninja)的输出当作后一个命令(grep)的输入。
2025-04-18 08:28:39
220
原创 MQTT报文类型
MQTT 协议定义了 14种报文类型,每种类型有不同的用途。常见的类型包括:CONNECT:客户端连接请求PUBLISH:发布消息(携带应用数据)SUBSCRIBE:订阅主题PUBACK:QoS 1消息的确认PINGREQ/PINGRESP:心跳包属于 PUBLISH 的情况:当客户端订阅主题后接收应用数据时,报文类型为 PUBLISH。不属于 PUBLISH 的情况:连接确认(CONNACK)、订阅确认(SUBACK)等控制报文。验证方法:通过报文头的第一个字节高4位判断类型。
2025-03-29 10:49:22
755
原创 FTP服务——Ubuntu 和 Windows 文件互传
Ubuntu 和 Windows 文件互传,FTP服务,FTP 客户端FileZilla
2023-12-13 11:49:25
488
原创 低功耗配置——唤醒事件
(如果由此事件唤醒,此唤醒事件标志位就会置1,所以使能此唤醒事件前,先将此唤醒标志位清零)ef: 如果唤醒事件为WKUP2_0,清除PTWK2的唤醒标志位。3.使能唤醒事件,如,唤醒事件为“2_0”——WKUP2_0。如,配置唤醒事件WKUP2_0,为下降沿触发。为几,就清除唤醒事件几(PTWK。2.配置掉电唤醒事件边沿选择。1.先清除唤醒标志位,如图。一、配置唤醒事件时,
2022-11-29 22:03:30
591
原创 C语言中 “|=”vs“&=”
(&与运算只有1&1才等于1,其余1&0、0&1、0&0都为0;|或运算只有0&0才等于0,其余1&0、0&1、1&1都为1)a &= b,就是将a与b做按位“与”运算,结果赋值给a,也就相当于a = a & b;|= 一般用在置位,即置1, 将=号后面1的位置1,0的位保持不变。&= 一般用在复位,即清零,将=号后面0的位清零,1的位保持不变。(等号左右两边数据的位一一对应,等号右边为0的这一位)(等号左右两边数据的位一一对应,等号右边为1的这一位)置0,其他位(等号右边为1的所有位)保持不变。
2022-11-28 20:42:45
803
原创 PLC PLS/PLF
2)使用PLS时,仅在驱动输入为ON后的一个扫描周期内目标元件ON,如图3-21所示,M0仅在X0的常开触点由断到通时的一个扫描周期内为ON;使用PLF指令时只是利用输入信号的下降沿驱动,其它与PLS相同。微分指令的使用如图 1所示,利用微分指令检测到信号的边沿,通过置位和复位命令控制Y0的状态。(1)PLS(上升沿微分指令) 在输入信号上升沿产生一个扫描周期的脉冲输出。(2)PLF(下降沿微分指令) 在输入信号下降沿产生一个扫描周期的脉冲输出。1)PLS、PLF指令的目标元件为Y和M;
2022-10-27 14:43:00
8790
原创 公钥与私钥、iv(初始向量)
公钥(Public Key)与私钥(Private Key)是通过加密算法得到的一个密钥对(即一个公钥和一个私钥,也就是非对称加密方式)。公钥可对会话进行加密、验证数字签名,只有使用对应的私钥才能解密会话数据,从而保证数据传输的安全性。公钥是密钥对外公开的部分,私钥则是非公开的部分,由用户自行保管。使用密钥对的时候,如果用其中一个密钥加密一段数据,只能使用密钥对中的另一个密钥才能解密数据。例如:用公钥加密的数据必须用对应的私钥才能解密;如果用私钥进行加密也必须使用对应的公钥才能解密,否则将无法成功解密。
2022-10-14 16:46:33
3417
原创 mod笔记
1.同余符号:“同余”,数论中的重要概念。给定一个正整数m,如果两个整数a和b满足a-b能被m整除,即(a-b)|m,那么就称整数a与b对模m同余,记作a≡b(mod m)。2.余数表示:在整数的除法中,只有能整除与不能整除两种情况。当不能整除时,就产生余数,取余数运算:a mod b = c 表示整数a除以整数b所得余数为c,如7÷3 = 2 …1可表示为7mod3=1。指取模运算符,算法和取余运算(REM)相似例如a mod b=c,表明a除以b余数为c。在整数的除法中,只有能整除与不能整除两种情况。
2022-10-14 14:51:09
517
环形缓冲区使用示例代码
2025-11-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1