使用外部按钮在 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 灯会亮起,否则会熄灭。
我是微控制器编程新手。 我有 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 灯会亮起,否则会熄灭。