当前位置: 首页 > article >正文

RC5红外协议底层实现与嵌入式集成指南

1. RC5协议底层实现技术解析RC5是一种由Philips现NXP于1980年代设计的红外遥控通信协议广泛应用于电视、机顶盒、音响等消费电子设备。与通用异步收发器UART或I²C等同步总线不同RC5采用双相曼彻斯特编码Bi-Phase Manchester Encoding以载波频率为36kHz典型值的红外脉冲序列承载数据具备抗干扰强、解码鲁棒性高、硬件资源占用极低等工程优势。本技术文档基于开源社区中已验证的RC5发送与接收完整实现面向嵌入式底层开发者系统梳理其协议结构、时序约束、状态机设计、HAL/LL驱动适配及FreeRTOS集成方案所有内容均源自可复现的固件实践。1.1 协议帧结构与物理层时序RC5帧固定长度为14位按传输顺序依次为位位置字段名长度取值说明工程意义0–1起始位Start Bits2 bit固定为11帧同步标识接收端据此触发采样窗口2控制位Toggle Bit1 bit每次按键按下翻转0→1→0…区分连续按键与重复按键避免误触发3–4地址位Address2 bit00~11共4个逻辑地址支持同一空间内多设备共存如TVDVDAMP5–13命令位Command9 bit0x00~0x1FF共512条指令定义具体功能如0x00Power,0x01Volume关键时序参数36kHz载波下载波周期$T_{\text{carrier}} \frac{1}{36,\text{kHz}} \approx 27.78,\mu\text{s}$位时间Bit Time$T_{\text{bit}} 1.778,\text{ms} 64 \times T_{\text{carrier}}$每位由两个半周期组成前半周期为载波脉冲后半周期为电平保持高或低曼彻斯特编码规则0→ 前半周期高电平 后半周期低电平1→ 前半周期低电平 后半周期高电平接收端需在每个位时间中点$T_{\text{bit}}/2$进行电平采样以规避边沿抖动该设计使RC5天然具备自同步能力接收器无需外部时钟源仅通过检测连续下降沿/上升沿的时间间隔即可重建位时钟极大降低MCU定时器资源消耗。1.2 状态机驱动的接收器设计RC5接收的核心挑战在于红外信号易受环境光干扰导致载波检测失真且MCU需在微秒级精度下完成边沿捕获、周期测量与位判决。开源实现采用两级状态机架构兼顾实时性与鲁棒性第一级载波边沿检测状态机硬件级运行于MCU的输入捕获Input Capture外设配置为上升沿/下降沿双边沿触发// STM32 HAL示例TIM2 CH1 输入捕获配置 htim2.Instance TIM2; htim2.Init.Prescaler 71; // APB172MHz → 1MHz计数频率1μs分辨率 htim2.Init.CounterMode TIM_COUNTERMODE_UP; htim2.Init.Period 0xFFFF; HAL_TIM_IC_Init(htim2); // 配置CH1为双边沿捕获 sConfigIC.ICPolarity TIM_INPUTCHANNELPOLARITY_BOTHEDGE; sConfigIC.ICSelection TIM_ICSELECTION_DIRECTTI; sConfigIC.ICPrescaler TIM_ICPSC_DIV1; sConfigIC.ICFilter 3; // 采样滤波抑制毛刺 HAL_TIM_IC_ConfigChannel(htim2, sConfigIC, TIM_CHANNEL_1); HAL_TIM_IC_Start_IT(htim2, TIM_CHANNEL_1); // 开启捕获中断中断服务程序ISR仅执行最轻量操作void TIM2_IRQHandler(void) { uint32_t cap_val HAL_TIM_ReadCapturedValue(htim2, TIM_CHANNEL_1); static uint32_t last_cap 0; uint32_t delta (cap_val last_cap) ? (cap_val - last_cap) : (0x10000 - last_cap cap_val); // 将时间差μs送入二级状态机环形缓冲区 if (delta 3000) { // 过滤3ms的无效间隔如长空闲 rc5_rx_push_edge(delta); } last_cap cap_val; }第二级协议解析状态机软件级运行于主循环或FreeRTOS任务中从环形缓冲区读取边沿时间戳执行协议判决typedef enum { RC5_STATE_IDLE, RC5_STATE_START_DETECTED, RC5_STATE_BIT_ACQ, RC5_STATE_FRAME_COMPLETE } rc5_rx_state_t; static rc5_rx_state_t rx_state RC5_STATE_IDLE; static uint16_t bit_buffer 0; static uint8_t bit_pos 0; static uint32_t last_edge_us 0; void rc5_rx_task(void *pvParameters) { for(;;) { uint32_t edge_us; if (xQueueReceive(rc5_edge_queue, edge_us, portMAX_DELAY) pdTRUE) { switch(rx_state) { case RC5_STATE_IDLE: // 检测起始位首个间隔≈1.778ms后续间隔≈0.889ms半位 if ((edge_us 1600) (edge_us 1950)) { rx_state RC5_STATE_START_DETECTED; bit_buffer 0; bit_pos 0; } break; case RC5_STATE_START_DETECTED: // 后续间隔应为半位时间≈0.889ms用于判决0/1 if ((edge_us 750) (edge_us 1030)) { // 曼彻斯特解码若当前边沿到上一边沿为半位则该位为1否则为0 // 实际通过比较连续两个间隔比值实现更抗抖动 uint32_t ratio (edge_us * 100) / last_edge_us; uint8_t bit_val (ratio 180) ? 1 : 0; // 180% → 当前为1 bit_buffer | ((uint16_t)bit_val (13 - bit_pos)); if (bit_pos 14) { rx_state RC5_STATE_FRAME_COMPLETE; } } else { rx_state RC5_STATE_IDLE; // 时序错误重置 } break; case RC5_STATE_FRAME_COMPLETE: // 校验起始位是否为11 if ((bit_buffer 0xC000) 0xC000) { rc5_frame_t frame; frame.toggle (bit_buffer 0x2000) ? 1 : 0; frame.address (bit_buffer 0x1800) 11; frame.command bit_buffer 0x07FF; xQueueSend(rc5_frame_queue, frame, 0); } rx_state RC5_STATE_IDLE; break; } last_edge_us edge_us; } } }此设计将高精度定时任务卸载至硬件外设软件层专注协议逻辑显著提升系统稳定性。2. RC5发送器的硬件加速实现RC5发送需严格控制载波占空比通常为1/3与位时间精度。开源实现提供两种发送模式软件PWM通用IO与硬件定时器DMA后者为工业级推荐方案。2.1 硬件定时器DMA发送STM32示例利用TIM1的互补通道输出36kHz方波并通过DMA自动切换电平实现曼彻斯特编码// 预计算14位RC5帧的DMA传输表每bit 2个电平共28个字 static const uint16_t rc5_dma_pattern[28] { // 示例起始位11 → [高,低,高,低] GPIO_PIN_SET, GPIO_PIN_RESET, GPIO_PIN_SET, GPIO_PIN_RESET, // 后续位依bit_buffer动态生成... }; void rc5_tx_send_frame(const rc5_frame_t *frame) { uint16_t frame_bits 0xC000; // 起始位11 frame_bits | (frame-toggle 13); frame_bits | (frame-address 11); frame_bits | frame-command; // 动态生成DMA表伪代码 for(int i0; i14; i) { uint8_t bit_val (frame_bits (0x1 (13-i))) ? 1 : 0; // 曼彻斯特bit1 → [低,高]bit0 → [高,低] rc5_dma_pattern[2*i] (bit_val 1) ? GPIO_PIN_RESET : GPIO_PIN_SET; rc5_dma_pattern[2*i1] (bit_val 1) ? GPIO_PIN_SET : GPIO_PIN_RESET; } // 配置DMA传输GPIO输出寄存器 hdma_memtomem_dma1_channel2.Init.Direction DMA_MEMORY_TO_PERIPH; hdma_memtomem_dma1_channel2.Init.PeriphInc DMA_PINC_DISABLE; hdma_memtomem_dma1_channel2.Init.MemInc DMA_MINC_ENABLE; hdma_memtomem_dma1_channel2.Init.PeriphDataAlignment DMA_PDATAALIGN_HALFWORD; hdma_memtomem_dma1_channel2.Init.MemDataAlignment DMA_MDATAALIGN_HALFWORD; hdma_memtomem_dma1_channel2.Init.Mode DMA_NORMAL; hdma_memtomem_dma1_channel2.Init.Priority DMA_PRIORITY_HIGH; HAL_DMA_Init(hdma_memtomem_dma1_channel2); // 启动DMA传输28个半字 → 28个电平切换 HAL_DMA_Start(hdma_memtomem_dma1_channel2, (uint32_t)rc5_dma_pattern, (uint32_t)GPIOB-BSRR, 28); // 启动TIM1更新事件触发DMA请求 __HAL_TIM_ENABLE(htim1); __HAL_TIM_ENABLE_DMA(htim1, TIM_DMA_UPDATE); }该方案CPU占用率趋近于零发送过程完全由硬件自治适用于多任务实时系统。2.2 关键参数配置表参数符号典型值配置依据HAL API示例载波频率$f_c$36 kHzNXP官方规范兼顾穿透性与功耗__HAL_TIM_SET_AUTORELOAD(htim1, 1999)72MHz/36k2000载波占空比—1:3红外LED驱动效率与散热平衡__HAL_TIM_SET_COMPARE(htim1, TIM_CHANNEL_1, 666)2000/3位时间精度$T_{\text{bit}}$1.778 ms ±1%决定解码成功率需校准定时器预分频htim1.Init.Prescaler 7172MHz→1MHz输入滤波系数$ICFilter$3~5抑制环境光引起的高频噪声sConfigIC.ICFilter 33. 与主流嵌入式生态的集成实践RC5模块需无缝融入现代嵌入式框架。以下为与HAL库、FreeRTOS及CMSIS-RTOS v2的深度集成方案。3.1 FreeRTOS任务与队列设计采用生产者-消费者模型解耦硬件与应用层生产者rc5_rx_task()—— 从环形缓冲区读取边沿时间解析出完整帧后投递至rc5_frame_queue消费者app_ir_handler_task()—— 从队列获取帧执行业务逻辑如音量调节、频道切换// 创建专用队列深度5支持突发按键 rc5_frame_queue xQueueCreate(5, sizeof(rc5_frame_t)); // 应用任务处理示例 void app_ir_handler_task(void *pvParameters) { rc5_frame_t frame; for(;;) { if (xQueueReceive(rc5_frame_queue, frame, portMAX_DELAY) pdTRUE) { switch(frame.address) { case RC5_ADDR_TV: handle_tv_command(frame); break; case RC5_ADDR_DVD: handle_dvd_command(frame); break; } } } } // 优先级设置建议RC5接收任务 ≥ 中断响应任务但 关键控制任务如电机PID xTaskCreate(rc5_rx_task, RC5_RX, 256, NULL, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 1, NULL); xTaskCreate(app_ir_handler_task, IR_APP, 256, NULL, tskIDLE_PRIORITY 2, NULL);3.2 HAL库外设复用冲突规避RC5常与UART、I²C共用GPIO引脚。需在MX_GPIO_Init()中显式声明复用功能// 若使用PA9作为IR接收同时PA9为USART1_TX GPIO_InitStruct.Pin GPIO_PIN_9; GPIO_InitStruct.Mode GPIO_MODE_AF_PP; // 复用推挽 GPIO_InitStruct.Pull GPIO_NOPULL; GPIO_InitStruct.Speed GPIO_SPEED_FREQ_VERY_HIGH; GPIO_InitStruct.Alternate GPIO_AF7_USART1; // 优先配置为USART HAL_GPIO_Init(GPIOA, GPIO_InitStruct); // RC5接收需切换为浮空输入 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_9, GPIO_PIN_SET); // 确保无上拉干扰 HAL_GPIO_Init(GPIOA, GPIO_InitStruct); // 重新初始化为输入模式工程提示在HAL_GPIO_Init()后插入__HAL_AFIO_REMAP_USART1_ENABLE()确保重映射生效。3.3 LL库极致性能优化资源受限场景对Cortex-M0/M3等小资源MCU可弃用HAL直接操作寄存器// LL库输入捕获配置以STM32G0为例 LL_TIM_IC_SetActiveInput(TIM16, LL_TIM_CHANNEL_CH1, LL_TIM_ACTIVEINPUT_DIRECTTI); LL_TIM_IC_SetPrescaler(TIM16, LL_TIM_ICPSC_DIV1); LL_TIM_IC_SetFilter(TIM16, LL_TIM_IC_FILTER_FDIV1_N8); // 8采样点滤波 LL_TIM_EnableIT_CC1(TIM16); LL_TIM_EnableCounter(TIM16);实测表明LL方案较HAL降低约40% Flash占用与35% RAM开销适合超低成本遥控器主控。4. 实战调试与故障排除指南4.1 常见失效模式与定位方法现象根本原因诊断工具解决方案接收无响应红外接收头供电不足VCC4.5V万用表测VCC加稳压电路或更换LDO偶发误码环境光干扰日光灯/LED灯频闪示波器观察接收头OUT波形增加带通滤波中心36kHz或改用TSOP4836接收头发送距离短LED正向电流不足100mA电流探头测LED支路降低限流电阻如从100Ω→47Ω注意散热Toggle位不翻转应用层未维护按键状态机逻辑分析仪抓帧在app_ir_handler_task()中添加全局toggle变量并原子操作4.2 逻辑分析仪标准抓包流程使用Saleae Logic Pro 8捕获RC5波形关键设置采样率≥10 MS/s确保1μs分辨率触发条件通道1下降沿接收头OUT解码插件选择“IR RC5”协议分析器验证点起始位11、Toggle位翻转、地址/命令字段一致性现场经验某项目因PCB布局导致IR接收头地线过长引入开关电源噪声。通过将接收头GND直接打孔连接至MCU模拟地平面误码率从12%降至0.3%。5. 扩展应用场景与进阶设计5.1 多协议兼容遥控器设计RC5可与NEC、Sony SIRC共存于同一硬件平台typedef enum { PROTOCOL_RC5, PROTOCOL_NEC, PROTOCOL_SIRC } ir_protocol_t; // 统一接收框架 void ir_rx_dispatch(uint32_t edge_delta_us, ir_protocol_t proto) { switch(proto) { case PROTOCOL_RC5: rc5_rx_process(edge_delta_us); break; case PROTOCOL_NEC: nec_rx_process(edge_delta_us); break; case PROTOCOL_SIRC: sirc_rx_process(edge_delta_us); break; } }通过学习模式自动识别协议类型实现“万能遥控器”功能。5.2 低功耗待机唤醒集成利用RC5接收作为MCU唤醒源// STOP模式下启用TIM2输入捕获唤醒 __HAL_TIM_ENABLE_IT(htim2, TIM_IT_CC1); HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFE); // WFE后自动退出STOP执行TIM2中断实测STM32L4系列在STOP模式下RC5唤醒电流仅1.2μA满足电池供电遥控器十年寿命要求。5.3 安全增强RC5AES指令加密对高端设备可在应用层增加指令加密// 发送端 uint8_t plain_cmd[2] {frame.address, frame.command}; uint8_t cipher_cmd[2]; AES_Encrypt_ECB(plain_cmd, cipher_cmd, aes_key); // 使用硬件AES外设 frame.command (cipher_cmd[0] 8) | cipher_cmd[1]; // 接收端解密后执行 AES_Decrypt_ECB(cipher_cmd, plain_cmd, aes_key); execute_command(plain_cmd[0], plain_cmd[1]);此方案不改变RC5物理层兼容现有遥控器仅升级主控固件即可实现指令防篡改。某工业HMI项目采用本RC5方案替代传统UART有线通信成功将人机交互延迟从85ms降至12ms红外传播延迟解码耗时且通过IEC 61000-4-3辐射抗扰度测试10V/m。其核心价值在于以最低硬件成本单颗TSOP34836MCU通用IO实现可靠无线控制印证了经典协议在物联网边缘设备中的持久生命力。

相关文章:

RC5红外协议底层实现与嵌入式集成指南

1. RC5协议底层实现技术解析RC5是一种由Philips(现NXP)于1980年代设计的红外遥控通信协议,广泛应用于电视、机顶盒、音响等消费电子设备。与通用异步收发器(UART)或IC等同步总线不同,RC5采用双相曼彻斯特编…...

CompactGUI社区数据库:协作优化游戏压缩的智慧共享平台

CompactGUI社区数据库:协作优化游戏压缩的智慧共享平台 【免费下载链接】CompactGUI Transparently compress active games and programs using Windows 10/11 APIs 项目地址: https://gitcode.com/gh_mirrors/co/CompactGUI 💡 知识卡片&#xf…...

当Pwn题遇上Seccomp沙箱:手把手教你用SROP绕过LilCTF ret2all的write限制

突破Seccomp沙箱:SROP技术在CTF Pwn题中的高阶应用 在CTF竞赛中,Pwn题目常常会设置各种限制条件来增加挑战难度,其中Seccomp沙箱是最常见的防护手段之一。当遇到禁用关键系统调用(如write)的沙箱环境时,传统…...

为 GraphRAG 准备语料库

经典 RAG 专注于找到正确的段落,而 GraphRAG 帮助你看到段落、实体和主题在整个文档集合中是如何连接的。原始 GraphRAG 论文指出,标准 RAG 常常在处理宽泛问题时遇到困难,比如"这个数据集中的主要主题是什么?"为了解决…...

别再只盯着顶刊了!这5本AI领域的SCI期刊,投稿友好、审稿快,适合你的第一篇论文

5本AI领域高性价比SCI期刊:避开顶刊内卷的投稿策略 在人工智能研究领域,发表SCI论文是衡量学术成果的重要指标。然而,Nature Machine Intelligence、IEEE TPAMI等顶刊的投稿竞争异常激烈,审稿周期动辄半年以上,对创新性…...

眼图原理与信号完整性分析技术详解

眼图原理与信号完整性分析技术 1. 眼图基础概念 1.1 眼图定义与形成机制 眼图是通过示波器余辉作用将扫描所得的每个码元波形重叠形成的图形。当使用示波器跨接在接收滤波器输出端,并调整扫描周期与接收码元周期同步时,屏幕上显示的图形因其形似人眼而…...

OpenClaw新手入门:Qwen3.5-9B镜像一键部署与基础配置

OpenClaw新手入门:Qwen3.5-9B镜像一键部署与基础配置 1. 为什么选择Qwen3.5-9B作为OpenClaw的"大脑"? 去年冬天,当我第一次尝试用OpenClaw自动化处理周报时,发现默认的小模型经常把"会议纪要"理解成"会…...

Dify工作流实战:5步打造个性化英语单词口语练习工具(附完整配置)

Dify工作流实战:5步打造个性化英语单词口语练习工具(附完整配置) 在数字化学习浪潮中,AI技术正重塑语言学习的边界。对于开发者而言,如何将前沿的大模型能力转化为实际可用的学习工具,成为技术落地的关键挑…...

MDK分散加载文件(.sct)解析与嵌入式内存管理

MDK分散加载文件(.sct)剖析及应用1. 项目概述1.1 分散加载概念分散加载(Scatter Loading)是一种允许开发者精确控制代码和数据在存储器中布局的技术。通过分散加载文件,我们可以指定程序的特定部分(如代码段、数据段)在存储器的特定地址空间运…...

避坑指南:Python 3.9与Transformers 3.0不兼容?手把手解决BERT环境搭建中的版本冲突

深度解析Python与Transformers版本冲突:从报错到BERT环境完美搭建 当你在深夜调试代码时,突然遭遇"module signal has no attribute SIGKILL"的红色报错——这可能是Python 3.9与Transformers 3.0不兼容的典型症状。本文将带你深入理解版本冲突…...

深入HAL库:拆解STM32的UART DMA空闲中断接收机制,如何自己实现双缓冲与数据帧管理

STM32 HAL库UART DMA双缓冲机制深度解析与实战优化 在嵌入式开发领域,高效可靠的串口通信是实现设备间数据交互的基础能力。面对实时性要求严苛的工业场景或需要处理大量不定长数据的物联网应用,传统的轮询或中断接收方式往往力不从心。本文将深入剖析ST…...

在家用电脑跑AI大模型?Unsloth开源项目让普通用户也能轻松实现,算力民主化时代即将来临!

你有没有想过,在自己的电脑上跑一个属于自己的AI大模型? 很多人觉得这是不可能的——毕竟大模型需要强大的GPU、昂贵的算力,一般人根本玩不起。但现在,情况变了。 当AI从云端走进本地最近,一个叫Unsloth的开源项目在Gi…...

人机协作新范式:盘点2026年全网爆红的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具横空出世,覆盖选题构思、文献综述、数据整理、格式排版等全流程,真正帮你高效搞定论文,告别熬夜与焦虑。 一、全流程王者:一站式搞定论文…...

Multisim新手必看:5分钟搞定稳压二极管仿真实验(附限流电阻计算技巧)

Multisim新手必看:5分钟搞定稳压二极管仿真实验(附限流电阻计算技巧) 在电子工程的学习和实践中,稳压二极管是一个基础但至关重要的元件。它能将电压稳定在特定值,广泛应用于电源电路、保护电路等场景。对于初学者来说…...

政务大模型微调全攻略,打造高效智能政务AI系统!

在数字化、智能化成为新质生产力核心驱动力,十五五政务数字化转型加速推进的背景下,智慧政务建设成为各地政府提升治理能力的关键。但当前政务领域普遍面临数据处理效率低、AI 模型适配性差、服务自动化水平不足、敏感数据管理难等痛点,通用大…...

ngx_create_pidfile

1 定义 ngx_create_pidfile 函数 定义在 ./nginx-1.24.0/src/core/ngx_cycle.cngx_int_t ngx_create_pidfile(ngx_str_t *name, ngx_log_t *log) {size_t len;ngx_int_t rc;ngx_uint_t create;ngx_file_t file;u_char pid[NGX_INT64_LEN 2];if (ngx_process >…...

Windows 11界面自定义终极指南:使用ExplorerPatcher恢复经典体验

Windows 11界面自定义终极指南:使用ExplorerPatcher恢复经典体验 【免费下载链接】ExplorerPatcher 提升Windows操作系统下的工作环境 项目地址: https://gitcode.com/GitHub_Trending/ex/ExplorerPatcher 还在为Windows 11 24H2的新界面感到不适&#xff1f…...

ProDino MKR Zero工业RS-485与LoRaWAN开发指南

1. ProDino MKR Zero 硬件平台与配套库深度解析ProDino MKR Zero 是 KMP(KMP Electronics)面向工业物联网边缘节点推出的紧凑型 ARM Cortex-M0 开发平台,基于 Microchip SAMD21G18A 微控制器(48MHz 主频、256KB Flash、32KB SRAM&…...

Qwen3-ForcedAligner-0.6B效果实测:不同方言口音(潮汕/客家/闽南)识别对比

Qwen3-ForcedAligner-0.6B效果实测:不同方言口音(潮汕/客家/闽南)识别对比 1. 引言:当AI语音识别遇上“十里不同音” 你有没有遇到过这样的尴尬?用手机语音转文字,自己明明说的是普通话,结果出…...

Instagram数据提取完全指南:Toutatis实战揭秘与高效应用

Instagram数据提取完全指南:Toutatis实战揭秘与高效应用 【免费下载链接】toutatis Toutatis is a tool that allows you to extract information from instagrams accounts such as e-mails, phone numbers and more 项目地址: https://gitcode.com/GitHub_Trend…...

X-NUCLEO-IHM02A1双步进电机驱动开发与L6470嵌入式控制实践

1. X-NUCLEO-IHM02A1 电机控制扩展板技术解析与嵌入式驱动开发实践X-NUCLEO-IHM02A1 是意法半导体(STMicroelectronics)推出的高性能双通道步进电机驱动扩展板,专为 STM32 Nucleo 开发平台设计。该板基于 L6470 智能功率级芯片构建&#xff0…...

嵌入式硬件工程师如何转型管理者

嵌入式硬件工程师的职业发展路径:从技术专家到管理者的转型指南1. 职业发展概述1.1 技术与管理双轨发展在嵌入式硬件工程领域,职业发展通常呈现两条路径:技术专家路线和管理路线。对于希望转向管理岗位的工程师,需要理解技术能力与…...

【2026年小红书春招- 3月25日 -第三题- 字符置换】(题目+思路+JavaC++Python解析+在线测试)

题目内容 为了提升小红书笔记标签的可读性,我们计划对标签字符串进行一次双向字符置换操作,以获得更小的字典序结果。 具体地,给定一个长度为 nnn 的字符串 sss(下标从 $1 开始),你可以进行一次如下操作:选取三个整数开始),你可以进行一次如下操作: 选取三个整数...

【2026年小红书春招- 3月25日 -第二题- 互评操作】(题目+思路+JavaC++Python解析+在线测试)

题目内容 现在有 n n n 条$ Plog$ 在首页上排成一列,队尾在下侧,队头在上侧。 用长度为 n n n 的$ 01 $串 s = s 1 , s 2 , … , s n s=s_1,s_2,…,s_n...

【2026年小红书春招- 3月25日 -第一题- 数据库】(题目+思路+JavaC++Python解析+在线测试)

题目内容 小红书数据库中有用户编号、用户名称和用户经验三个字段,其中: 用户编号为 111 到 10910^910...

分布式能力不是功能,而是一种架构约束

网罗开发(小红书、快手、视频号同名)大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等方…...

Au新手入门指南:从零开始掌握音频编辑基础

1. 认识Adobe Audition:你的第一把音频手术刀 第一次打开Adobe Audition(简称Au)时,满屏的波形图和专业术语可能会让你头皮发麻。别担心,这就像第一次拿手术刀的外科实习生——工具看起来很专业,但基础操作…...

保姆级教程:用Qt搞定蓝牙串口通信,从连接云台到指令队列完整流程

保姆级教程:用Qt实现蓝牙串口通信全流程实战 在智能硬件开发领域,蓝牙串口通信就像一座连接数字世界与物理世界的桥梁。想象一下,你手中的Qt程序能够通过简单的指令让云台精准转动,或者让智能小车按照预定路线行驶——这种"软…...

叠层母排市场洞察:至2032年将攀升至近101.7亿元

据恒州诚思调研统计,2025年全球叠层母排收入规模约34.63亿元,至2032年将攀升至近101.7亿元,2026-2032年复合增长率(CAGR)达14.2%。这一增长受新能源汽车电驱系统、风光储变流器等电力电子领域需求爆发驱动,…...

新概念英语第一册083_Going on holiday

Lesson 83: Going on holiday Watch the story and answer the question Where did Sam go for his holiday this year? He stayed at home.Key words and expressions mess n. 杂乱,pack v. 包装,打包,装箱suitcase …...