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

从流水灯到串口通信:手把手教你玩转STM32F103的GPIO重映射(附避坑指南)

从流水灯到串口通信手把手教你玩转STM32F103的GPIO重映射附避坑指南当你开始尝试在STM32F103上实现更复杂的外设功能时GPIO引脚资源紧张的问题往往会突然出现。想象一下这样的场景你的核心板已经连接了多个传感器和显示模块突然发现USART1默认的PA9/PA10引脚已经被占用而项目又急需串口通信功能。这时GPIO重映射功能就像一位救火队员能够帮你重新规划引脚功能解决资源冲突的燃眉之急。1. GPIO重映射的核心概念与实战价值GPIO重映射Remapping是STM32系列微控制器提供的一项灵活功能它允许开发者将某些外设的默认引脚功能重新分配到其他备用引脚上。这项功能在STM32F103系列中尤为重要因为其引脚资源相对有限而外设功能却十分丰富。为什么需要掌握重映射技术在真实项目开发中我们经常会遇到以下典型场景默认功能引脚被其他关键外设占用PCB布局需要优化走线避免交叉干扰需要集中特定功能引脚以简化布线硬件设计后期发现引脚分配冲突以USART1为例其默认使用PA9(TX)和PA10(RX)但这两个引脚同时也是常用的GPIO或定时器通道。当它们被占用时我们可以通过重映射将其功能转移到PB6和PB7引脚。这种灵活性大大提高了硬件设计的容错空间。提示重映射功能由AFIOAlternate Function I/O模块控制使用前必须开启其时钟。2. 完整重映射实战以USART1为例2.1 硬件准备与引脚确认首先需要确认你的STM32F103开发板支持重映射功能。以常见的STM32F103C8T6核心板为例其引脚定义如下表所示引脚功能默认引脚重映射引脚USART1_TXPA9PB6USART1_RXPA10PB7SPI1_NSSPA4PA15SPI1_SCKPA5PB3在开始编码前务必断开开发板电源将串口模块的TX/RX线连接到PB6/PB7检查是否有其他外设占用PB6/PB72.2 代码实现步骤详解完整的重映射实现需要以下关键步骤#include stm32f10x.h void USART1_Remap_Init(void) { // 1. 开启GPIOB和USART1时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_USART1, ENABLE); // 2. 开启AFIO时钟关键步骤 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); // 3. 配置重映射引脚为复用推挽输出(TX)和浮空输入(RX) GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin GPIO_Pin_6; // TX GPIO_InitStructure.GPIO_Mode GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz; GPIO_Init(GPIOB, GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin GPIO_Pin_7; // RX GPIO_InitStructure.GPIO_Mode GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOB, GPIO_InitStructure); // 4. 执行重映射配置 GPIO_PinRemapConfig(GPIO_Remap_USART1, ENABLE); // 5. 初始化USART1参数波特率等 USART_InitTypeDef USART_InitStructure; USART_InitStructure.USART_BaudRate 115200; USART_InitStructure.USART_WordLength USART_WordLength_8b; USART_InitStructure.USART_StopBits USART_StopBits_1; USART_InitStructure.USART_Parity USART_Parity_No; USART_InitStructure.USART_HardwareFlowControl USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode USART_Mode_Rx | USART_Mode_Tx; USART_Init(USART1, USART_InitStructure); // 6. 使能USART1 USART_Cmd(USART1, ENABLE); }2.3 验证与调试技巧完成代码编写后建议通过以下方法验证重映射是否成功硬件环回测试短接PB6(TX)和PB7(RX)发送数据并检查是否能够回传逻辑分析仪捕捉PB6/PB7上的信号波形LED指示法在接收中断中翻转LED状态常见验证代码如下// 发送测试字符串 void USART1_SendTest(void) { char testStr[] Remap Test\r\n; for(int i0; isizeof(testStr)-1; i) { USART_SendData(USART1, testStr[i]); while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) RESET); } } // 在main函数中调用 int main(void) { USART1_Remap_Init(); while(1) { USART1_SendTest(); Delay_ms(1000); } }3. 高频踩坑点与解决方案3.1 时钟配置错误问题现象重映射完全不工作甚至影响原有功能根本原因忘记开启AFIO时钟最常见GPIO端口时钟未开启外设时钟如USART1未开启解决方案// 正确的时钟开启顺序 RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB | RCC_APB2Periph_USART1 | RCC_APB2Periph_AFIO, ENABLE);3.2 重映射参数选择错误问题现象功能部分正常但存在异常如只能发送不能接收常见错误混淆了部分重映射和完全重映射使用了错误的Remap参数未正确设置GPIO模式正确配置对照表外设重映射类型参数宏USART1完全重映射GPIO_Remap_USART1SPI1部分重映射GPIO_Remap_SPI1I2C1完全重映射GPIO_Remap_I2C13.3 硬件连接问题典型表现软件配置完全正确但通信失败排查步骤确认目标引脚未被其他电路拉低/拉高检查PCB走线是否短路/断路测量引脚电压是否符合预期确认终端电阻匹配特别是高速通信注意重映射后原默认引脚将恢复为普通GPIO功能不能再用于原外设功能。4. 进阶技巧与最佳实践4.1 多外设协同重映射当需要同时重映射多个外设时推荐采用以下模式void Peripheral_Remap_Init(void) { // 一次性开启所有需要的时钟 RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO | RCC_APB2Periph_USART1 | RCC_APB2Periph_SPI1, ENABLE); // 集中配置重映射 GPIO_PinRemapConfig(GPIO_Remap_USART1, ENABLE); GPIO_PinRemapConfig(GPIO_Remap_SPI1, ENABLE); // 后续初始化各个外设... }4.2 动态重映射技术在某些特殊场景下可能需要运行时动态切换引脚功能void Dynamic_Remap_Switch(void) { // 先禁用当前重映射 GPIO_PinRemapConfig(GPIO_Remap_USART1, DISABLE); // 重新配置GPIO模式 GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin GPIO_Pin_9 | GPIO_Pin_10; GPIO_InitStructure.GPIO_Mode GPIO_Mode_Out_PP; GPIO_Init(GPIOA, GPIO_InitStructure); // 延时确保稳定 Delay_ms(10); // 启用新的重映射配置 GPIO_PinRemapConfig(GPIO_Remap_SPI1, ENABLE); // 重新初始化SPI外设... }4.3 低功耗设计中的重映射考量在电池供电设备中重映射配置还需考虑功耗因素未使用的重映射功能应当禁用输入引脚应配置为模拟输入以降低功耗输出引脚在不使用时设为高阻态void LowPower_Remap_Config(void) { // 仅启用必要的外设时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); // 禁用所有未使用的重映射 GPIO_PinRemapConfig(GPIO_Remap_SPI1, DISABLE); GPIO_PinRemapConfig(GPIO_Remap_I2C1, DISABLE); // 配置未使用引脚为模拟输入 GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin GPIO_Pin_All; GPIO_InitStructure.GPIO_Mode GPIO_Mode_AIN; GPIO_Init(GPIOB, GPIO_InitStructure); }在实际项目中GPIO重映射不仅是解决问题的工具更是优化设计的利器。通过合理规划重映射策略可以使PCB布局更加简洁信号完整性更好同时提高引脚利用率。记得在项目文档中详细记录重映射配置这将为后续维护和升级节省大量时间。

相关文章:

从流水灯到串口通信:手把手教你玩转STM32F103的GPIO重映射(附避坑指南)

从流水灯到串口通信:手把手教你玩转STM32F103的GPIO重映射(附避坑指南) 当你开始尝试在STM32F103上实现更复杂的外设功能时,GPIO引脚资源紧张的问题往往会突然出现。想象一下这样的场景:你的核心板已经连接了多个传感器…...

Hermes Agent 系统架构设计

Hermes Agent 系统架构设计 参考: 官方架构文档 源码版本: b63229016 一、设计理念 原则实践进程隔离Gateway(平台集成)和 Dashboard(Web UI)完全独立进程,各自独立启停重启协议兼容API Server 对外暴露 OpenAI 兼容接…...

HEX框架:大语言模型推理效率的革命性提升

1. 项目背景与核心价值最近在自然语言处理领域,大语言模型的推理效率问题一直是个痛点。传统自回归模型逐个token生成的模式,虽然质量有保证,但速度实在让人着急。而并行解码方法虽然快,生成质量又常常不尽如人意。这个HEX框架的提…...

为什么92%的车载问答项目在V2X联调阶段失败?Dify多模态上下文理解的3个军工级设计模式

更多请点击: https://intelliparadigm.com 第一章:Dify车载智能问答系统开发的V2X联调困局与破局逻辑 在将Dify作为车载智能问答后端接入V2X(Vehicle-to-Everything)通信链路时,开发者普遍遭遇三大核心困局&#xff…...

基于MPC的智能车一体化预测、规划无人驾驶【附代码】

✨ 本团队擅长数据搜集与处理、建模仿真、程序设计、仿真代码、EI、SCI写作与指导,毕业论文、期刊论文经验交流。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流,查看文章底部二维码(1)基于车辆动力学包络的模型预测路径规划器设计&…...

TiDAR:融合扩散与自回归的混合生成模型解析

1. 项目概述:当扩散模型遇上自回归TiDAR这个命名很有意思——把"Time"和"DAR"(Diffusion AutoRegressive)组合在一起,暗示了这是一种融合时间步进与混合建模的创新架构。去年我在尝试用扩散模型生成文本时&am…...

CDN 安全加速:HTTPS 实现原理、部署模式与真机验证全攻略

在国内互联网高速发展的今天,用户对网络访问速度和安全性提出了更高的要求。传统的 HTTP 协议由于其明文传输的特性,容易遭受中间人攻击和数据篡改,已无法满足安全需求。HTTPS 协议通过 SSL/TLS 加密,可以有效地保护数据传输的安全…...

Vue CLI 结合 Webpack 与 Slot 实现组件高度定制与灵活扩展

在现代前端开发中,Vue.js 以其易用性和灵活性赢得了广泛的开发者喜爱。而 Vue CLI 作为 Vue.js 的官方脚手架,极大地简化了项目的初始化和配置流程。Webpack 作为模块打包工具,则在 Vue CLI 创建的项目中扮演着至关重要的角色,负责…...

启动MySQL8.0服务器,创建数据库的数据表,创建数据表里面的命令

一、启动服务,推荐用MySQL80登录 1、使用MySQL之前一定要打开”服务“,MySQL8.0,要启动运行 注意: 不启动MySQL8.0的服务cmd命令登录不进去mysql模式 2、在cmd登进入MySQL里面 输入mysql -uroot -p 再输入密码000000 如果出现上面的错误,记得,重新启动“服务”里面的…...

LLM代理在数据库查询中的实践与优化

1. 项目背景与核心价值最近在数据工程领域出现了一个有趣的现象:越来越多的团队开始尝试让大语言模型(LLM)扮演数据库查询助手的角色。这个趋势背后反映出一个明显的痛点——即使是最熟练的数据分析师,每天也要花费大量时间编写和…...

基于MCP协议的文档智能搜索工具:让AI助手精准查阅技术文档

1. 项目概述:一个为开发者打造的文档智能搜索工具最近在折腾一个项目,需要频繁查阅各种框架和库的官方文档,每次都得打开浏览器、输入网址、在导航栏里翻找,效率低得让人抓狂。相信很多开发者都有同感,尤其是在处理复杂…...

2025届必备的六大AI写作工具实测分析

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 伴随人工智能技术迅猛发展,论文AI工具成了学术写作范畴内的关键辅助方式。这类工…...

FPGA动态指令重构技术:LUTstruction架构解析与应用

1. 项目概述:FPGA动态指令重构的技术突破在处理器设计领域,一个长期存在的矛盾是:固定指令集架构的通用性与特定计算任务的高效性难以兼得。传统解决方案如SIMD向量指令扩展虽然能提供数百条专用指令,但在面对AI推理、信号处理等多…...

【大数据毕设推荐】Hadoop+Spark电影票房分析系统,Python+Django全栈实现 毕业设计 选题推荐 毕设选题 数据分析 机器学习 数据挖掘

✍✍计算机毕设指导师** ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡有什么问题可以…...

别再死记模板!用两种方法(DFS和树形DP)搞定树的直径,C++代码逐行解析

深入解析树的直径:从DFS到树形DP的C实战指南 树结构在算法竞赛和实际工程中无处不在,而树的直径作为衡量树规模的重要指标,其求解方法一直是面试和竞赛中的高频考点。很多学习者虽然能背诵模板代码,却对背后的原理一知半解。本文将…...

Q-Tuning:高效NLP模型微调的双粒度剪枝策略

1. 项目概述在自然语言处理领域,监督微调(Supervised Fine-Tuning)是提升预训练模型性能的关键步骤。然而,随着模型规模的不断扩大,传统微调方法面临着显存占用高、计算开销大等挑战。Q-Tuning作为一种创新的高效微调方…...

【光学】基于matlab菲涅尔光谱和角光谱ASPSAP模拟聚焦高斯光束传播【含Matlab源码 15406期】

💥💥💥💥💥💥💞💞💞💞💞💞💞💞欢迎来到海神之光博客之家💞💞💞&#x1f49…...

思维导图拆解项目范围 3 个真实落地案例

涵盖办公自动化项目、软件研发项目、行政制度落地项目,可直接复制到 XMind / 飞书思维导图 / 幕布 使用,拿来就能套用。通用拆解固定结构(所有案例统一模板)中心主题:项目名称四大主干固定不变:项目交付范围…...

hexo 上传到github命令报错

hexo 上传到github命令报错 D:\Hexo\MyBolg>hexo d INFO Validating config INFO Deploying: git INFO Clearing .deploy_git folder... INFO Copying files from public folder... INFO Copying files from extend dirs... On branch master nothing to commit, worki…...

终极免费文档下载指南:如何一键下载30+文库平台的文档

终极免费文档下载指南:如何一键下载30文库平台的文档 【免费下载链接】kill-doc 看到经常有小伙伴们需要下载一些免费文档,但是相关网站浏览体验不好各种广告,各种登录验证,需要很多步骤才能下载文档,该脚本就是为了解…...

李辉《曾国藩日记》笔记:天气太热,该上奏的事情都放着没起草

李辉《曾国藩日记》笔记:天气太热,该上奏的事情都放着没起草原文:同治元年六月十六日早饭后清理文件,见客一次。围棋一局。写沈幼丹信一、彭雪琴信一,阅《文献通考.中书省》篇。传见高列三、查宝信、廖宇庆三人。 午刻…...

Docker 27 + Ray + Triton联合调度配置终极方案:单节点并发吞吐突破128 req/s的关键11行配置

更多请点击: https://intelliparadigm.com 第一章:Docker 27 AI 容器智能调度配置 Docker 27 引入了原生 AI 驱动的容器调度引擎(AI-Scheduler),通过实时资源画像与模型推理负载特征自动优化 Pod 分配策略。该能力内置…...

你的视频文件太大?这款免费压缩神器5分钟搞定所有格式

你的视频文件太大?这款免费压缩神器5分钟搞定所有格式 【免费下载链接】compressO Convert any video/image into a tiny size. 100% free & open-source. Available for Mac, Windows & Linux. 项目地址: https://gitcode.com/gh_mirrors/co/compressO …...

如何快速提升Mac音频体验:免费系统级音频均衡器的终极指南

如何快速提升Mac音频体验:免费系统级音频均衡器的终极指南 【免费下载链接】eqMac macOS System-wide Audio Equalizer & Volume Mixer 🎧 项目地址: https://gitcode.com/gh_mirrors/eq/eqMac 你是否曾因MacBook音质平淡而烦恼?无…...

效率倍增:结合快马AI与OpenClow,自动化生成合规审批流应用代码

最近在优化公司内部审批系统时,发现传统开发模式下,光是搭建一个费用报销审批应用就要耗费大量时间在重复性编码上。于是尝试结合OpenClow框架和InsCode(快马)平台的AI能力,意外实现了效率的指数级提升。这里记录下具体实践过程,或…...

Win11开发环境救星:手把手教你用Fluent Terminal和WSL2搭建无缝Linux命令行

Win11开发环境终极优化:Fluent Terminal与WSL2深度整合指南 如果你是一名长期在Windows环境下工作的开发者,可能已经对原生CMD和PowerShell的局限性感到厌倦。但切换到Mac或Linux系统又面临成本或兼容性问题。本文将带你彻底改造Win11的命令行体验&#…...

CRMy:为AI销售代理构建记忆中枢,实现上下文驱动的智能销售

1. 项目概述:为AI销售代理构建一个“记忆中枢”如果你正在构建或使用AI销售代理,无论是基于Claude、GPT还是其他大模型,你肯定遇到过这个核心痛点:每次让AI去执行一个动作——比如发一封跟进邮件、推进一个商机阶段、或者预约一次…...

n8n-claw自定义节点:低代码自动化平台的数据抓取与集成方案

1. 项目概述:一个为n8n而生的“数据抓手”如果你正在用n8n构建自动化工作流,大概率遇到过这样的痛点:你需要从某个网站、API或者内部系统里抓取数据,但对方要么没有提供现成的接口,要么接口格式极其别扭,要…...

TVA系统在3C电子行业的技术落地

重磅预告:本专栏将独家连载新书《AI视觉技术:从入门到进阶》精华内容。本书是《AI视觉技术:从进阶到专家》的权威前导篇,特邀美国 TypeOne 公司首席科学家、斯坦福大学博士 Bohan 担任技术顾问。Bohan先生师从美国三院院士、“AI教…...

网盘直链下载助手终极指南:解锁免会员高速下载新体验

网盘直链下载助手终极指南:解锁免会员高速下载新体验 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云…...