3.蓝桥杯嵌入式-----UART

串口通信是指通过串行接口进行数据传输的一种通信方式。串口通信原理如下:

  1. 串口硬件连接:串口通信需要将数据线和控制线连接到两个设备之间的串行接口。通常,串口包括两个数据线(发送线和接收线)和多个控制线(如时钟线、使能线、数据位线、校验位线和停止位线)。

  2. 串口通信协议:在串口通信中,通常需要使用一种特定的通信协议,如RS-232、RS-485、UART等。这些协议规定了数据的传输格式、时钟速率、数据位数、校验方式等。

  3. 数据传输过程:在串口通信中,数据是以数据包的形式传输的。发送方首先将数据包按照通信协议的规定格式封装,并通过发送线发送给接收方。接收方则通过接收线接收数据包,并解析数据包中的数据。在传输过程中,发送方和接收方需要保持一致的通信协议和参数设置。

  4. 错误校验:为了保证数据的传输准确性,通常会在数据包中添加一些校验位,如奇偶校验位、循环冗余校验(CRC)等。接收方在接收到数据包后会验证校验位,如果校验错误,则表示数据包有误,需要重新传输。

  5. 通信控制:串口通信中,通常需要一种通信控制方式来确保发送方和接收方的数据传输同步。常见的通信控制方式有硬件握手和软件握手。硬件握手是通过控制线来进行数据传输的控制,而软件握手则是通过发送特定的控制字符来进行控制。

总的来说,串口通信通过串行接口进行数据传输,需要一种通信协议进行数据的封装和解析,同时通过校验和通信控制来保证数据的准确传输。

接下来,我们配置UART

选择USART1,设置mode 为Asynchronous(异步通信),Baud Rate(波特率)为9600(根据题目设置,我一般为9600.)

选择串口中断(给大家一个建议,如果程序中有多个中断,我们最好把串口中断优先级设置最高,避免误识别),接下来就生成文件。

介绍三个函数:

HAL_StatusTypeDef HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)接收字符串;
HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size, uint32_t Timeout)发送字符串

HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)打开接收的串口中断。

在UART.c文件添加下面代码重定义printf,这样发送信息可用printf

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

在main.c中:

/* USER CODE BEGIN 0 */
char UART_Res[15];
/* USER CODE END 0 */

/* USER CODE BEGIN 2 */
	HAL_UART_Receive_IT(&huart1, (uint8_t *)UART_Res, 15);//15是字符串长度
  /* USER CODE END 2 */


/* USER CODE BEGIN 4 */
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
	printf("%s",UART_Res);
	HAL_UART_Receive_IT(&huart1, (uint8_t *)UART_Res, 15);//20ÊǶ¨ÒåÊÕÈ¡µÄ×Ö·ûÊýÁ¿
}

/* USER CODE END 4 */

字符串长度根据题目而定,以第五届字符串为例

 

 

  • 21
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

沐静

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

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

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

打赏作者

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

抵扣说明:

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

余额充值