STM32L431使用GPIO按键发送hello,在串口调试助手上,按第二个按键LED翻转
时间: 2023-07-07 21:20:43 浏览: 124
首先,将按键连接到STM32L431的GPIO引脚上,LED连接到另一个GPIO引脚上。
然后,在STM32L431上编写程序,实现按键功能和LED翻转功能,具体步骤如下:
1. 初始化GPIO引脚
```c
#define LED_Pin GPIO_PIN_5
#define LED_GPIO_Port GPIOA
#define KEY_Pin GPIO_PIN_13
#define KEY_GPIO_Port GPIOC
void MX_GPIO_Init(void)
{
/* GPIO Ports Clock Enable */
__HAL_RCC_GPIOC_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE();
/*Configure GPIO pins : LED_Pin */
GPIO_InitTypeDef GPIO_InitStruct = {0};
GPIO_InitStruct.Pin = LED_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(LED_GPIO_Port, &GPIO_InitStruct);
/*Configure GPIO pin : KEY_Pin */
GPIO_InitStruct.Pin = KEY_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(KEY_GPIO_Port, &GPIO_InitStruct);
}
```
2. 在主函数中实现按键功能和LED翻转功能
```c
int main(void)
{
/* 初始化HAL库 */
HAL_Init();
/* 初始化GPIO */
MX_GPIO_Init();
/* 初始化串口 */
MX_USART1_UART_Init();
while (1)
{
/* 判断按键是否按下 */
if (HAL_GPIO_ReadPin(KEY_GPIO_Port, KEY_Pin) == GPIO_PIN_RESET)
{
/* 发送hello到串口调试助手 */
char hello[] = "hello";
HAL_UART_Transmit(&huart1, (uint8_t *)hello, strlen(hello), 0xFFFF);
/* 等待按键释放 */
while (HAL_GPIO_ReadPin(KEY_GPIO_Port, KEY_Pin) == GPIO_PIN_RESET)
;
/* 翻转LED状态 */
HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);
}
}
}
```
在上述代码中,我们使用了HAL库提供的GPIO读写函数和串口发送函数,当按键按下时,发送"hello"到串口调试助手,并翻转LED状态。
需要注意的是,根据具体的硬件连接情况,需要修改LED和KEY的引脚定义和初始化代码。另外,在使用HAL库之前,需要先初始化HAL库,包括时钟和中断等。
阅读全文