一、创建项目
创建一个STM32f103c8的STM32CubeMX项目
分别设置好SYS和RCC、USART1
时钟树设置72
使能串口终端
设置Project Manager后,生成代码
二、编写代码
main.c文件
在文件中定义缓冲区大小:
#define LENGTH 10 // 接收缓冲区大小
定义缓冲区和标志位:
uint8_t RxBuffer[LENGTH]; // 接收缓冲区
uint8_t Rxflag = 0; // 标志位,0为接收未完成,1为接收完成
在main()中定义接收成功信息:
HAL_UART_Receive_IT(&huart1, (uint8_t*)RxBuffer, LENGTH); // 使能接收中断
char data[] = "\nReveive Success\n"; // 接收成功信息
在while循环中发送成功信息和接收到的信息:
if (Rxflag == 1){ // 若数据接收完成
Rxflag = 0; // 清除标志位
HAL_UART_Transmit(&huart1, (uint8_t *)data, 18, 0xFFFF); // 接收成功信息
// 发送接收到的字符
HAL_UART_Transmit_IT(&huart1, (uint8_t*)RxBuffer, LENGTH);
}
在main.c中定义回调函数:
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart){
if (huart->Instance == USART1){
Rxflag = 1; // 设置标志位为1
HAL_UART_Receive_IT(&huart1, (uint8_t*)&RxBuffer, LENGTH); // 使能接收中断
}
}
三、运行结果
编译并烧录后,打开串口调试工具,输入helloworld并发送,接收成功。