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

RT-Thread在SF32LB52超低功耗MCU上的最小可运行工程

1. 项目概述“Hello HSPI”是一个面向黄山派SiFliSF32LB52系列超低功耗MCU的最小可运行验证工程其核心目标并非实现复杂外设交互而是建立一条端到端、可复现、可调试的嵌入式软件开发链路从RT-Thread实时操作系统环境搭建、工程配置、代码编译到固件烧录与串口输出验证。该项目名称中的“HSPI”并非指代高速SPI接口而是特指所用开发板型号——SF32LB52-LCHSPI-ULP该命名强调其基于HSPIHigh-Speed Peripheral Interface总线架构的硬件平台特性及超低功耗ULP设计定位。该工程本质上是嵌入式系统开发流程的“Hello World”范式在特定国产MCU平台上的具象化。它不涉及任何外部传感器、通信模块或复杂算法仅依赖MCU内部时钟、通用IO与UART外设通过最精简的代码逻辑完成系统初始化、周期性字符串打印与毫秒级任务调度。其价值在于为开发者提供一个零歧义、无依赖、可快速上手的基准起点所有后续功能扩展如ADC采样、PWM驱动、I²C通信均以此为基础进行增量式构建。2. 硬件平台分析2.1 核心控制器SF32LB52 MCUSF32LB52是黄山派推出的一款基于ARM Cortex-M0内核的超低功耗微控制器主频最高可达48MHz内置64KB Flash与16KB SRAM。其关键硬件特征直接决定了本项目的实现方式与约束条件超低功耗架构支持多种休眠模式Sleep/Deep Sleep/Standby在本项目中虽未主动启用深度休眠但其唤醒源如SysTick、UART中断的配置逻辑已隐含于RT-Thread的线程调度机制中。HSPI总线架构区别于传统APB/AHB总线HSPI是黄山派为其外设控制器定制的高性能互连总线具备更低的访问延迟与更高的带宽效率。所有外设寄存器包括GPIO、UART、SysTick均通过HSPI地址空间映射这要求SDK中的HAL层bf0_hal.h必须提供与之匹配的寄存器访问宏与位操作函数。集成调试接口片上集成SWDSerial Wire Debug调试单元为VS Code Cortex-Debug插件的在线调试提供物理基础这也是项目文档中强调“每次终端需重新加载环境”的根本原因——调试会话依赖于特定的OpenOCD配置与GDB服务器连接状态。2.2 开发板SF32LB52-LCHSPI-ULP该开发板是SF32LB52 MCU的评估载体其硬件设计围绕HSPI总线特性与超低功耗验证展开UART调试通道板载CH340 USB转串口芯片将MCU的UART0通常映射至PA9/PA10桥接到PC端。这是rt_kprintf输出的唯一物理通路所有调试信息均通过此链路传输。波特率由RT-Thread的控制台设备驱动在系统初始化时自动配置默认115200bps无需用户代码干预。电源管理电路配备独立的LDO稳压器与低功耗电源开关支持对不同外设域进行精细供电控制。虽然本项目未调用电源管理API但其存在保证了MCU在空闲时能维持极低的静态电流典型值1μA。HSPI引脚布局开发板将HSPI总线的关键信号如HSPI_CLK、HSPI_CSx、HSPI_MOSI/HSPI_MISO引出至标准排针为后续扩展SPI Flash、OLED等外设预留硬件接口。项目名称“HSPI”即源于此物理接口的显性标识。3. 软件架构与开发环境3.1 RT-Thread实时操作系统集成本项目采用RT-Thread Standard版非Nano版其核心优势在于成熟的设备驱动框架与POSIX兼容的API。选择RT-Thread而非裸机开发主要基于以下工程考量资源抽象与可移植性rt_kprintf与rt_thread_mdelay等API屏蔽了底层UART寄存器操作与SysTick定时器配置细节。开发者无需关心PA9引脚复用为UART_TX、亦无需手动计算SysTick重装载值所有硬件初始化均由RT-Thread的BSPBoard Support Package在rt_hw_board_init()中完成。多任务调度基础即使当前仅有一个main线程RT-Thread的线程管理机制优先级、时间片、阻塞/就绪状态已就绪。当后续需添加按键扫描、传感器数据采集等并行任务时仅需创建新线程并调用rt_thread_create无需重构整个程序结构。标准化调试接口rt_kprintf作为RT-Thread的标准日志输出函数其底层绑定rt_console_set_device指定的控制台设备此处为UART0。这确保了调试信息格式统一且可被RT-Thread Studio等IDE的串口监视器直接解析。3.2 SiFli-SDK与工具链配置SiFli-SDK是黄山派官方提供的软硬件协同开发套件其目录结构与构建系统深度耦合工程模板路径SiFli-SDK\example\get-started\hello_world\rtt是经过验证的最小RT-Thread工程模板。该路径下已预置SConstructSCons构建脚本定义编译器ARM GCC、链接脚本sf32lb52.ld、启动文件startup_sf32lb52.s等关键配置。board\BSP目录包含board.c板级初始化、clock_config.c时钟树配置、drv_uart.cUART设备驱动等。applications\应用代码目录main.c即为用户入口点。SCons构建系统相比MakefileSCons以Python脚本形式描述构建规则具有跨平台性与易扩展性。命令scons --boardsf32lb52-lchspi-ulp -j8的含义为--board...指定目标开发板配置SCons据此加载board/sf32lb52-lchspi-ulp/下的特定BSP文件。-j8启用8线程并行编译加速大型工程构建。环境变量依赖SDK要求GCC_ARM_NONE_TOOLCHAIN_PATH指向ARM GCC工具链根目录如arm-none-eabi-gcc所在路径。VS Code终端需在激活工作区前执行source env.shLinux/macOS或env.batWindows以注入该变量否则编译器无法被SCons识别。4. 关键代码解析与工程实践4.1 主函数逻辑与RT-Thread API调用main.c中的代码虽仅20余行却完整体现了RT-Thread应用开发的核心范式#include rtthread.h #include bf0_hal.h #include drv_io.h #include stdio.h #include string.h int main(void) { while (1) { rt_kprintf(Hello HSPI\n); rt_thread_mdelay(1000); } return 0; }头文件依赖分析rtthread.hRT-Thread内核API主头文件声明rt_kprintf、rt_thread_mdelay等函数原型。bf0_hal.hSiFli HAL层头文件提供底层寄存器操作宏如BF0_GPIO_SET、时钟使能函数如BF0_RCC_EnableClock是BSP与MCU硬件的桥梁。drv_io.hSiFli BSP中IO驱动头文件封装了GPIO初始化与电平控制函数虽本项目未直接使用但其存在表明开发板IO资源已纳入RT-Thread设备框架。stdio.h与string.h标准C库头文件支持格式化输出与字符串操作RT-Thread通过libc组件提供轻量级实现。无限循环的工程意义 在裸机开发中while(1)是防止程序跑飞的兜底措施在RT-Thread中它实质上是将main函数作为最高优先级线程的主体逻辑。RT-Thread内核在完成所有初始化后会自动启动该线程。rt_thread_mdelay(1000)使当前线程进入阻塞态1秒期间CPU可被调度器分配给其他就绪线程若存在从而实现功耗优化——这是超低功耗MCU开发中必须遵循的基本原则。4.2 延时函数原理rt_thread_mdelayrt_thread_mdelay(rt_int32_t ms)并非简单的忙等待busy-waiting其底层实现依赖于RT-Thread的系统节拍器System TickSysTick定时器配置RT-Thread BSP在rt_hw_timer_init()中将Cortex-M0的SysTick定时器配置为1ms中断周期即SysTick_Config(SystemCoreClock / 1000)。线程阻塞与唤醒调用rt_thread_mdelay时内核将当前线程状态置为RT_THREAD_SUSPEND并将其插入到一个按超时时间排序的定时器队列中。当SysTick中断发生时内核检查队列头部线程的剩余延时时间若为0则将其状态改为RT_THREAD_READY并加入就绪队列。功耗优势在延时期间若无其他就绪线程RT-Thread调度器会执行rt_hw_cpu_shutdown()使MCU进入Sleep模式仅SysTick中断可将其唤醒。这比裸机中for(i0;i1000000;i);的纯CPU占用式延时降低数个数量级的功耗。4.3 串口输出机制rt_kprintfrt_kprintf的实现是RT-Thread设备驱动框架的典型应用设备注册BSP在rt_hw_board_init()中调用rt_hw_uart_init()将UART0硬件抽象为名为uart0的设备并注册到RT-Thread设备管理器。控制台绑定rt_console_set_device(RT_CONSOLE_DEVICE_NAME)将uart0设备设置为系统控制台rt_kprintf的所有输出均通过此设备的write方法发送。缓冲与异步rt_kprintf内部使用环形缓冲区暂存待发送数据避免因UART发送速度慢导致主线程长时间阻塞。其底层调用rt_device_write(dev, 0, (rt_uint8_t*)buf, len)由UART驱动完成字节级的TX FIFO填充与中断处理。5. 构建、烧录与调试全流程5.1 编译流程详解执行scons --boardsf32lb52-lchspi-ulp -j8后SCons依次完成以下步骤预处理Preprocessing展开所有#include与#define生成.i中间文件。编译Compilation将.c文件编译为.o目标文件生成符号表与重定位信息。链接Linking使用sf32lb52.ld链接脚本将所有.o文件、C库libc.a、RT-Thread内核librtthread.a按内存布局Flash/SRAM合并为firmware.elf。二进制转换调用arm-none-eabi-objcopy将.elf转换为.bin纯机器码与.hexIntel HEX格式供烧录工具使用。最终生成的固件位于build_sf32lb52-lchspi-ulp_hcpu/目录下其中firmware.bin为烧录目标。5.2 烧录操作与端口配置烧录脚本build_sf32lb52-lchspi-ulp_hcpu\uart_download.bat基于UART Bootloader协议Bootloader触发开发板上电时若BOOT0引脚为高电平则跳过用户Flash进入内置Bootloader模式监听UART接收固件数据。串口参数脚本默认使用115200bps波特率、8N1数据格式与RT-Thread控制台配置一致。端口号输入Windows系统中需手动输入COM端口号如COM3。可通过设备管理器确认CH340对应的端口输入错误将导致握手失败与烧录超时。5.3 调试与验证烧录成功后打开串口调试助手如PuTTY、SecureCRT配置相同波特率即可看到稳定输出Hello HSPI Hello HSPI Hello HSPI ...输出间隔验证每行间隔严格为1秒证明rt_thread_mdelay精度符合预期SysTick配置正确。异常排查要点若无输出检查USB线连接、CH340驱动安装、串口助手端口号与波特率设置。若输出乱码确认波特率是否匹配或尝试降低至9600bps排除时钟偏差。若输出一次后停止检查main函数是否意外退出如返回非零值或rt_thread_mdelay被误用为rt_thread_delay后者需传入rt_tick_t类型。6. BOM清单与关键器件选型依据本项目所依赖的硬件物料高度集成于开发板其BOM核心器件如下表所示器件类别型号关键参数选型依据主控MCUSF32LB52ARM Cortex-M0, 48MHz, 64KB Flash满足超低功耗、HSPI总线、RT-Thread实时性需求国产化供应链保障USB转串口CH340GUSB 2.0 Full Speed, 115200bps成本低廉、驱动成熟Windows/Linux原生支持、无需外部晶振简化板级设计稳压器ME6211C33M5GLDO, 3.3V/300mA, PSRR 60dB1kHz为MCU提供低噪声电源高PSRR抑制USB总线引入的纹波保障ADC与RTC精度晶振ABM3B-12.000MHZ-B212MHz, ±10ppm, SMD3225为MCU提供高精度主时钟源满足UART通信误差±2%的要求115200bps 12MHz注开发板上所有被动器件电阻、电容均按黄山派BSP参考设计选取重点保障HSPI总线信号完整性如CS/CLK线端接电阻与电源去耦0.1μF陶瓷电容紧邻MCU VDD引脚。7. 工程扩展路径与实践建议“Hello HSPI”作为起点其价值在于提供了一条清晰、可验证的演进路径。以下是基于该工程的典型扩展方向与实施要点7.1 外设驱动验证GPIO控制在main循环中添加rt_pin_write(LED_PIN, PIN_HIGH)配合开发板LED验证drv_io.h中GPIO驱动的可用性。需注意LED_PIN需在board.h中正确定义为对应MCU引脚编号。ADC采样调用rt_device_find(adc)获取ADC设备句柄使用rt_device_control(adc_dev, RT_ADC_CMD_ENABLE, channel)使能通道再通过rt_device_read读取电压值。需确保BSP中drv_adc.c已正确配置HSPI ADC控制器的时钟与校准寄存器。7.2 低功耗模式实践Sleep模式进入在rt_thread_mdelay之后调用rt_hw_cpu_shutdown()强制进入Sleep模式。此时SysTick仍工作1秒后自动唤醒。Deep Sleep模式需关闭所有时钟域除LSE/LSI配置RTC作为唤醒源。rt_thread_mdelay不再适用需改用rt_timer_control创建一次性定时器并在回调中调用rt_hw_cpu_shutdown()。7.3 项目工程化升级版本控制将main.c与SConstruct纳入Git管理忽略build/目录与.elf/.bin文件。CI/CD集成在GitHub Actions中配置ARM GCC环境使用scons --board...自动编译上传firmware.bin作为Release资产。文档自动化利用Doxygen解析main.c中的Doxygen注释如brief生成HTML格式API文档。该工程的终极价值不在于其输出的字符串内容而在于它所固化的一套可复用、可审计、可协作的嵌入式开发范式——从芯片数据手册解读、BSP适配、RTOS集成到持续集成与低功耗优化每一个环节都经受了真实硬件的验证。当开发者第一次在串口看到稳定的“Hello HSPI”时他所掌握的已不仅是代码语法而是一整套将硅基芯片转化为可靠电子系统的工程能力。

相关文章:

RT-Thread在SF32LB52超低功耗MCU上的最小可运行工程

1. 项目概述“Hello HSPI”是一个面向黄山派(SiFli)SF32LB52系列超低功耗MCU的最小可运行验证工程,其核心目标并非实现复杂外设交互,而是建立一条端到端、可复现、可调试的嵌入式软件开发链路:从RT-Thread实时操作系统…...

Wan2.1 VAE赋能AIGC内容生产:自动化营销素材生成平台构建

Wan2.1 VAE赋能AIGC内容生产:自动化营销素材生成平台构建 1. 引言 想象一下,一个电商运营团队,每天需要为几十款新品制作社交媒体海报。设计师忙得焦头烂额,运营人员反复沟通修改,从创意到上线,一张图可能…...

Python实战:用奇异谱分析(SSA)给股票数据降噪,5步搞定时间序列预处理

Python实战:用奇异谱分析(SSA)给股票数据降噪,5步搞定时间序列预处理 金融数据分析师们每天面对海量股票数据时,最头疼的莫过于如何从市场噪音中识别出真实信号。去年我在分析某科技股季度波动时,发现传统移动平均方法会抹平重要转…...

Youtu-2B快速上手教程:WebUI交互界面部署详解

Youtu-2B快速上手教程:WebUI交互界面部署详解 想体验一个既轻快又聪明的AI对话助手吗?今天要介绍的Youtu-2B,就是一个能在普通电脑上流畅运行,还能帮你写代码、解数学题、创作文案的全能小帮手。它基于腾讯优图实验室开源的轻量化…...

丢失MSCOMCTL.OCX组件无法打开程序 教你免费修复方法

在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…...

双模型策略:OpenClaw同时接入Qwen3-32B与Llama3的配置实战

双模型策略:OpenClaw同时接入Qwen3-32B与Llama3的配置实战 1. 为什么需要双模型策略? 去年我在尝试用OpenClaw自动化处理日常工作时,发现一个有趣的现象:简单的文件整理任务用轻量模型就能快速完成,但遇到需要复杂逻…...

e-Paper触控驱动库PDLS_EXT3_Basic_Touch解析与迁移指南

1. 项目概述PDLS_EXT3_Basic_Touch 是 Pervasive Displays 公司为其单色电子墨水屏(e-Paper Display, EPD)配套开发的嵌入式驱动库,专为搭载 EXT3.1 主控扩展板与 EXT3-Touch 触控扩展板的硬件平台设计。该库已正式进入废弃(Depre…...

用Matlab实现NGO - TCN - BiGRU - Attention多变量时间序列预测

Matlab完整源码和数据 1.基于NGO-TCN-BiGRU-Attention北方苍蝇算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测,要求Matlab2023版以上; 2.输入多个特征,输出单个变量,考虑历史特征的影响,多变量时间…...

2026年程序员效率翻倍实测:ChatGPT解决代码调试、文档生成等10大实际问题

在实际开发工作中,ChatGPT能显著提升效率:调试错误代码平均节省40%时间,生成单元测试可覆盖90%以上场景,技术文档撰写效率提升3倍。对于国内开发者而言,最便捷的免费体验方式是使用聚合平台RskAi(ai.rsk.cn…...

nlp_gte_sentence-embedding_chinese-large部署案例:政务公文自动分类向量化实践

nlp_gte_sentence-embedding_chinese-large部署案例:政务公文自动分类向量化实践 你是不是也遇到过这样的烦恼?每天面对堆积如山的政务公文,手动分类归档不仅耗时耗力,还容易出错。一份会议纪要、一份政策文件、一份请示报告&…...

基于Cocos2d-x元气骑士游戏

Soul Knight 项目说明文档 同济大学软件学院 2020 年面向对象程序设计课程大项目 项目信息 项目选题:元气骑士项目进度时间线: 游戏说明 游戏简介 元气骑士是一款地牢类角色扮演游戏,玩家将会在随机关卡中遇到不同的敌人,…...

别只盯着80端口:Tomato靶机渗透中那些容易被忽略的‘边路’突破口(2211端口与日志审计)

别只盯着80端口:Tomato靶机渗透中那些容易被忽略的‘边路’突破口 在渗透测试的世界里,80端口就像是一扇大门,吸引着大多数攻击者的目光。但真正的安全专家知道,真正的突破口往往藏在那些不起眼的角落。就像在Tomato靶机渗透中&am…...

FUTURE POLICE语音解构效果展示:多方言与嘈杂环境下的识别精度对比

FUTURE POLICE语音解构效果展示:多方言与嘈杂环境下的识别精度对比 今天咱们来聊聊一个挺有意思的语音技术——FUTURE POLICE的语音解构能力。你可能听说过不少语音识别工具,但大多数都是在安静环境下,对着标准普通话效果最好。一旦环境嘈杂…...

FPGA新手必看:用Vivado+ModelSim实现ADC128S022的SPI信号采集(附完整代码)

FPGA实战:基于Vivado与ModelSim的ADC128S022 SPI信号采集系统设计 第一次接触FPGA的SPI接口开发时,我被时序图和状态机搞得晕头转向。直到完成这个ADC128S022采集项目,才真正理解如何将理论转化为可运行的硬件逻辑。本文将分享从环境搭建到功…...

腾讯CodeBuddy.ai实战:5分钟用AI生成可部署的五子棋游戏(附房间系统源码)

腾讯CodeBuddy.ai实战:5分钟用AI生成可部署的五子棋游戏(附房间系统源码) 在快节奏的数字化时代,AI辅助开发正以前所未有的速度改变着编程工作流。本文将带您体验如何借助腾讯CodeBuddy.ai平台,仅用自然语言指令快速生…...

Kimi-VL-A3B-Thinking在科研场景的应用:论文图表理解与实验结果跨图对比分析

Kimi-VL-A3B-Thinking在科研场景的应用:论文图表理解与实验结果跨图对比分析 1. 科研场景中的多模态挑战 科研工作者每天需要处理大量论文图表和数据可视化内容。传统的人工分析方式存在三个主要痛点: 效率瓶颈:研究人员需要花费大量时间反…...

Whisper-large-v3企业级部署教程:Nginx反向代理+HTTPS安全访问完整配置

Whisper-large-v3企业级部署教程:Nginx反向代理HTTPS安全访问完整配置 1. 引言 如果你已经成功在本地跑通了Whisper-large-v3语音识别服务,那么恭喜你,你已经迈出了第一步。但要让这个服务真正能被团队或客户使用,本地访问是远远…...

OpenClaw实操指南01|发刊词:为什么要做一套能落地的OpenClaw实操系列

这是「OpenClaw 实操日更」的第 1 篇。目标只有一个:把"看起来很厉害"变成"你今天就能跑起来,并且明天还能稳定复现"。 这段时间,OpenClaw 的热度非常高。教程也很多,演示也很丝滑。 但我和很多朋友聊完后&am…...

从链表操作到内存管理:用5个C语言例子讲透结构体指针与双指针

从链表操作到内存管理:用5个C语言例子讲透结构体指针与双指针 在C语言开发中,结构体指针和双指针的运用是区分初级与中高级程序员的重要分水岭。许多开发者能够熟练使用基本指针操作,却在需要动态修改内存布局的复杂场景中频频踩坑。本文将通…...

Ragflow-main镜像下载卡住?5分钟搞定Docker国内加速配置

Ragflow-main镜像下载卡住?5分钟搞定Docker国内加速配置 最近在本地部署Ragflow时,不少开发者反馈ragflow-main镜像下载异常缓慢甚至完全卡住。这其实是Docker默认镜像源在国内访问不稳定的典型表现。今天我们就从原理到实操,彻底解决这个痛点…...

别再自己折腾服务器了!用腾讯视频插件5分钟搞定小程序视频播放功能

5分钟解锁小程序视频播放:腾讯视频插件全攻略 第一次在小程序里加视频时,我盯着服务器账单和审核驳回通知发呆了半小时。HTTPS证书、带宽峰值、类目审核…这些技术黑话像一堵高墙,把无数中小开发者挡在门外。直到发现腾讯视频插件——这个藏…...

17# 西门子 S7 - 200 PLC 与组态王打造自动贴标机控制系统

17#西门子S7-200PLC和组态王自动贴标机控制系统在工业自动化领域,自动贴标机的应用越来越广泛,而如何构建一个高效稳定的控制系统则是关键。今天就来聊聊利用西门子 S7 - 200 PLC 和组态王搭建的自动贴标机控制系统。 西门子 S7 - 200 PLC:核…...

Halcon显示区域颜色设置避坑指南:为什么你的C#二值化处理总出错?

Halcon视觉检测中的颜色陷阱:为什么白色Region会让你的C#二值化结果失真? 在工业视觉检测领域,Halcon作为行业标杆工具链的核心组件,其显示区域的色彩配置看似简单,实则暗藏玄机。许多刚接触Halcon的C#开发者都会遇到一…...

裸奔硬件平台:支持MCU延后贴装的嵌入式开发底板设计

1. 项目概述“搞电的人真的不能玩无人机,少一颗芯片很难受”——这个标题并非调侃,而是一则嵌入式硬件工程师群体中广泛共鸣的工程现象切片。它直指一类典型设计状态:PCB已完成制板、阻容元件悉数贴装、电源与接口功能验证无误,唯…...

3.21打卡day41

个人总结一开始一直在想怎么生成0,01,2,02,12,012 的幂的序列&#xff0c;走进死胡同想不出来。看了答案才想到直接穷举每个k的 i 幂次方与前面所有项的和。#include<bits/stdc.h> using namespace std;int main() {int k, n;cin >> k >> n;vector<int>…...

WPF动画实战:用Storyboard实现按钮点击后的元素淡入与位移(附完整代码)

WPF动画实战&#xff1a;用Storyboard实现按钮点击后的元素淡入与位移&#xff08;附完整代码&#xff09; 在WPF开发中&#xff0c;动画效果是提升用户体验的关键要素之一。一个精心设计的动画可以让界面更加生动&#xff0c;引导用户注意力&#xff0c;甚至掩盖后台操作的等待…...

Claude Skill 架构设计与工程化指南

1. Claude Skill 架构设计核心原则 设计一个优秀的 Claude Skill 就像建造一座精密的桥梁&#xff0c;既要考虑承重能力&#xff08;性能&#xff09;&#xff0c;又要保证通行效率&#xff08;Token使用&#xff09;。我在实际项目中总结出三大黄金法则&#xff1a; 第一法则&…...

【git 】sync

PROMPT: 实现一个linux和windows上通用的git命令&#xff0c;能够将当前所在分支上最新修改的commit节点同步到目标分支上&#xff1b;实际使用过程中&#xff0c;输入git sync "目标分支名"命令&#xff0c;即可将当前所在分支上最新的commit节点同步到目标分支&…...

PoT与CoT协同优化:Python代码生成如何重塑大语言模型的数学推理流程

1. 当大语言模型遇到数学题&#xff1a;为什么需要PoT和CoT联手&#xff1f; 数学应用题一直是AI领域的硬骨头。想象一下这个场景&#xff1a;你问ChatGPT"小明买了3个苹果&#xff0c;每个5元&#xff0c;又买了2个香蕉&#xff0c;每个2元&#xff0c;总共花了多少钱&am…...

树莓派+PC搭建OpenHD图传:手把手教你实现透明OSD叠加显示(附完整代码)

树莓派与PC协同实现OpenHD透明OSD叠加&#xff1a;从原理到实战代码解析 在无人机图传系统中&#xff0c;实时叠加飞行数据&#xff08;OSD&#xff09;是提升操控体验的关键技术。本文将深入探讨如何利用树莓派作为天空端、PC作为地面站&#xff0c;构建一套完整的OpenHD透明O…...