一、项目创建
- 选择芯片
![在这里插入图片描述](https://img-blog.csdnimg.cn/30340d2db64848ddbcb211e005fd145a.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAeTAwMDgyNw==,size_20,color_FFFFFF,t_70,g_se,x_16) - SYS设置
![在这里插入图片描述](https://img-blog.csdnimg.cn/436b86cbe1304f6daaf4b99c554f8fc4.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAeTAwMDgyNw==,size_20,color_FFFFFF,t_70,g_se,x_16) - RCC设置
![在这里插入图片描述](https://img-blog.csdnimg.cn/e787dbc66d874ba391d86b1c1b8f05cd.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAeTAwMDgyNw==,size_20,color_FFFFFF,t_70,g_se,x_16) - 时钟配置,输入72后回车
![在这里插入图片描述](https://img-blog.csdnimg.cn/6ae4ec0993794edd9be922f8036ccece.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAeTAwMDgyNw==,size_20,color_FFFFFF,t_70,g_se,x_16) - USART1设置
将Mode设置为Asynchronous: ![在这里插入图片描述](https://img-blog.csdnimg.cn/5bf850c06f4e484d9867016d90acbeb9.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAeTAwMDgyNw==,size_20,color_FFFFFF,t_70,g_se,x_16) 使串口中断: ![在这里插入图片描述](https://img-blog.csdnimg.cn/650b6207ce9d4805a95f89b16912672a.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAeTAwMDgyNw==,size_20,color_FFFFFF,t_70,g_se,x_16) - 设置project,并打开项目
![在这里插入图片描述](https://img-blog.csdnimg.cn/b419d01eccf74fd699d16517ef085d90.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAeTAwMDgyNw==,size_20,color_FFFFFF,t_70,g_se,x_16) ![在这里插入图片描述](https://img-blog.csdnimg.cn/1a1462bc737b4465a84cbfc8458406bb.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAeTAwMDgyNw==,size_20,color_FFFFFF,t_70,g_se,x_16)
二、代码编写
#define LENGTH 10
![在这里插入图片描述](https://img-blog.csdnimg.cn/eea31b9692e44efe8033d0eccbfcda3b.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAeTAwMDgyNw==,size_20,color_FFFFFF,t_70,g_se,x_16)
uint8_t RxBuffer[LENGTH];
uint8_t Rxflag = 0;
![在这里插入图片描述](https://img-blog.csdnimg.cn/7bb0e32f69144fa985fa9a97f3ac4bda.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAeTAwMDgyNw==,size_20,color_FFFFFF,t_70,g_se,x_16)
HAL_UART_Receive_IT(&huart1, (uint8_t*)RxBuffer, LENGTH);
char data[] = "\nReveive Success\n";
![在这里插入图片描述](https://img-blog.csdnimg.cn/b7743760fe7b4ce8a03e42c4fc55fb18.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAeTAwMDgyNw==,size_20,color_FFFFFF,t_70,g_se,x_16)
if (Rxflag == 1){
Rxflag = 0;
HAL_UART_Transmit(&huart1, (uint8_t *)data, 18, 0xFFFF);
HAL_UART_Transmit_IT(&huart1, (uint8_t*)RxBuffer, LENGTH);
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/95e142942af543258a7111bda4867177.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAeTAwMDgyNw==,size_20,color_FFFFFF,t_70,g_se,x_16)
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart){
if (huart->Instance == USART1){
Rxflag = 1;
HAL_UART_Receive_IT(&huart1, (uint8_t*)&RxBuffer, LENGTH);
}
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/52ea1d96fb4741768022a64421a7e747.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAeTAwMDgyNw==,size_20,color_FFFFFF,t_70,g_se,x_16)
三、运行及结果
![在这里插入图片描述](https://img-blog.csdnimg.cn/ccf8c1c4a75e465b9a90e45008082d71.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAeTAwMDgyNw==,size_20,color_FFFFFF,t_70,g_se,x_16) ![在这里插入图片描述](https://img-blog.csdnimg.cn/e697b7dcb4ec4372a59a928f9c9669fb.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAeTAwMDgyNw==,size_20,color_FFFFFF,t_70,g_se,x_16) ![在这里插入图片描述](https://img-blog.csdnimg.cn/56e782f3fd5f4b71a7089d0f264aead9.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAeTAwMDgyNw==,size_20,color_FFFFFF,t_70,g_se,x_16)
四、总结
成功实现以中断方式实现串口通信
参考文章
STM32之中断方式实现串口通信
|