STM32 UART复用功能配置详解:从GPIO架构到实战避坑指南
1. 项目概述从一次串口“失联”说起那天下午我正调试一块新画的STM32F103板子核心功能是通过UART1与一个GPS模块通信。代码是从老项目里移植过来的配置、中断、收发逻辑都一模一样按理说应该是“上电即用”。结果呢GPS模块安静得像块石头示波器怼到TX引脚上连个毛刺都没有。第一反应是硬件问题查了半天原理图、飞线、供电一切正常。直到我鬼使神差地打开了芯片数据手册的引脚复用功能表才在“PA9/PA10”那一行看到了几个小字“默认功能为USART1但可重映射为TIM1_CH2/TIM1_CH3”。我的板子上PA9和PA10恰好还连着两个LED指示灯用于显示状态。问题就出在这里在初始化某个外设比如某个定时器时我无意中改写了这两个引脚的复用功能寄存器把UART1给“挤掉线”了。这就是典型的STM32 UART复用问题。它不像单纯的配置错误那样直接报错而是表现为一种“静默失效”——外设本身可能已经初始化成功寄存器看起来一切正常但信号就是出不去也进不来让调试过程变得异常棘手。对于所有使用STM32系列MCU尤其是引脚资源紧张、需要大量复用功能的开发者来说理解并规避GPIO复用冲突是保证系统稳定性的必修课。今天我就结合自己踩过的坑和总结的经验把STM32的GPIO复用机制特别是UART相关的部分彻底讲透。2. STM32 GPIO复用功能架构深度解析要解决问题必须先理解问题的根源。STM32的GPIO复用远不是“一个引脚能干两件事”那么简单它背后是一套精细的、分层管理的硬件架构。2.1 复用功能映射的三层模型你可以把STM32上一个物理引脚的功能选择想象成一个三层漏斗筛选器。第一层GPIO模式寄存器 (GPIOx_MODER)这是最根本的一层。每个引脚在复位后默认都是输入浮空模式。在这个模式下引脚与任何内部外设电路都是断开的相当于一个悬空的三态门。你要使用它的任何功能无论是普通输出、输入还是复用功能第一步都必须先通过GPIOx_MODER寄存器将对应引脚的模式设置为00: 输入模式01: 通用输出模式10: 复用功能模式11: 模拟模式用于ADC/DAC关键点如果你想让PA9作为UART1_TX使用必须先将PA9的MODER位设置为10复用功能模式。很多新手初始化UART时只配置了USART本身的寄存器却忘了配置GPIO模式导致引脚根本就没切换到正确的“通道”上。第二层复用功能选择寄存器 (GPIOx_AFRL/GPIOx_AFRH)这是最核心、也最容易出问题的一层。当MODER设置为复用功能模式后这个引脚到底“复用”给哪个外设呢答案就在AFRL用于引脚0-7和AFRH用于引脚8-15这两个寄存器里。每个引脚占用4个比特位可以编码0-15共16个值每个值对应一个具体的“复用功能映射编号”Alternate Function简称AF。以STM32F103C8T6的PA9为例查看数据手册的“Alternate function mapping”表格你会发现AF1: TIM1_CH2AF2: TIM2_CH3AF7: USART1_TX...所以要让PA9作为UART1_TX除了设置MODER为复用模式还必须将GPIOA_AFRH寄存器中对应PA9的4个比特位设置为0111即十进制7。第三层外设时钟与使能这是确保信号通路“供电”和“开关”的一层。即使前两层配置都正确如果对应的外设时钟没有打开或者外设本身没有被使能信号依然无法通行。GPIO端口时钟必须通过RCC_AHB对于F1系列是RCC_APB2开启对应GPIO端口的时钟否则你对GPIO寄存器的所有操作都无效。外设时钟必须通过RCC_APB1或RCC_APB2开启USART1的时钟。外设使能必须设置USART_CR1寄存器的UE位和TE发送使能位。这三层缺一不可。任何一个环节的缺失或错误配置都会导致UART无法工作。2.2 默认复用与重映射的陷阱在一些STM32型号尤其是F1系列中部分引脚有“默认复用功能”和“重映射功能”的概念。这增加了另一层复杂性。以USART1为例它的默认引脚是PA9(TX)和PA10(RX)。但是你可以通过开启“重映射”功能将它映射到PB6和PB7。这里有一个巨大的坑重映射功能是通过一个独立的“AFIO”外设来管理的需要开启AFIO时钟。当你开启了USART1的重映射那么原先的默认引脚PA9/PA10上的复用功能就会自动失效无论你怎么配置GPIOA的AFR寄存器都没用。// 开启USART1引脚重映射映射到PB6, PB7 __HAL_RCC_AFIO_CLK_ENABLE(); // 必须先开AFIO时钟 __HAL_AFIO_REMAP_USART1_ENABLE(); // 此时必须配置PB6和PB7为复用功能并设置正确的AF编号同样是AF7 // PA9和PA10即使配置了AF7也不再是USART1功能注意在更现代的系列如F4, H7中重映射的概念被更灵活的“复用功能选择”取代每个引脚通过AFR寄存器直接选择功能不再需要单独的“重映射使能”位逻辑上更清晰但也要求开发者必须精确查阅芯片对应的数据手册或CubeMX的引脚配置图。3. UART复用配置的实战步骤与代码剖析理论讲完我们来看手把手的实操。这里以STM32F407的USART1PA9/PA10和USART2PA2/PA3为例使用HAL库进行配置并解释每一步的“为什么”。3.1 使用STM32CubeMX进行可视化配置推荐对于初学者或复杂项目强烈推荐先用CubeMX生成初始化代码框架它能直观地避免冲突。在Pinout视图找到PA9和PA10点击引脚选择USART1_TX和USART1_RX。CubeMX会自动将PA9/PA10的MODER设为AF并设置正确的AF编号对于F4USART1是AF7。在Clock Configuration视图确保系统时钟、APB2总线时钟USART1挂载于此已正确配置。在Configuration视图的USART1设置中配置波特率、字长、停止位、校验位等参数。生成代码。CubeMX生成的MX_GPIO_Init()和MX_USART1_UART_Init()函数已经完整包含了前面提到的三层配置。3.2 手动编码配置详解理解手动配置的代码能让你在调试时更有底气。下面是一个完整的USART1初始化函数解析void UART1_Init(void) { // 1. 使能时钟第三层供电 __HAL_RCC_GPIOA_CLK_ENABLE(); // 开启GPIOA时钟 __HAL_RCC_USART1_CLK_ENABLE(); // 开启USART1时钟 // 2. 配置GPIO引脚第一、二层选择通路 GPIO_InitTypeDef GPIO_InitStruct {0}; // 配置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_HIGH; // 高速模式保证信号边沿质量 GPIO_InitStruct.Alternate GPIO_AF7_USART1; // 关键指定复用功能为AF7 (USART1) HAL_GPIO_Init(GPIOA, GPIO_InitStruct); // 配置PA10为USART1_RX GPIO_InitStruct.Pin GPIO_PIN_10; GPIO_InitStruct.Mode GPIO_MODE_AF_INPUT; // 复用输入模式对于F4也可以用GPIO_MODE_AF_PP但输入更准确 GPIO_InitStruct.Pull GPIO_PULLUP; // RX建议上拉避免空闲时受干扰 GPIO_InitStruct.Alternate GPIO_AF7_USART1; HAL_GPIO_Init(GPIOA, GPIO_InitStruct); // 3. 配置USART外设本身第三层开关与参数 huart1.Instance USART1; huart1.Init.BaudRate 115200; huart1.Init.WordLength UART_WORDLENGTH_8B; huart1.Init.StopBits UART_STOPBITS_1; huart1.Init.Parity UART_PARITY_NONE; huart1.Init.Mode UART_MODE_TX_RX; huart1.Init.HwFlowCtl UART_HWCONTROL_NONE; huart1.Init.OverSampling UART_OVERSAMPLING_16; if (HAL_UART_Init(huart1) ! HAL_OK) { Error_Handler(); } }关键点解析GPIO_MODE_AF_PP这是“复用推挽输出”模式。对于TX引脚必须选择输出模式因为MCU需要主动驱动引脚电平变化。推挽输出能提供较强的驱动能力。GPIO_MODE_AF_INPUT对于RX引脚严格来说应配置为输入模式。虽然有些教程用AF_PP也能工作因为复用功能内部会覆盖输出驱动器但遵循“输入引脚配输入模式”的原则更规范也能避免一些潜在问题。GPIO_AF7_USART1这是一个HAL库定义好的宏其值就是7。它直接对应到AFR寄存器的值。务必确保这个值与数据手册完全一致不同芯片、不同UART编号其AF编号可能不同。3.3 多UART并存时的资源冲突规避当一个项目需要多个UART例如UART1接调试串口UART2接蓝牙模块UART3接RS485时引脚冲突的概率大大增加。规划策略如下优先使用默认引脚尽量不启用重映射减少配置复杂度。查阅引脚定义表在芯片数据手册或CubeMX中列出所有UART的TX/RX引脚选项。制作一个表格外设默认引脚重映射引脚1重映射引脚2AF编号USART1PA9, PA10PB6, PB7-AF7USART2PA2, PA3PD5, PD6-AF7USART3PB10, PB11PC10, PC11PD8, PD9AF7冲突解决如果发现两个外设需要同一个引脚例如USART2的PA2和某个ADC通道冲突解决方案有启用重映射将其中一个外设映射到备用引脚。更换外设如果USART3的引脚是空闲的可以考虑改用USART3。功能分时复用不推荐用于UART对于极特殊场景可以通过软件动态切换引脚功能但会极大增加软件复杂度和实时性风险。4. 复用问题诊断与调试技巧实录当你的UART不工作时按照以下流程排查可以快速定位是否为复用问题。4.1 系统性排查流程信号线物理层检查用万用表测量TX/RX引脚对地、对电源是否短路。用示波器观察TX引脚在发送数据时的波形。如果完全没有波形问题大概率出在MCU内部配置。软件配置检查清单[ ]时钟GPIO端口时钟、UART外设时钟是否开启查看RCC-AHB1ENR,RCC-APB2ENR等寄存器[ ]GPIO模式引脚是否已配置为复用模式查看GPIOA-MODER[ ]复用功能选择AFR寄存器是否设置了正确的AF编号查看GPIOA-AFRH[ ]外设使能UART的UEUSART Enable位和TETransmit Enable位是否置1查看USART1-CR1[ ]波特率等参数USART1-BRR寄存器值计算是否正确寄存器查看实战 在调试器如ST-Link Keil/IAR中直接查看相关寄存器是最直接的方法。以PA9USART1_TX为例确认RCC-AHB1ENR的bit 0 (GPIOAEN) 为1。确认GPIOA-MODER的bit[19:18]对应PA9为10复用模式。确认GPIOA-AFRH的bit[7:4]对应PA9为0111AF7。确认RCC-APB2ENR的bit 4 (USART1EN) 为1。确认USART1-CR1的bit 13 (UE) 和 bit 3 (TE) 为1。4.2 常见问题与解决方案速查表现象可能原因排查方法解决方案发送无波形1. GPIO未配为复用模式2. AF编号错误3. UART时钟未开4. 引脚被其他外设占用查看MODER、AFR、RCC使能寄存器按4.1清单逐项检查配置能发送不能接收1. RX引脚模式错误配成了输出2. RX引脚上拉电阻未启用受干扰3. 接收中断/DMA未正确配置检查RX引脚GPIO模式为AF_INPUT启用内部上拉配置RX为复用输入上拉检查USART_CR1的RE位通信数据错乱1. 波特率不匹配2. 引脚被其他外设如定时器间歇性驱动用示波器测量实际波特率检查AFR是否唯一校准波特率确保AFR寄存器只映射到一个外设重映射后无效1. AFIO时钟未开启F1系列2. 重映射后未配置新引脚的GPIO检查RCC_APB2ENR的AFIOEN位检查新引脚配置开启AFIO时钟并正确初始化重映射后的新引脚4.3 高级调试技巧使用GPIO模拟功能进行隔离测试当怀疑是复杂的复用冲突时一个非常有效的技巧是暂时绕过复用功能。将疑似有问题的TX引脚如PA9的配置从GPIO_MODE_AF_PP改为GPIO_MODE_OUTPUT_PP通用推挽输出。写一个简单的程序手动控制这个引脚高低电平变化模拟一个非常慢的串口信号比如1秒一个比特。用示波器或LED观察引脚是否响应。如果此时引脚能正常受控输出说明GPIO端口基本是好的问题出在“复用功能选择”或“UART外设本身”上。如果连通用输出模式都无法控制那问题可能更底层如时钟、电源或硬件损坏。这个方法能帮你快速划定故障范围。5. 不同STM32系列的复用功能差异与适配STM32家族庞大不同系列在GPIO复用架构上有所演进需要特别注意。STM32F1系列经典系列特点有明确的“默认功能”和“重映射”概念需要操作AFIO_MAPR等寄存器来开启重映射。注意点必须先开启AFIO时钟才能配置重映射寄存器。部分重映射是“全有或全无”不能单独重映射一个引脚。STM32F4/F7/H7系列先进系列特点采用更灵活的“Alternate Function”系统。每个引脚通过AFR寄存器直接选择0-15号复用功能没有单独的“重映射使能”位。注意点AF编号需要严格查阅芯片数据手册的“Alternate function mapping”表格。同一个外设如USART在不同引脚上的AF编号可能相同如USART1在PA9/PA10和PB6/PB7上都是AF7。STM32G0/L0等低功耗系列特点外设数量较少复用矩阵相对简单但原理相通。注意点需注意部分引脚是5V容忍的部分不是在与其他电平设备连接时要留意。通用法则无论哪个系列初始化复用功能的黄金步骤都是开时钟 - 配GPIO模式为复用 - 设AF编号 - 配外设参数并使能。拿到一个新芯片第一件事就是找到官方数据手册中的引脚定义表和复用功能映射表这是最权威的参考资料。6. 软件设计最佳实践与长期稳定性考量为了避免在项目后期被诡异的复用问题困扰在软件设计初期就应该建立良好的习惯。1. 集中管理引脚配置 不要将GPIO初始化代码分散在各个外设驱动文件中。建议创建一个独立的pinmux.c/h文件用一个函数如void PinMux_Init(void)统一初始化所有引脚的复用功能。这样一目了然便于检查和避免冲突。2. 使用CubeMX生成初始化代码但理解其输出 即使你习惯手动编码也建议用CubeMX进行引脚规划。它的图形化界面能直观地高亮冲突引脚。生成代码后仔细阅读其生成的MX_GPIO_Init()函数学习它是如何配置AFR寄存器的。3. 为关键功能引脚添加保护注释 在代码中为重要的、不可更改的复用引脚添加详细注释。// Pin Configuration for USART1 (Debug Console) // PA9 -- USART1_TX (AF7) - DEBUG TX, DO NOT REMAP // PA10 -- USART1_RX (AF7) - DEBUG RX, INTERNAL PULL-UP ENABLED4. 在系统初始化顺序中将GPIO复用配置提前 确保在main函数中先执行PinMux_Init()然后再初始化各个外设如UART、SPI、I2C。这样可以防止外设驱动库在初始化时意外改写了你配置好的AFR寄存器。5. 动态复用切换的极端情况 绝大多数应用引脚功能在初始化后就不会改变。但在极少数需要动态切换的场景例如一个引脚在Bootloader阶段用作UART接收升级包在APP阶段用作普通LED驱动务必注意切换前彻底关闭原外设的时钟和使能位。重新配置GPIO的MODER和AFR寄存器。必要时加入一定的延时等待硬件状态稳定。这种设计会显著增加系统的不确定性非必要不采用。调试UART复用问题就像在排查一条多开关控制的电路。时钟、GPIO模式、AF选择、外设使能每一个开关都必须拨到正确的位置通道才会畅通。最深刻的教训往往来自于那些“想当然”的时刻——以为代码是从成熟项目移植的就没问题以为CubeMX生成的配置万无一失。实际上硬件手册才是唯一的真理。养成在配置任何外设前先核对数据手册引脚描述和复用功能表的习惯能为你省下无数个抓狂的调试夜晚。下次当你发现串口又一次“静默”时不妨先静下心来从MODER寄存器的那个“10”开始查起。

相关新闻

无人机测绘航线规划:FlyPath QGIS插件从原理到实战

无人机测绘航线规划:FlyPath QGIS插件从原理到实战

如果你是一名无人机测绘从业者,或者正在学习使用无人机进行正射影像、三维建模等作业,那么你一定遇到过这个核心痛点: 如何高效、精准地规划无人机的飞行航线? 是手动在地图上一个个点去画吗?耗时耗力,还…

2026/8/13 8:06:38 阅读更多 →
STM8定时器互补PWM输出与死区时间配置实战

STM8定时器互补PWM输出与死区时间配置实战

1. 项目概述:从基础PWM到互补输出的跨越玩过STM8或者STM32的朋友,对PWM(脉冲宽度调制)肯定不陌生,点个灯、驱动个舵机、让电机转起来,基本都离不开它。但当你需要驱动一个半桥或全桥电路,比如无…

2026/8/13 8:06:38 阅读更多 →
TwinCAT3安装后五大核心问题解析与实战排坑指南

TwinCAT3安装后五大核心问题解析与实战排坑指南

1. 项目概述:从“安装成功”到“稳定运行”的鸿沟 如果你刚刚完成TwinCAT3的安装,看着桌面上的蓝色图标,以为可以立刻开始畅快地编写PLC程序,那可能就太乐观了。作为一名在工业自动化领域摸爬滚打多年的工程师,我见过太…

2026/8/13 8:06:38 阅读更多 →

最新新闻

BBC Alphablocks自然拼读动画:3-8岁儿童英语启蒙系统学习指南

BBC Alphablocks自然拼读动画:3-8岁儿童英语启蒙系统学习指南

1. 先搞清楚 Alphablocks 到底是什么,以及它为什么值得看 如果你正在寻找一套能让孩子主动开口、系统学习自然拼读的动画资源,那么《Alphablocks》是一个绕不开的名字。它不是一部普通的娱乐动画,而是一套由英国BBC出品的、专门为英语启蒙阶段…

2026/8/13 9:02:58 阅读更多 →
Claude Code自动模式配置与实战:AI编程助手无缝集成开发环境

Claude Code自动模式配置与实战:AI编程助手无缝集成开发环境

最近在开发中尝试使用 Claude Code 时,发现很多开发者都卡在了初始配置和连接问题上,尤其是面对“自动模式”和“手动模式”的选择时感到困惑。Anthropic 近期将 Claude Code 的“自动模式”设为默认选项,这一变化看似微小,实则深…

2026/8/13 9:02:58 阅读更多 →
深入理解AMBA AHB总线:从协议原理到实战避坑指南

深入理解AMBA AHB总线:从协议原理到实战避坑指南

1. 从一次“总线仲裁”的深夜调试说起 那是我刚入行做SoC设计不久,一个项目到了流片前的最后验证阶段。凌晨两点,我盯着波形图,一个诡异的现象反复出现:一个高优先级的DMA传输请求,偶尔会被一个低优先级的CPU访问“插队…

2026/8/13 9:02:58 阅读更多 →
OpenClaw:跨平台访问iCloud的开源解决方案

OpenClaw:跨平台访问iCloud的开源解决方案

1. 项目概述作为一名长期在跨平台工具领域折腾的老手,我最近发现了一个能彻底解决Windows/Linux用户访问iCloud生态痛点的神器——OpenClaw。这个开源工具链通过逆向工程实现了对iCloud核心服务的协议兼容,让非苹果设备也能完整使用照片流、备忘录、提醒…

2026/8/13 9:02:58 阅读更多 →
Claude Code自动模式解析:AI编程助手如何提升开发效率

Claude Code自动模式解析:AI编程助手如何提升开发效率

在实际开发工作中,我们经常需要与各种代码生成和辅助工具打交道。对于使用 Claude 系列模型的开发者而言,Claude Code 是一个专注于代码生成、解释和调试的交互界面。最近,其“自动模式”被设置为默认选项,这一变化看似微小&#…

2026/8/13 9:02:58 阅读更多 →
汽车遥控防盗系统技术解析:从滚动码到中继攻击的攻防演进

汽车遥控防盗系统技术解析:从滚动码到中继攻击的攻防演进

1. 从“滴滴”声到“无感”守护:现代汽车遥控防盗系统的演进与内核 十几年前,我们锁车时听到的那一声清脆的“滴滴”,是当时汽车防盗系统最直观的确认信号。那时的遥控钥匙,更像是一个简单的无线电开关,按下按钮&#…

2026/8/13 9:01:57 阅读更多 →

日新闻

Visual Studio新建项目解决方案为空:系统性排查与修复指南

Visual Studio新建项目解决方案为空:系统性排查与修复指南

1. 问题现象与本质剖析如果你是一位.NET开发者,或者正准备踏入这个领域,那么Visual Studio(后面简称VS)绝对是你绕不开的伙伴。但有时候,这个伙伴会跟你开一个不大不小的玩笑:你满怀期待地点击“创建新项目…

2026/8/13 0:00:09 阅读更多 →
长春建设厅网站:普通人买房办事必看的真实指南与避坑攻略

长春建设厅网站:普通人买房办事必看的真实指南与避坑攻略

说实话,每次提起“长春建设厅网站”这几个字,我心里都挺有感触的。不是因为它有多高大上,也不是因为那里藏着什么不可告人的秘密,恰恰相反,是因为它太“接地气”了,或者说,它是咱们普通人想要在这个城市好好生活、安稳买房时,必须得翻过的一座“数据山”。很多新朋友第…

2026/8/13 0:00:09 阅读更多 →
Windows家庭版远程桌面多用户破解完整指南:RDPWrap终极解决方案

Windows家庭版远程桌面多用户破解完整指南:RDPWrap终极解决方案

Windows家庭版远程桌面多用户破解完整指南:RDPWrap终极解决方案 【免费下载链接】rdpwrap.ini RDPWrap.ini for RDP Wrapper Library by StasM 项目地址: https://gitcode.com/GitHub_Trending/rd/rdpwrap.ini 你是否曾为Windows家庭版无法支持多用户远程桌面…

2026/8/13 0:00:09 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/13 2:38:34 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/12 1:11:09 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/12 1:11:08 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/11 17:09:45 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/12 1:11:10 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/11 17:09:45 阅读更多 →