### 3.1:串口收发
1:硬件设计

单片机引脚为PA2和PA3。对应STLINK虚拟串口。

2:软件设计
先配置cubemx的引脚状态:

自动化生成代码之后,进行串口重定义:
int fputc(int ch, FILE *f)
{
/* e.g. write a character to the USART2 and Loop until the end of transmission */
HAL_UART_Transmit(&huart2, (uint8_t *)&ch, 1, 0xFFFF);
return ch;
}
keil选项设置,使能Use Micro LIB。

编写测试程序,每隔500ms打印一次hello world。
while (1)
{
printf("hello world\n\r");
HAL_Delay(500);
}
打开串口调试助手,查看是否打印输出。

接着进行串口接收设置;

编写串口接收回调函数:
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
UNUSED(huart);
if(huart->Instance == USART2)
{
switch(rx_data[0])
{
case 0x30:
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET);
printf("led_off\r\n");
break;
case 0x31:
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET);
printf("led_on\r\n");
break;
default:
break;
}
HAL_UART_Receive_IT(&huart2, (uint8_t*)rx_data, 1);
}
}
主要思路如下:
具体实现结果,如下视频所示:
串口收发(待转码)