当前位置:主页 > 查看内容

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

发布时间:2021-07-30 00:00| 位朋友查看

简介:打开System Core点击SYS 打开可连续写入 选用外部时钟 打开串口一 开启异步输出模式 配置参数 无需更改参数 波特率默认为115200 若比赛规定传输速率可自行更改 查看原理图可知USART1本开发板采用PA10与PA9引脚 配置PA10 PA9引脚 打开中断 配置USART中断的抢……

打开System Core点击SYS
打开可连续写入
在这里插入图片描述

选用外部时钟

在这里插入图片描述

打开串口一
在这里插入图片描述

开启异步输出模式

在这里插入图片描述

配置参数
无需更改参数 波特率默认为115200 若比赛规定传输速率可自行更改
在这里插入图片描述

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

配置PA10 PA9引脚
在这里插入图片描述

打开中断
在这里插入图片描述

配置USART中断的抢占优先级和响应优先级
因为只有一个外部中断这里可以随意配置
在这里插入图片描述

系统时钟配置为80MHZ
在这里插入图片描述

按Enter键后
点击ok
在这里插入图片描述

时钟配置完成
工程配置如下
在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述

点击Open FolderOpen Project打开工程
在这里插入图片描述

编译后打开usart.c文件添加如下代码
stdio.h头文件包含了下面要用的函数fputch()
将代码添加在/* USER CODE BEGIN 0 /与/ USER CODE END 0 */之间避免重新生成工程后代码消失
类似接下来的代码都放在USER CODE BEGIN与USER CODE END之间
在这里插入图片描述

在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);}
在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

结果正确,串口配置到这里正常。
删除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)进行重定义 此函数可在 在这里插入图片描述
中的找到,在产生接收中断后会进入此函数。
在这里插入图片描述

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

;原文链接:https://blog.csdn.net/weixin_50691751/article/details/115775379
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!

推荐图文


随机推荐