STM32F4 USART1 TX RX FIFO

本文详细介绍了STM32F4系列微控制器中USART1的TX和RX FIFO功能,包括其工作原理、配置方法以及如何优化串口通信效率。通过对FIFO的理解和设置,可以实现高效稳定的数据传输。
摘要由CSDN通过智能技术生成

USART1 TX RX FIFO

/*
*********************************************************************************************************
*	                                  
*	模块名称 : 串口驱动模块    
*	文件名称 : bsp_uart.c
*	版    本 : V1.0
*	说    明 : 实现printf和scanf函数重定向到串口1,即支持printf信息到USART1
*				实现重定向,只需要添加2个函数:
*				int fputc(int ch, FILE *f);
*				int fgetc(FILE *f);
*				对于KEIL MDK编译器,编译选项中需要在MicorLib前面打钩,否则不会有数据打印到USART1。
*	修改记录 :
* 日    期 : 2018-03-12
* 版 本 库 : ST固件库V1.0.2版本。
*
*********************************************************************************************************
*/
//#include "stm32f4xx.h"
#include "bsp\debug_usart\bsp_debug_uart.h"
#include "bsp.h"
#include <stdio.h>
#define  debug_uart_tx_buf_size  1*1024
#define  debug_uart_rx_buf_size  1*1024
static uint8_t g_TxBuf[debug_uart_tx_buf_size];  //发送缓冲区
static uint8_t g_RxBuf[debug_uart_rx_buf_size];  //接受缓冲区
/* 串口设备结构体 */
typedef struct
{
  USART_TypeDef *uart;		/* STM32内部串口设备指针*/
	uint8_t *pTxBuf;			  /* 发送缓冲区 */
	uint8_t *pRxBuf;			 /* 接收缓冲区 */
	uint16_t usTxBufSize;		/* 发送缓冲区大小 */
	uint16_t usRxBufSize;		/* 接收缓冲区大小 */
	
	uint16_t usTxWrite;			/* 发送缓冲区写指针 */
	uint16_t usTxRead;			/* 发送缓冲区读指针 */
	uint16_t usTxCount;			/* 等待发送的数据个数 */

	uint16_t usRxWrite;			/* 接收缓冲区写指针 */
	uint16_t usRxRead;			/* 接收缓冲区读指针 */
	uint16_t usRxCount;			/* 还未读取的新数据个数 */

	void (*SendBefor)(void); 	/* 开始发送之前的回调函数指针(主要用于RS485切换到发送模式) */
	void (*SendOver)(void); 	/* 发送完毕的回调函数指针(主要用于RS485将发送模式切换为接收模式) */
	void (*ReciveNew)(void);	/* 串口收到数据的回调函数指针 */
}UART_T;

static UART_T g_tDebugUart;

static void UartVarInit(void)
{
	g_tDebugUart.uart=USART1;
	g_tDebugUart.pTxBuf = g_TxBuf;												/* 发送缓冲区指针 */
	g_tDebugUart.pRxBuf = g_RxBuf;												/* 接收缓冲区指针 */
	g_tDebugUart.usTxBufSize = debug_uart_tx_buf_size;		/* 发送缓冲区大
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值