Embedded STM32核子上高/低信号的定义

Embedded STM32核子上高/低信号的定义,embedded,stm32,nucleo,Embedded,Stm32,Nucleo,我刚开始学习如何使用核子板编程,并决定做一个简单的任务。当我按下我的用户按钮时,我希望我的LED灯打开(开始时关闭)。我有以下问题,我不太确定答案是什么。我想知道这是STM32特有的还是我不理解的微妙之处 我正在运行以下代码。我的疑问是,目前我的LED总是亮着,只有当我按下用户按钮时才会熄灭。当我按下按钮时,PinState的值=0,这对我来说没有意义。我想应该是一个 先谢谢你 #include "stm32f4xx.h" #include "stm32f4xx_nucleo.h

我刚开始学习如何使用核子板编程,并决定做一个简单的任务。当我按下我的用户按钮时,我希望我的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);
         }
      }
  }

如果您查看第64页(见下图),您可以看到B1按钮(蓝色按钮)有一个上拉电阻器。对于程序员来说,这意味着只要未按下按钮,数字信号将始终为
1
,按下按钮时,数字信号始终为
0


在电子技术中,信号被称为“低电平有效”,并用符号上方的一条表示。

哪个核子板?没有理由假设引脚状态为0表示led熄灭,1表示led点亮。你得看看示意图。部件(I/O焊盘)的下沉量往往大于其来源量。因此,请查看其中一块板。PA5上的高电平将点亮led。卑鄙的人。PC13引脚开关常开,按下时将引脚拉低,因此当按下PC13时为0,并且您的代码表示在这种情况下关闭led。将输出设置为1通常意味着VCC或VDD电压(或非常接近它)应用于引脚,0意味着GND(或非常接近它)被应用。对于改变事物的推挽式、开放式排水管等,除非有上拉,否则它只能吸收而不是源。若要使输出下沉,请将输出设置为0以使其浮动,如果您有上拉,则将其设置为1,然后它尝试上拉或下拉或尝试下拉,与外部上拉或下拉类似。1与电源电压和0与接地之间的连接不必记录(由每个供应商提供每个零件)但这是假设的。我用了一个核子F446RE,我想是这样的,但感觉很奇怪,这就是我问这个问题的原因。我对这些板/基础设施还不是很熟悉。我会看一个示意图,但它们不像Arduino数据表那样可用。