STM32 HAL 串口轮询模式发送与接受-用串口控制 LED

本例使用 STM32 HAL 库的串口轮询模式来控制 LED。工作方式是通过串口调试助手发送一个数据,然后 STM32 通过 HAL_UART_Receive(); 来接收这个数据,如果这个数据等于 1 则 LED点亮,如果这个数据等于 2 则 LED 熄灭。

串口配置图

代码

while (1)
{
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
    // 串口测试
    HAL_UART_Receive(&huart1, &tt, sizeof(tt), 0x00ff);

    if (tt == 0x31)
    {
        HAL_GPIO_WritePin(STATE_LED_GPIO_Port, STATE_LED_Pin, GPIO_PIN_SET);
        HAL_UART_Transmit(&huart1, (uint8_t *)"tt = 1 (LED->ON)\n", sizeof("tt = 1 (LED->ON)\n"), 0x00ff);
    }
    else if (tt == 0x32)
    {
        HAL_GPIO_WritePin(STATE_LED_GPIO_Port, STATE_LED_Pin, GPIO_PIN_RESET);
        HAL_UART_Transmit(&huart1, (uint8_t *)"tt = 2 (LED->OFF)\n", sizeof("tt = 2 (LED->OFF)\n"), 0x00ff);
    }
}

代码里边 tt == 0x31 与 tt == 0x32 是十六进制,这是因为我在调试助手中发送的是 ASCII 码。下面有张 ASCII 码的表可以开出对应的进制的值。tt 的类型为 uint8_t。

串口调试助手测试

感谢阅读,再见!

暂无评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注