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