You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Uno32开发板与Basic IO Shield按键控LED异常问题排查

解决Uno32按键2控制LED无响应的问题

嘿,我一眼就看出问题所在了——你的代码逻辑本身没问题,但忽略了Uno32开发板上一个容易踩坑的硬件复用细节:RF2、RF3、RF4这三个引脚默认被JTAG调试功能占用了,所以你直接把它们当作普通GPIO输入是无效的。

为什么按键1能用,按键2不行?

你之前用RF1(对应按键1)没问题,是因为RF1不属于JTAG复用引脚,它可以直接作为普通GPIO使用。但按键2对应的RF2是JTAG的TDI引脚,默认情况下,JTAG功能是启用的,这会锁定RF2-RF4的引脚状态,让它们完全不响应外部按键的输入——这就是为什么LED1常亮、按键完全没反应的原因。

修复代码

你只需要在初始化阶段禁用JTAG功能,释放这些引脚作为普通GPIO使用。具体要添加对DDPCON寄存器的配置:

#include <pic32mx.h>

int main(void) {
  // 禁用JTAG,释放RF2、RF3、RF4引脚为普通GPIO
  DDPCON |= 0x10; // 将DDPCON寄存器的第4位(JTAGDIS)置1
  
  TRISE = ~0xff; // 设置RE[7:0]为输出,RE[15:8]为输入
  TRISF |= 0x4;  // 设置RF[2]为输入
  while (1) {
    // 读取RF2的电平并映射到RE0(LED1)
    PORTE = ((PORTF >> 2) & 0x1);
  }
  return 0;
}

关键细节解释

  • DDPCON是PIC32的Debug Port Configuration Register,其中第4位(JTAGDIS)用于控制JTAG功能:当该位为1时,JTAG被禁用,RF2-RF4会被释放为普通GPIO引脚;默认值为0,JTAG启用,引脚被占用。
  • 如果你之后要用到按键3或4(对应RF3、RF4),同样需要先执行这步JTAG禁用操作。

内容的提问来源于stack exchange,提问作者K. Claesson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:47:23