使用外部按钮在 STM 发现板上切换 LED

Switch LED on STM discovery board with external button

我是微控制器编程新手。 我有 STM32F072 探索板,我想用它来使用外部按钮。我正在使用 Visual Studio 代码。 我将按钮连接到 3V 输出,另一侧连接到引脚 A10,其配置如下:

  /*Configure GPIO pin : PA10 */
  GPIO_InitStruct.Pin = GPIO_PIN_10;
  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

然后,我写了一个函数来读取按钮的状态

uint8_t read_button(void)
{
    uint8_t button_state = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_10);

    return button_state;
}

我在 main.c 的无限 while 循环中调用函数,我的想法很简单:

button_state = read_button();
if (button_state == 1)
{
  HAL_GPIO_WritePin(GPIOC, GPIO_PIN_6, GPIO_PIN_SET);
} 

(C6脚接红色LED)编译上传后,红色LED常亮。按钮什么都不做。 谁能给我提示我做错了什么? 非常感谢!

LED 常亮是正常的,您永远不会在代码中将其关闭。

button_state = read_button();
if (button_state == 1)
{
  HAL_GPIO_WritePin(GPIOC, GPIO_PIN_6, GPIO_PIN_SET);
} 
else
{
  HAL_GPIO_WritePin(GPIOC, GPIO_PIN_6, GPIO_PIN_RESET);
}

有了这个,当您按下按钮时,您的 LED 灯会亮起,否则会熄灭。