蓝桥杯嵌入式CT117E-M4学习笔记08-串口通信实验


前言

本节我们学习开发板的串口通信。

一、实验原理

1. 串口通信原理

详见STM32串口通信详解

2.开发板原理图

在开发板上,STM32G431RBT6的串口TX和RX是通过DAP进行转发的,因此我们直接使用PA9 TX和PA10 RX即可与PC进行串口通信。

在这里插入图片描述在这里插入图片描述

二、配置步骤

1.创建工程,配置时钟、MDK5配置等。

2.配置PA9为USART1_TX,PA10为USART1_RX

在这里插入图片描述

3.配置串口1位异步通信模式

在这里插入图片描述

4.配置波特率、数据长度、校验位、停止位。

在这里插入图片描述

5.配置串口接收中断,然后点击生成keil5代码。

在这里插入图片描述

三、串口发送

1.直接使用HAL_USART_Transmit发送。

(1)引入stdio.h和string.h

#include "stdio.h"
#include "string.h"

在这里插入图片描述

(2)在main.c中定义相关代码

int counter = 0;
char str[40];
sprintf(str, "%04d:Hello,world.\r\n", counter);
HAL_UART_Transmit(&huart1,(unsigned char *)str, strlen(str), 50);
HAL_Delay(500);

if(++counter == 10000){
	counter = 0;
}

在这里插入图片描述

(3)实验现象,串口助手间隔0.5s接收到一条Hello,world.

在这里插入图片描述

2.使用重定向prtinf函数发送。

(1)在uart.c中添加重定向函数

#include "stdio.h"

int fputc(int ch, FILE *f)
{
  HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xffff);
  return ch;
}

在这里插入图片描述

(2)工具栏设置使用MicroLib库。

在这里插入图片描述

(3)更换使用printf函数发送串口数据。

printf("%04d:Hello,world.\r\n",counter);
HAL_Delay(500);
if(++counter == 10000){
	counter = 0;
}

在这里插入图片描述
(4)实验现象,串口助手间隔0.5s接收到一条Hello,world.

在这里插入图片描述

四、串口接收

1.定义缓存接收数组,开启串口接收中断。

char rxBuffer[1];

在这里插入图片描述

HAL_UART_Receive_IT(&huart1,(uint8_t *)rxBuffer,1);	//启动接收中断

在这里插入图片描述

2.重写串口接收中断回调函数,并将接受的数据再通过串口发送出去。

//串口接收回调函数
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart){
	//将数据返回回去
	HAL_UART_Transmit(&huart1,(uint8_t *)rxBuffer,1,0xffff);
	//重新启动接收中断
	HAL_UART_Receive_IT(&huart1,(uint8_t *)rxBuffer,1);
}

在这里插入图片描述

3.实验现象,串口助手发送出去数据后,立马接收到同样的数据。

在这里插入图片描述

总结

以上就是开发板的串口通信实验,如有错误,感谢指正。

鉴于官方开发板售价过高,本人自己制作了一款蓝桥杯嵌入式开发板,完全兼容官方的开发板,并且接下来会基于这款开发板进行学习和制作学习日志,到时候所拍实物图片会与官方开发板略有不同,如果有意向一起学习的同学也可以私聊我互相学习交流,ps: 找我低价买块开发板自己学习也是可以的 ~ 。

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

妍芯电子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值