STM32 引脚电平拉不低

1. 问题描述

今天调试STM32软件I2C的过程中遇到了一个问题:在采用 STM32 的 PB3 和 PB4 引脚做软件I2C通信时,发现 PB3 和 PB4 引脚的电平一直拉不低。反复检测了硬件连接是否短路,发现并没有硬件问题。后来查看了 STM32 芯片的原理图,发现PB3 和 PB4 引脚对应于JTAG调试接口,芯片默认开启JTAG调试功能。因此,程序中如果不禁用 JTAG 调试方法,那么这两个引脚将无法作为正常引脚来使用。STM32芯片原理图如下:

2. 解决方法

stm32f10x_gpio.h 中我们可以看到 STM32 的 JTAGSWD 使能地址:

#define GPIO_Remap_SWJ_NoJTRST      ((uint32_t)0x00300100)  /*!< Full SWJ Enabled (JTAG-DP + SW-DP) but without JTRST */
#define GPIO_Remap_SWJ_JTAGDisable  ((uint32_t)0x00300200)  /*!< JTAG-DP Disabled and SW-DP Enabled */
#define GPIO_Remap_SWJ_Disable      ((uint32_t)0x00300400)  /*!< Full SWJ Disabled (JTAG-DP + SW-DP) */

根据参考文献中提到的方法,为了使 PB3 和 PB4 能够作为正常引脚使用,用于软件 I2C 通信,我们需要禁用 JTAG调试方法。在整个程序的初始化函数中加上如下代码:

GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);     //禁用JTAG

这样一来,PB3 和 PB4 即可作为正常引脚使用。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值