news 2026/9/2 5:34:09

嵌入式-MCU调试记录—GPIO复用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
嵌入式-MCU调试记录—GPIO复用

1、调试现象

这个问题是在调试一个产品的LED显示的功能,LED嘛无非就是配置好GPIO然后拉高或者拉低就行了,这个在嵌入式工作中也很常见想必各位大佬觉得,调个LED能有啥强度,,Emmmmm,一开始我也是这么想的,所以很快把驱动配置好了;然而程序烧录后居然没点亮,啪啪打脸,让我们先看看代码(本文代码基于stm32F103C8T6平台):

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); GPIO_InitTypeDef GPIO_InitStructrue; GPIO_InitStructrue.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructrue.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructrue.GPIO_Pin = GPIO_Pin_4; GPIO_Init(GPIOB,&GPIO_InitStructrue); while(1) { GPIO_ResetBits(GPIOB,GPIO_Pin_4); vTaskDelay(200); GPIO_SetBits(GPIOB,GPIO_Pin_4); vTaskDelay(200); }

这一看跟平常没有任何区别是吧;按道理LED应该上电就立马闪烁起来。然而一动不动,像是无声的嘲讽(具体调试过程这里就不赘述了,,,我们之间看问题所在)

2、问题原因

其实导致LED的无法点亮的原因很简单,那就是PB4这个引脚比较特殊,MCU上电复位后默认这个引脚就是上拉的(我们这里的硬件电路是低电平点亮);并且如上的代码配置PB4为推挽输出模式后还无法控制这个引脚,原因如下图所示:(图片取自MCU用户手册)

首先回答上文说的问题,PB4为什么特殊?

因为这个引脚默认配置为JTAG调试口的JNTRST脚(GPIO的复用功能);并如图所示上电复位后置于上拉模式;类似的还有图中所示的PA15、PA14和PA13这三个IO口。

3、解决问题

OK那么问题找到了,我们就开始解决问题,首先我们看用户手册的描述,如下图:

上图显示,如果需要使用PB4引脚,我们至少需要将SWJ_CFG这个寄存器配置为001;其他的010和100根据工程实际情况来进行配置。除此之外因为涉及GPIO复用功能,所以我们在使用特殊引脚的时候,需要将AFIO的时钟使能,这样才能正常使用GPIO的复用功能。

修改后的代码如下:

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO,ENABLE); GPIO_InitTypeDef GPIO_InitStructrue; GPIO_InitStructrue.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructrue.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructrue.GPIO_Pin = GPIO_Pin_4; GPIO_PinRemapConfig( GPIO_Remap_SWJ_NoJTRST, ENABLE); GPIO_Init(GPIOB,&GPIO_InitStructrue); while(1) { GPIO_ResetBits(GPIOB,GPIO_Pin_4); vTaskDelay(200); GPIO_SetBits(GPIOB,GPIO_Pin_4); vTaskDelay(200); }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 5:33:07

电商商品数据的清洗与格式转换:从采集结果到 Shopify CSV 的完整链路

采集到商品数据只是第一步。真正决定数据能不能用,在于后面的清洗和格式转换。本文从工程角度梳理电商商品数据从采集结果到可导入格式的完整处理链路,重点讲 Shopify 和 WooCommerce 两种主流格式的差异。## 一、采集数据的常见问题原始采集数据通常存在…

作者头像 李华
网站建设 2026/9/2 5:32:30

老板消毒柜XB710A0472深度解析:智能烘干与干燥收纳技术全揭秘

最近在给新家装修选厨电,发现一个很有意思的现象:很多朋友在选消毒柜时,特别容易陷入一个“参数陷阱”:只看容量、看品牌、看价格,却忽略了消毒柜最核心的“使用体验”和“长期维护成本”。结果就是,买回家…

作者头像 李华
网站建设 2026/9/2 5:31:52

宠物食品行业PLM服务商一半科技,打造配方饲喂试验数字化能力

宠物食品属于典型流程制造行业,产品以配方为核心驱动,研发链路覆盖原料评估、小试调试、理化检测、活体饲喂试验、中试放大到量产落地全流程。行业研发普遍面临试验数据分散、饲喂观测记录标准化不足、配方版本管控混乱、研产数据割裂等现实痛点&#xf…

作者头像 李华
网站建设 2026/9/2 5:30:57

工控配件回收指南:从PLC到变频器的价值评估与规范处理

最近在走访一些工厂和自动化设备维修车间时,发现一个普遍现象:很多企业仓库里都堆放着大量闲置、淘汰或替换下来的工控配件,比如PLC模块、触摸屏、变频器、旧配电柜等。这些配件往往被当作“电子垃圾”处理,要么按斤称重卖给废品站…

作者头像 李华
网站建设 2026/9/2 5:29:33

让Hermes记住项目规矩,我只输了一次/init

会用AI去写代码的人, 大概十有八成有过这般崩溃, 那便是, 当开启一个全新的会话之时, 首先要将项目自开头开始详尽地交代一通, 这其中包括技术栈究竟是何种情况, 目录又是如何进行组织安排的, 测试要怎样去运行, 代码风格有着哪些具体的约定。待交代完毕之后, 用于开展正事的to…

作者头像 李华
网站建设 2026/9/2 5:29:29

用Django开发股票市值管理系统:从建模到部署完整实践

简介:一份基于Django框架的股票市值管理系统源码,面向希望学习Python Web开发、了解证券账户与资产跟踪实战的开发者。系统围绕港股和美股的投资场景,涵盖交易记录、分红记录、新股信息等数据模型,通过模型-视图-模板-URL的完整链…

作者头像 李华