N32G45X无法配置PB3与PB4引脚问题(JTAG/SWD复用)

N32G45X无法配置PB3与PB4引脚问题(JTAG/SWD复用)

N32G45X无法配置PB3与PB4引脚的原因

国民技术N32G45X默认打开JTAG调试口占用了PB3与PB4引脚,如下:

(用户手册P134)
复位后,调试系统相关的引脚默认状态为启动 SWD-JTAG,JTAG 引脚被置于输入上拉或下拉模式:
● PA15:JTDI 置于输入上拉模式
● PA14:JTCK 置于输入下拉模式
● PA13:JTMS 置于输入上拉模式
● PB4:NJTRST 置于输入上拉模式
● PB3:JTD0 置于推挽输出无上下拉

(用户手册P137)
在这里插入图片描述
在这里插入图片描述

解决方法:使能SWD调试接口

由于JTAG调试口占用了5个IO,造成IO资源浪费,所以需将默认的JTAG调试更改为SWD调试,官方给出了库函数:

RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_AFIO,ENABLE);//使能AFIO复用功能时钟
GPIO_ConfigPinRemap(GPIO_RMP_SW_JTAG_DISABLE, ENABLE);//复用功能重映射

但该代码可能存在BUG不能无法关闭JTAG,所以改为如下函数
(这里参考了:3.国民技术N32G45X例程之-JTAG口复用GPIO

RCC->APB2PCLKEN|=1<<0;     //使能AFIO复用功能时钟       
AFIO->RMP_CFG&=0XF8FFFFFF; //清除AFIO_RMP_CFG的[26:24]
AFIO->RMP_CFG|=0X02000000; //关闭jtag,启用SWD([26:24]位设置为010

如果需要重映射为其他功能,只需改变最后一行即可

AFIO->RMP_CFG|=0X00000000; //启用jtag,启用SWD([26:24]位设置为000)
AFIO->RMP_CFG|=0X01000000; //启用jtag,启用SWD,但没有NJTRST([26:24]位设置为001)
AFIO->RMP_CFG|=0X04000000; //关闭jtag,关闭SWD([26:24]位设置为100)
### GD芯片 JTAG PB4 引脚复用为 SPI MISO 的配置方法 对于GD系列微控制器,要将JTAG引脚PB4复用为SPI接口的MISO功能,需通过设置相应的寄存器来完成引脚重映射和外设初始化操作[^1]。 #### 寄存器配置说明 为了实现这一目标,主要涉及以下几个方面的工作: - **AFIO (Alternate Function I/O)** 控制:用于指定GPIO端口的功能选择。 - **GPIO模式设定**:确保所选引脚处于输入状态并启用内部上拉电阻。 - **SPI模块使能参数配置**:激活SPI外设及其工作方式的选择。 具体来说,在程序启动阶段应该执行如下动作: ```c // 开启必要的时钟门控 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOB, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE); // 设置PB4作为备用功能输出(MOSI), 这里假设使用的是SPI2 GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; // 对于MISO应设为浮空输入 GPIO_Init(GPIOB, &GPIO📐⚗📐 📐⚗📐 📐⚗📐 InitiStructures); /* 配置 AFIO */ GPIO_WriteBit(GPIOA, GPIO_Pin_15, Bit_RESET); /* 清除PA15位 */ // 执行引脚重新映射命令 GPIO_PinRemapConfig(GPIO_Remap_SWJ_NoJTRST, ENABLE); // 关闭全速JTAG保留SWD调试接口 ``` 需要注意的是上述代码片段仅展示了部分关键步骤;实际应用中还需要根据具体的硬件平台以及开发环境调整相关细节。此外,由于不同型号之间可能存在差异,建议查阅官方数据手册获取最准确的信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值