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; /* 发送缓冲区大