STM32HAL库普通模式串口收发

一.简单了解

串口模式实现有三种
1.普通模式:在主函数中接收函数
2.中断模式:产生的不影响主程序运行
3. DMA模式:与主函数互不影响,独立运行
本文记录第一种普通模式。
学习目标是:实现普通串口的数据收发,发送数据时LED灯电平翻转。

二.步骤

步骤1:在STM32CUBEMX中创建好工程,我这里用的是小熊派的STM32L431RCT6开发板,需要配置的有LED灯,PC13为output。uart1为异步收发全双工,时钟为80Mhz。
步骤2:打开工程文件,在uart.c中,包含标准头文件以及实现串口的重定向

#include "stdio.h"
int fputc(int ch,FILE* f)
{
    
    
	uint8_t temp[1]={
    
    ch};
{
    
    
	HAL_UART_Transmit(&huart1,temp,1,2);
}
	return HAL_OK;
}

步骤3:在stm32l4xx_hal_uart.h中的1608行找到如下两个函数:

HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout);
HAL_StatusTypeDef HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout);

步骤4:在main.c中,实现功能函数
首先包含标准头文件#include "stdio.h"
宏定义串口一:#define UART1
main函数中:

uint8_t Rdata;//变量用于存放接收到的数据
printf("welcome to uart1 test!\r\n");
while(1)
{
    
    
	#ifdef UART1
		//如果接收OK,那么把接收到的数据发送到串口数据里面,并反转LED灯。
	  if(HAL_UART_Receive(&huart1,&Rdata,1,0)==HAL_OK)
		{
    
    
			HAL_GPIO_TogglePin(LED_GPIO_Port,LED_Pin);
			HAL_UART_Transmit(&huart1,&Rdata,1,0);
		}		
	#endif
}

三.实现结果

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/ABCisCOOL/article/details/113976648