嵌入式蓝桥杯G431RBT6 串口配置及使用方法cube MX

打开System Core点击SYS
打开可连续写入
嵌入式蓝桥杯G431RBT6 串口配置及使用方法cube MX_第1张图片

选用外部时钟

嵌入式蓝桥杯G431RBT6 串口配置及使用方法cube MX_第2张图片

打开串口一
嵌入式蓝桥杯G431RBT6 串口配置及使用方法cube MX_第3张图片

开启异步输出模式

嵌入式蓝桥杯G431RBT6 串口配置及使用方法cube MX_第4张图片

配置参数
无需更改参数 波特率默认为115200 若比赛规定传输速率可自行更改
嵌入式蓝桥杯G431RBT6 串口配置及使用方法cube MX_第5张图片

查看原理图可知USART1本开发板采用PA10与PA9引脚
在这里插入图片描述

配置PA10 PA9引脚
嵌入式蓝桥杯G431RBT6 串口配置及使用方法cube MX_第6张图片

打开中断
嵌入式蓝桥杯G431RBT6 串口配置及使用方法cube MX_第7张图片

配置USART中断的抢占优先级和响应优先级
因为只有一个外部中断这里可以随意配置
嵌入式蓝桥杯G431RBT6 串口配置及使用方法cube MX_第8张图片

系统时钟配置为80MHZ
嵌入式蓝桥杯G431RBT6 串口配置及使用方法cube MX_第9张图片

按Enter键后
点击ok
嵌入式蓝桥杯G431RBT6 串口配置及使用方法cube MX_第10张图片

时钟配置完成
工程配置如下
嵌入式蓝桥杯G431RBT6 串口配置及使用方法cube MX_第11张图片
嵌入式蓝桥杯G431RBT6 串口配置及使用方法cube MX_第12张图片

打开文件
点击GENERATE CODE生成代码

嵌入式蓝桥杯G431RBT6 串口配置及使用方法cube MX_第13张图片

点击Open FolderOpen Project打开工程
嵌入式蓝桥杯G431RBT6 串口配置及使用方法cube MX_第14张图片

编译后打开usart.c文件添加如下代码
stdio.h头文件包含了下面要用的函数fputch()
将代码添加在/* USER CODE BEGIN 0 /与/ USER CODE END 0 */之间避免重新生成工程后代码消失
类似接下来的代码都放在USER CODE BEGIN与USER CODE END之间
嵌入式蓝桥杯G431RBT6 串口配置及使用方法cube MX_第15张图片

在usart.c文件中

重定义fputch()函数
其中函数HAL_UART_Transmit()的作用为传输字符,第一个参数为配置usart1的UART_HandleTypeDef结构体,第二个参数为发送字符所在地址,第三个参数为发送字节数,第四个参数为最多等待时间。
int fputc(int ch, FILE *f)
{ HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 1000);
return (ch);}
嵌入式蓝桥杯G431RBT6 串口配置及使用方法cube MX_第16张图片

在main.c文件中添加如下代码来测试串口功能
其中HAL_Delay()函数是基数为0.001秒的延迟函数,这里输入100进行0.1秒的延迟,避免串口接受软件异常

嵌入式蓝桥杯G431RBT6 串口配置及使用方法cube MX_第17张图片

点击debug后配置所用调试器为CMSIS-DAP Debugger

嵌入式蓝桥杯G431RBT6 串口配置及使用方法cube MX_第18张图片

测试结果如下
在这里插入图片描述

结果正确,串口配置到这里正常。
删除while中的代码在这里插入图片描述
(这两行代码是为了便于测试串口程序是否正常),添加如下代码
uint8_t Rxbuf[6];
uint8_t Txbuf[]=“发送正常\r\n”;
在这里插入图片描述

在main.c中添加两个全局变量数组
Rxbuf[ ]数组用于存放所接收的代码, Txbuf[ ]用于存放发送字符因函数HAL_UART_Receive_IT()与HAL_UART_Transmit_IT()所接受参数类型为uint8_t及无符号字符型变量类型所以Rxbuf[[ ] Txbuf[ ]变量类型为uint8_t。
HAL_UART_Receive_IT()函数第一个参量为串口UART_HandleTypeDef结构体,第二个参数为获取字符存放地址,第三个参数为获取size个字符后产生中断。HAL_UART_Transmit_IT()同理。
其中Rxbuf[x ]数组长度为所需接受字符个数长度+2;例如
欲输入“1234”后产生中断,则x等于6.
在main.c文件中添加如下代码
HAL_UART_Receive_IT(&huart1, Rxbuf, sizeof(Rxbuf));//开启接收中断
HAL_UART_Transmit_IT(&huart1,Txbuf,sizeof(Txbuf));
在这里插入图片描述

对弱定义函数(可有用户重新定义的函数类型)
HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)进行重定义 此函数可在 在这里插入图片描述
中的找到,在产生接收中断后会进入此函数。
嵌入式蓝桥杯G431RBT6 串口配置及使用方法cube MX_第19张图片

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
HAL_UART_Transmit_IT(&huart1, Rxbuf, sizeof(Rxbuf));//发送所接受的值
HAL_UART_Receive_IT(&huart1, Rxbuf, sizeof(Rxbuf));//再次开启接收中断
}、
测试结果如下
,发送两次1234后的结果正确
在这里插入图片描述

你可能感兴趣的:(嵌入式)