c语言 - 为什么内部下拉电阻器不能在STM32F411CEU6(黑色药丸板)上工作?



我正在尝试配置STM32F411CEU6板载按钮(PA0),但无法将其配置为使用内部下拉电阻。我当前的设置允许它在使用上拉电阻时触发中断,但是当我将其更改为下拉电阻时,它不再工作。如果有人能指导我做错了什么,并能澄清我对过程的理解,我将不胜感激。我正在使用STM32标准外设库。我把我的GPIO初始化代码放在下面。

// enable clocks for the the KEY button (PA0) GPIO and 
//  the system configuration controller (SYSCFG) for GPIO interrupts
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
// initialize the GPIO pin, PA0, with an internal Pull-Down resistor
GPIO_InitTypeDef GPIO_Button_InitStructure = { 
.GPIO_Pin = GPIO_Pin_0,
.GPIO_Mode = GPIO_Mode_IN,
.GPIO_PuPd = GPIO_PuPd_DOWN         /* works with GPIO_PuPd_UP... */
};
GPIO_Init(GPIOA, &GPIO_Button_InitStructure);
/* ... Other interrupt enabling configuration stuff that is known to work here... */

黑色药片板上的用户按钮连接在PA0之间和接地. 用下拉配置配置PA0是没有意义的。在这种情况下,按下按钮不会影响PA0引脚的状态;在push前为逻辑0,在push期间和之后保持逻辑0。显然,硬件和软件无法检测到此推送。

编辑:

与旧的蓝色药丸板不同,黑色药丸板的原理图很难在互联网上找到。我在他们的官方Github上找到了它。但是,将按钮连接到GND使用内部或外部上拉电阻将uC引脚拉到逻辑1是一种常见的做法,所以我并不惊讶黑色药丸板遵循相同的传统。

最新更新