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",并用符号上方的 __ 条表示。
我刚开始学习如何使用 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",并用符号上方的 __ 条表示。