一、串口配置
1.打开创建的stm32cubemx工程,选择connectivity→选择usart1→模式选择asynchronous异步模式,其他默认即可。
2.打开NVIC SETTINGS,使能串口中断
3.导出工程即可,串口通信有很多种模式和相关的参数,这里只介绍这一种,其他相关配置可以根据需求自行学习。也可以留言给小编。
二、通信程序
1.创建uart.c,uart.h两个文件,存放用户编写的串口程序,存放路径选择在工程下的hardware目录下。
2.uart.h添加如下代码
#ifndef __uart_H__
#define __uart_H__
#include "stm32f1xx_hal.h" //引入hal库
void uart_init(void); //定义串口初始化函数
void buff1_clear(void); //定义数据清空函数
#endif
3.uart.c添加如下代码
#include "uart.h"
#include "usart.h"
#include "string.h"
uint8_t rx1_data[1]; //数据接收存放数组
void buff1_clear(void) //数据清空函数
{
memset(rx1_data, 0x00, 1); //将接收数组内数据清空为0
}
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) //串口中断回调函数
{
if(huart == &huart1) //判断产生中断的串口号
{
HAL_UART_Transmit(&huart1, rx1_data, 1, 10); //将接收数据发送出去
buff1_clear(); //清空数据数组
HAL_UART_Receive_IT(&huart1, rx1_data, 1); //重新定义数据接收存放位置及长度
}
}
void uart_init(void) //串口初始化函数
{
HAL_UART_Receive_IT(&huart1, rx1_data, 1); //定义数据接收存放位置及长度
}
4.编译完成后下载到单片机,使用串口调试助手进行调试发送数据会被回传回来。
到此,串口发送接收已经完成,本程序使用的是中断接收,直接发送,后续将不断更新不同的收发方式,如有疑问可以给小编留言,程序编写方式均是个人习惯,读者可以根据个人习惯修改。