STM32 Nucleo上High/Low信号的定义

Definition of High/Low Signal on STM32 Nucleo

我刚开始学习如何使用 Nucleo 开发板编程,并决定做一个简单的任务。当我按下我的用户按钮时,我希望我的 LED 打开(在开始时关闭)。我有以下问题,我不太确定答案是什么。我想知道它是STM32特有的还是我不明白的微妙之处。

我是运行下面的代码。我的疑问是,目前我的 LED 灯一直亮着,只有当我按下用户按钮时它才会熄灭。当我按下按钮时,我的 PinState = 0 的值对我来说没有意义。我认为它应该是一个。

提前致谢

    #include "stm32f4xx.h"
    #include "stm32f4xx_nucleo.h"
    #include "system_stm32f4xx.h"
    #include "stm32f4xx_hal_gpio.h"
    #include "stm32f4xx_hal_rcc.h"

    GPIO_InitTypeDef GPIO_InitStructure; 

    int main(void) {

        HAL_Init(); 

        __GPIOA_CLK_ENABLE();
        GPIO_InitStructure.Pin   = GPIO_PIN_5;
        GPIO_InitStructure.Mode  = GPIO_MODE_OUTPUT_PP;    
        GPIO_InitStructure.Pull  = GPIO_PULLUP;
        GPIO_InitStructure.Speed = GPIO_SPEED_HIGH;  
        HAL_GPIO_Init(GPIOA, &GPIO_InitStructure);    

        __GPIOC_CLK_ENABLE();
        GPIO_InitStructure.Pin   = GPIO_PIN_13;
        GPIO_InitStructure.Mode  = GPIO_MODE_INPUT;
        GPIO_InitStructure.Pull  = GPIO_PULLDOWN;
        GPIO_InitStructure.Speed = GPIO_SPEED_FAST;
        HAL_GPIO_Init(GPIOC, &GPIO_InitStructure);
        int PinState;
       while (1)
       {
         PinState = HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_13);

         if(PinState == 1){
              HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5, GPIO_PIN_SET);
         }
         else {
             HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5, GPIO_PIN_RESET);
         }
      }
  }

如果你看一下 the documentation of the f401re 的第 64 页(见下图),你会看到 B1 按钮(蓝色按钮)有一个上拉电阻。对于程序员来说,这意味着只要按钮未按下,数字信号将始终为 1,而当按钮被按下时,数字信号将始终为 0

在电子学中,信号被称为 "active low",并用符号上方的 __ 条表示。