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

STM32F103 学习笔记-21-串口通信(第4节)—串口发送和接收代码讲解(下)

本章面向STM32零基础新手基于STM32F103标准库开发从USART串口单字节发送的核心原理出发逐步扩展实现16位数据、数组、字符串发送功能并讲解C标准库printf/scanf的重定向方法。你可以把USART串口理解为STM32的“有线电话”——芯片通过它和电脑、传感器等外部设备“说话”发送数据或“听对方说话”接收数据本章核心就是教会STM32如何“说更长的句子、说格式化的话”。前置基础新手必看1. 核心概念通用同步/异步收发器Universal Synchronous/Asynchronous Receiver/Transmitter, USARTSTM32用于串行通信的外设支持异步通信如和电脑串口助手通信是嵌入式中最常用的通信方式之一。发送移位寄存器USART负责发送数据的核心硬件单次只能装下8位1字节数据——就像快递员的小包裹箱一次只能装1个8cm见方的包裹要发更大的包裹只能拆成小块分次发。TXE标志位Transmit Data Register Empty“包裹箱空了”的提示——表示发送数据寄存器已空可以放入下一个字节的数据。TC标志位Transmission Complete“所有包裹都送完了”的提示——表示最后一个字节已完全移出移位寄存器整组数据发送完成。2. 芯片架构关联STM32F103基于ARM Cortex-M3内核USART外设挂载在APB1/APB2总线上USART1在APB2USART2/3在APB1其发送逻辑由硬件寄存器控制我们通过操作寄存器或标准库封装的函数告诉硬件“要发什么数据”硬件会自动完成串行移位发送同时通过标志位反馈“发送状态”。核心前提单字节发送函数所有进阶功能的基础USART移位寄存器单次仅能发送8位数据所有多字节发送功能都需要基于单字节发送函数循环/分批次实现。原理通过库函数USART_SendData将字节写入发送寄存器然后循环等待TXE标志位为“空”确保当前字节已进入移位寄存器再进行下一次发送。代码实例可直接编译// 串口发送单字节函数 // pUSARTx: 串口外设USART1/USART2/USART3等本质是寄存器结构体指针 // ch: 待发送的8位数据uint8_t对应C语言的无符号字符型占1字节 void Usart_SendByte(USART_TypeDef * pUSARTx, uint8_t ch) { // 知识点USART_TypeDef是STM32标准库封装的串口寄存器结构体pUSARTx是指向该结构体的指针 // 把待发送字节写入串口数据寄存器 USART_SendData(pUSARTx, ch); // 等待TXE标志位为1寄存器空RESET表示“未置位”0SET表示“已置位”1 // 知识点while循环是阻塞式等待——直到条件不满足才退出确保数据真正送入硬件 while (USART_GetFlagStatus(pUSARTx, USART_FLAG_TXE) RESET); }关键点解析USART_TypeDef * pUSARTxC语言指针的典型应用——通过指针传递不同串口外设如USART1、USART2让函数支持多串口复用无需为每个串口写重复代码。阻塞式等待新手入门阶段优先保证数据发送的可靠性阻塞式等待是最简单的方式后续进阶可改用中断/DMA。1. 16位半字数据发送函数概念与原理16位数据半字uint16_t占2字节无法单次发送需拆分为高8位和低8位两个字节分两次调用单字节发送函数就像把16cm的包裹拆成8cm×2的两个小包裹先寄大的一半高8位再寄小的一半低8位。配置/实现步骤提取16位数据的高8位用 0xFF00屏蔽低8位再右移8位提取16位数据的低8位用 0x00FF屏蔽高8位依次调用单字节函数发送高低8位。代码实例// 串口发送16位半字函数 void Usart_SendHalfWord(USART_TypeDef * pUSARTx, uint16_t ch) { uint8_t temp_h, temp_l; // 知识点位运算——是按位与是右移嵌入式中常用位运算拆分/组合数据 // 提取高8位0xFF00是16进制掩码屏蔽低8位后右移8位得到纯高8位 temp_h (ch 0xFF00) 8; // 提取低8位0x00FF屏蔽高8位直接得到低8位 temp_l ch 0x00FF; // 先发送高8位 Usart_SendByte(pUSARTx, temp_h); // 后发送低8位 Usart_SendByte(pUSARTx, temp_l); }实验验证新手必做主函数调用示例int main(void) { // 串口初始化需提前实现配置115200波特率、8位数据位、1位停止位、无校验 USART_Config(); // 发送16位数据0xFF56 Usart_SendHalfWord(DEBUG_USARTx, 0xFF56); while(1); // 死循环防止程序退出 }现象说明串口调试助手勾选「十六进制显示」接收到FF 56对应拆分的高低8位不勾选十六进制显示乱码因为0xFF、0x56不是可打印ASCII字符属于正常现象。关键点解析位运算嵌入式开发中最常用的操作之一用于拆分/组合数据、配置寄存器位比算术运算更高效硬件直接支持。数据类型uint16_t无符号16位整数、uint8_t无符号8位整数是嵌入式标准类型定义在stdint.h比int/char更明确避免不同编译器的位数差异。2. 8位数据数组批量发送函数概念与原理数组是连续存储的多个8位数据就像一整箱8cm的小包裹通过for循环逐个取出包裹调用单字节函数发送全部发完后需等待TC标志位确保最后一个“包裹”真正送到对方手里。配置/实现步骤传入数组首地址和元素个数循环遍历数组逐个发送元素等待TC标志位确认整组数据发送完成。代码实例// 串口发送8位数组函数 // array: 数组首地址C语言中数组名本质是首元素指针 // number: 数组元素个数最大255因为uint8_t范围0~255 void Usart_SendArray(USART_TypeDef * pUSARTx, uint8_t *array, uint8_t number) { uint8_t i; // 知识点for循环遍历数组嵌入式中常用遍历方式 for(i 0; i number; i) { // 数组元素访问*(array i) 等价于 array[i] Usart_SendByte(pUSARTx, array[i]); } // 等待整组数据发送完成TC标志位区别于单字节的TXE while (USART_GetFlagStatus(pUSARTx, USART_FLAG_TC) RESET); }实验验证主函数调用示例int main(void) { // 定义并初始化数组10个8位数据 uint8_t send_array[10] {1,2,3,4,5,6,7,8,9,10}; USART_Config(); // 串口初始化 // 发送数组串口1、数组首地址、10个元素 Usart_SendArray(USART1, send_array, 10); while(1); }调试要点勾选「十六进制显示」接收到01 02 03 04 05 06 07 08 09 0A不勾选无可见字符1~10是不可打印ASCII码并非代码错误若数组元素为a97、b98不勾选可显示ab。关键点解析数组与指针uint8_t *array接收数组首地址array[i]等价于*(array i)嵌入式中常通过指针操作硬件寄存器/数组节省内存。TC vs TXE单字节发送等TXE寄存器空整组发送等TC全部发完混淆会导致最后一个字节发送不完整。3. 字符串发送函数概念与原理C语言中字符串是以\0空字符ASCII码0为结束标志的字符数组就像一串有“终止符”的包裹我们只需循环发送字符直到遇到\0停止无需提前知道字符串长度。配置/实现步骤传入字符串首地址用do-while循环逐个发送字符循环结束后等待TC标志位处理常见问题如换行、变量初始化。代码实例// 串口发送字符串函数 void Usart_SendString(USART_TypeDef * pUSARTx, char *str) { // 知识点变量必须显式初始化未初始化的i是随机值会导致数组越界 uint8_t i 0; // do-while循环至少执行一次避免空字符串 do { Usart_SendByte(pUSARTx, *(str i)); i; } while(*(str i) ! \0); // 直到遇到结束符\0 // 等待字符串全部发送完成 while (USART_GetFlagStatus(pUSARTx, USART_FLAG_TC) RESET); }实验验证与常见问题主函数调用示例int main(void) { USART_Config(); // 字符串末尾加\r\n回车换行解决数据粘连问题 Usart_SendString(USART1, STM32串口字符串测试\r\n); Usart_SendString(USART1, 零基础也能学会\r\n); while(1); }常见问题解决问题1串口无输出→循环变量i未初始化随机值导致访问越界→必须uint8_t i 0;问题2字符串无换行→在字符串末尾加\r\n如测试\r\n问题3乱码→串口波特率/数据位配置不匹配如初始化是115200助手设为9600。关键点解析字符串结束符\0是C语言字符串的核心标志缺失会导致循环“跑飞”访问内存中无关数据嵌入式中内存越界可能导致程序崩溃。do-while循环区别于while循环先执行后判断确保空字符串也会进入循环但发送0字节更适配字符串发送场景。4. C标准库输入输出函数重定向STM32默认无法使用printf/scanf这些函数默认向“电脑屏幕/键盘”读写需重定向其底层函数将读写逻辑绑定到串口——相当于把printf的“输出屏幕”改成“串口”scanf的“输入键盘”改成“串口”。4.1 printf/putchar重定向原理printf/putchar底层都会调用fputc函数标准库函数负责输出单个字符只需重写fputc将字符输出逻辑替换为串口单字节发送即可让printf通过串口打印。配置步骤代码实现添加到串口驱动.c文件// 必须包含标准库头文件否则无法识别FILE、fputc #include stdio.h // 知识点函数重写——自定义fputc覆盖标准库默认实现 // ch: 待输出的字符f: 文件指针printf默认忽略仅兼容标准库格式 int fputc(int ch, FILE *f) { // 将int型ch转为uint8_t仅保留低8位符合串口发送要求 USART_SendData(DEBUG_USARTx, (uint8_t) ch); // 阻塞等待TXE标志位 while (USART_GetFlagStatus(DEBUG_USARTx, USART_FLAG_TXE) RESET); return (ch); // 返回字符兼容标准库调用逻辑 }Keil MDK工程配置关键点击Options for Target→Target→ 勾选Use MicroLIB微库微库是精简版C标准库适配嵌入式场景不勾选则重定向失效。实验验证#include stdio.h // 使用printf必须包含 int main(void) { uint16_t num 1234; float temp 25.68f; USART_Config(); // 知识点printf格式化输出——嵌入式中常用作调试信息打印 printf(STM32 printf重定向测试\r\n); printf(数字%d十六进制0x%X\r\n, num, num); printf(温度%.2f℃\r\n, temp); // putchar同步生效发送单个字符 putchar(!); while(1); }现象串口助手取消十六进制显示显示STM32 printf重定向测试 数字1234十六进制0x4D2 温度25.68℃ !4.2 scanf/getchar重定向原理scanf/getchar底层调用fgetc函数负责读取单个字符重写fgetc将字符读取逻辑替换为串口接收即可通过串口输入数据。代码实现#include stdio.h // 重写fgetc绑定串口接收 int fgetc(FILE *f) { // 阻塞等待串口接收数据RXNE标志位接收寄存器非空 while (USART_GetFlagStatus(DEBUG_USARTx, USART_FLAG_RXNE) RESET); // 读取接收寄存器数据并返回 return (int)USART_ReceiveData(DEBUG_USARTx); }实验验证#include stdio.h int main(void) { char ch; int num; USART_Config(); printf(请输入一个字符); // getchar读取串口输入的字符 ch getchar(); printf(你输入的字符是%c\r\n, ch); printf(请输入一个数字); // scanf格式化读取串口输入的数字 scanf(%d, num); printf(你输入的数字是%d\r\n, num); while(1); }注该函数是阻塞式接收——程序会卡在while处直到串口接收到数据适合简单的指令交互场景。关键点解析函数重写嵌入式中常用的技巧通过重写标准库/底层函数适配硬件场景无需修改上层代码如直接用printf。MicroLIBKeil专为嵌入式优化的C标准库体积小、适配裸机开发默认标准库不支持重定向fputc/fgetc。5. 关键调试与兼容性5.1 串口调试助手配置规则新手必记发送数据类型串口助手显示配置示例现象16位数据、数组原始数值勾选「十六进制显示」发送0xFF56 → 显示FF 56字符串、printf格式化输出取消「十六进制显示」发送测试 → 显示测试5.2 常见避坑点循环变量未初始化→数组/字符串访问越界→串口无输出TXE/TC标志位混淆→最后一个字节发送不完整未勾选MicroLIB→printf重定向失效字符串无\0→发送乱码/程序崩溃串口初始化参数波特率、数据位与助手不匹配→乱码。5.3 跨平台兼容性跨串口函数通过pUSARTx形参指定串口只需修改初始化代码即可从USART1移植到USART2/3跨芯片核心逻辑兼容Cortex-M3/M4/M7内核的STM32如F4/F7系列仅需调整库函数名如HAL库改为HAL_UART_Transmit。小结USART串口单次仅能发送8位数据多字节发送需基于单字节函数循环/拆分实现16位数据拆分为高低8位发送数组通过for循环遍历发送字符串通过\0判断结束printf/scanf重定向的核心是重写fputc/fgetc并配置MicroLIB嵌入式开发中位运算、指针、变量初始化、标志位判断是核心基础需熟练掌握。思考阻塞式发送/接收会占用CPU资源如何通过中断实现非阻塞的串口发送/接收除了标准库STM32HAL库中如何实现串口多字节发送和printf重定向若要发送浮点型数据如3.1415如何基于现有函数实现串口接收数据时如何避免因数据丢失导致的程序异常提示缓冲区建议查阅STM32F103官方参考手册RM0008的USART章节进一步理解寄存器工作原理和标志位时序。

相关文章:

STM32F103 学习笔记-21-串口通信(第4节)—串口发送和接收代码讲解(下)

本章面向STM32零基础新手,基于STM32F103标准库开发,从USART串口单字节发送的核心原理出发,逐步扩展实现16位数据、数组、字符串发送功能,并讲解C标准库printf/scanf的重定向方法。你可以把USART串口理解为STM32的“有线电话”——…...

笔记软件换了一个又一个,Tolaria让知识库真正属于你

知识管理这件事,说起来容易,做起来却总让人觉得哪里不对劲。笔记软件换了一茬又一茬,从Evernote到Notion,从Obsidian到Logseq,每换一次就要折腾一次迁移,每换一次就要重新适应一套逻辑,到头来真…...

手把手教你搞定移远EC200U/EC25的Linux驱动:从硬件检查到串口映射的保姆级教程

手把手教你搞定移远EC200U/EC25的Linux驱动:从硬件检查到串口映射的保姆级教程 刚接触移远4G模块的开发者,往往会在Linux驱动适配环节遇到各种"坑"。本文将以EC200U和EC25为例,带你完整走通从硬件检查到功能稳定的全流程。不同于零…...

基于LangChain与Azure OpenAI构建智能问答云函数实战指南

1. 项目概述:构建一个基于LangChain与Azure OpenAI的智能问答函数最近在折腾一个有意思的东西:如何把一个简单的用户提问,通过云函数快速变成一个结构化的、有上下文的智能对话。这听起来像是需要一整套复杂的后端服务,但实际上&a…...

AI环境管理框架AEnvironment:解决多模型开发部署难题

1. 项目概述与核心价值最近在折腾一个挺有意思的项目,叫inclusionAI/AEnvironment。乍一看这个名字,可能有点抽象,但如果你正在做AI应用开发,特别是涉及到多模型、多环境、复杂依赖管理的场景,这个项目很可能就是你一直…...

AI Agent Harness Engineering 盈利模式设计:订阅制、按次付费与定制化服务

AI Agent Harness Engineering 盈利模式设计:订阅制、按次付费与定制化服务 关键词 AI Agent 工具链工程、Agent Harness 订阅制分层、Token 经济下按次计费优化、定制化 Agent 基础设施 ROI、Agent 生态协作分成、可观测性驱动的价值锚定、企业级 AI 安全合规附加模块 摘要…...

Akagi麻雀助手:终极指南 - 如何用AI提升你的雀魂麻将水平

Akagi麻雀助手:终极指南 - 如何用AI提升你的雀魂麻将水平 【免费下载链接】Akagi 支持雀魂、天鳳、麻雀一番街、天月麻將,能夠使用自定義的AI模型實時分析對局並給出建議,內建Mortal AI作為示例。 Supports Majsoul, Tenhou, Riichi City, Am…...

SpringBoot+Vue垃圾分类回收管理系统源码+论文

代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹 分享万套开题报告任务书答辩PPT模板 作者完整代码目录供你选择: 《SpringBoot网站项目》1800套 《SSM网站项目》1500套 《小程序项目》1600套 《APP项目》1500套 《Python网站项目》…...

Spring Boot + 策略模式:增强接口扩展性的最佳实践

一、为什么需要策略模式?在实际业务开发中,经常会遇到一个接口有多种不同实现方式的场景。例如:支付系统:微信支付、支付宝支付、银行卡支付订单折扣:满减、打折、VIP特价文件处理:PDF导出、Excel导出、CSV…...

SpringBoot+Vue实验室开放管理系统源码+论文

代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹 分享万套开题报告任务书答辩PPT模板 作者完整代码目录供你选择: 《SpringBoot网站项目》1800套 《SSM网站项目》1500套 《小程序项目》1600套 《APP项目》1500套 《Python网站项目》…...

决策树在文本分类中的应用与实践

1. 文本分类与决策树基础文本分类是自然语言处理中的经典任务,而决策树作为可解释性极强的机器学习模型,在这个领域有着独特的应用价值。我第一次接触这个组合是在处理客户反馈自动分类项目时,当时需要快速构建一个能向业务部门解释的分类系统…...

2025年MLOps工程师核心能力与实战路线

1. 2025年MLOps精通的战略路径解析过去三年间,我主导过七个不同规模的MLOps落地项目,从金融风控到工业质检,最深的体会是:MLOps工程师正在从"会调参的码农"转变为"懂业务的架构师"。2025年的MLOps知识图谱将呈…...

what is 卡常?

卡常的概念与定义 卡常指在编程竞赛或算法实现中&#xff0c;通过优化代码细节使程序在时间或空间限制内运行。这种优化通常针对特定评测环境&#xff0c;目的是通过微调代码来通过严格的时间或空间限制。 说人话 例//我是正解 #include<bits/stdc.h> using namespace st…...

GitHub宝藏库awesome-llm-apps:LLM应用开发灵感与实战指南

1. 项目概述&#xff1a;一个汇聚LLM应用灵感的“藏宝图”最近在GitHub上闲逛&#xff0c;发现了一个让我眼前一亮的仓库&#xff1a;Shubhamsaboo/awesome-llm-apps。这可不是一个普通的代码库&#xff0c;它更像是一张由全球开发者共同绘制的“藏宝图”&#xff0c;专门标记那…...

TCP、UDP、ARP、Socket 与网络加密协议知识点整理——【2026】软考中级知识整理

TCP、UDP、ARP、Socket 与网络加密协议知识点整理 在计算机网络中&#xff0c;TCP、UDP、IP、ARP、ICMP、Socket、PPP、IPSec 等概念经常一起出现&#xff0c;也容易混淆。本文主要从协议层次、核心作用、典型应用和考试常见考点几个角度进行整理。 出自&#xff1a;智澈乐尚网…...

深度强化学习实战:从DQN到PPO的算法实现与调参指南

1. 项目概述与核心价值如果你对深度强化学习&#xff08;Deep Reinforcement Learning, DRL&#xff09;感兴趣&#xff0c;并且不止一次地尝试过复现论文里的算法&#xff0c;结果却卡在环境配置、代码调试或者算法细节的“最后一公里”上&#xff0c;那么这个名为“awjuliani…...

【Backend Flow工程实践 08】LEF / Liberty / Verilog / DEF:Backend Flow 为什么依赖多格式协同?

作者&#xff1a;Darren H. Chen 方向&#xff1a;Backend Flow / 后端实现流程 / 工程自动化 / 验证基础设施 demo&#xff1a;LAY-BE-08_standard_formats 标签&#xff1a;EDA、Backend Flow、后端实现、LEF、Liberty、Verilog、DEF、标准格式、Design Import、Library Cont…...

惯性摩擦焊机早期故障检测与排除技术实现【附代码】

✨ 本团队擅长数据搜集与处理、建模仿真、程序设计、仿真代码、EI、SCI写作与指导&#xff0c;毕业论文、期刊论文经验交流。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流&#xff0c;查看文章底部二维码 &#xff08;1&#xff09;两重分段威布尔模型与早期故障拐点求解&#xff1…...

零基础极速上手:普通人如何用AI建站工具10分钟搭建个人网站

零基础极速上手&#xff1a;普通人如何用AI建站工具10分钟搭建个人网站很多人觉得搭建网站是程序员和设计师的专属技能&#xff0c;自己完全不懂技术&#xff0c;就算有AI帮忙也无从下手。其实&#xff0c;当下的AI建站工具已经将这个过程简化到了极致&#xff1a;你只需要像聊…...

幼儿识字动画 1000 字 动画

本文为家庭学习整理资料&#xff0c;仅供个人学习使用&#xff0c;侵删。 资源名称&#xff1a;幼儿识字动画 1000 字 动画 适合年龄&#xff1a;3–8 岁 内容简介&#xff1a;系统识字动画&#xff0c;帮助孩子轻松掌握 1000 个常用字。 学习资料获取方式&#xff1a; ht…...

AI建站工具怎么选:一份中立实用的选型标准与对比指南

AI建站工具怎么选&#xff1a;一份中立实用的选型标准与对比指南面对市面上五花八门的AI建站工具&#xff0c;很多人都会陷入选择困难。是选那个号称完全不用写代码的&#xff0c;还是选那个功能看起来更强大的&#xff1f;生成的代码能不能商用&#xff1f;会不会有安全隐患&a…...

DBO-VMD-HT高压直流线路故障定位系统设计【附代码】

✨ 本团队擅长数据搜集与处理、建模仿真、程序设计、仿真代码、EI、SCI写作与指导&#xff0c;毕业论文、期刊论文经验交流。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流&#xff0c;查看文章底部二维码 &#xff08;1&#xff09;蜣螂优化算法自适应优化VMD参数&#xff1a; 针对…...

AI智能体文件感知规划:让AI在行动前先读懂你的文件

1. 项目概述&#xff1a;当AI规划器学会“读文件”最近在折腾AI智能体&#xff08;Agent&#xff09;和自动化工作流&#xff0c;我发现一个挺有意思的痛点&#xff1a;很多规划任务&#xff0c;比如写周报、整理会议纪要、分析数据&#xff0c;其实都离不开对现有文件的处理。…...

医疗AI训练数据安全红线(MCP 2026脱敏配置终极 checklist)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;医疗AI训练数据安全红线的法律与伦理基线 医疗AI模型的训练高度依赖高质量、大规模、标注精准的临床数据&#xff0c;但此类数据天然承载患者隐私、生命权益与社会信任。因此&#xff0c;数据采集、脱敏…...

多智能体系统在医疗领域的应用:架构设计与工程实践

1. 项目概述&#xff1a;一个面向医疗领域的多智能体协作系统最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“Multi-Agent-Medical-Assistant”。光看名字&#xff0c;就能猜到它想干什么&#xff1a;用多个AI智能体来协作&#xff0c;扮演一个医疗助理的角色。这其实戳…...

MCP国产化部署卡在麒麟V10?手把手教你绕过OpenEuler兼容性雷区(附调试日志对照表)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;MCP国产化部署卡在麒麟V10&#xff1f;手把手教你绕过OpenEuler兼容性雷区&#xff08;附调试日志对照表&#xff09; 在麒麟V10 SP1&#xff08;内核 4.19.90-23.8.v2101.ky10.aarch64&#xff09;上部…...

多模态大模型实战:从Mistral-ViBE架构解析到图文理解应用部署

1. 项目概述&#xff1a;从“氛围”到“多模态”的智能进化最近在折腾大模型应用时&#xff0c;发现了一个挺有意思的仓库&#xff1a;mistralai/mistral-vibe。乍一看名字&#xff0c;你可能会联想到音乐或者某种情绪&#xff0c;但在AI圈子里&#xff0c;这个名字指向的是Mis…...

汽修门店 POS 机断网?映翰通 IR615 工业路由器搞定稳定联网

一、门店痛点&#xff1a;收银断网&#xff0c;生意白跑汽车维修门店的 POS 机&#xff0c;是日常运营的核心。有线宽带不稳、信号差&#xff0c;付款高峰期频繁断网&#xff0c;订单卡单、失败普通家用路由器扛不住门店复杂环境&#xff0c;用不久就宕机交易数据传输没保障&am…...

MIG环境下GPU共享资源调度优化与碎片整理策略

1. MIG环境下GPU共享工作负载的调度挑战与解决方案在AI推理、科学计算等需要大规模并行计算的场景中&#xff0c;GPU资源的高效利用一直是数据中心管理的核心难题。NVIDIA推出的多实例GPU&#xff08;Multi-Instance GPU&#xff0c;MIG&#xff09;技术通过硬件级分区实现了资…...

推理优化:大模型高效部署核心技术全解析

随着大语言模型、多模态模型规模持续扩张&#xff0c;AI模型在各类业务场景落地时&#xff0c;推理性能瓶颈愈发凸显。高延迟、低吞吐量、硬件资源利用率不足等问题&#xff0c;直接影响用户体验与业务成本&#xff0c;推理优化成为AI工程化落地的核心环节。本文将从推理基础认…...