一.上位机和串口间的数据交互处理流程。

1.头文件的中的使用的变量定义:

//***********************************串口相关***********************************************//
enum uart_statu_type
{
   
    UART_POWER_UP,//上电状态
    UART_STANDBY,   //初始化串口状态
    UART_RUNNING,  //初始化完成后的正常状态
    UART_RECEIVING,//正在接收的状态
    UART_RECEIVED,   //字节间超时,则是接收完成状态
    UART_TRANSMITTING,//正在发送状态
};
extern u8  USART_RX_BUF[USART_REC_LEN]; //接收缓冲,最大USART_REC_LEN个字节.末字节为换行符 
extern u16 USART_RX_STA;         		//接收状态标记	

#define RXBUFFERSIZE   1 //缓存大小
BPLC_USART_EXT u8 aRxBuffer[RXBUFFERSIZE];//HAL库USART接收Buffer
#define UART2_BUFF_SIZE         1100//字节最长
#define UART2_TX_BUFF_SIZE         100//字节最长 100字节

extern UART_HandleTypeDef UART2_Handler; //UART句柄
extern unsigned char uart2_tx_buff[UART2_TX_BUFF_SIZE];//写数据
extern enum uart_tx_statu_type uart2_tx_statu;//写串口的相关状态
extern unsigned char need_re_tx;//写标志
extern unsigned short uart2_tx_buff_len;//写长度

extern unsigned char uart2_buff[UART2_BUFF_SIZE];//缓存数据
extern enum uart_statu_type uart2_statu ;//读状态相关
extern unsigned short uart2_buff_index;//标志位
extern unsigned short uart2_buff_len;//读长度

2.功能函数的定义


/*******************************************************************************
函   数  名	:  data_uart_init
功能描述 :	 数据串口的初始化
入 		   参:   无
出 		   参:   无
*******************************************************************************/
void data_uart2_init(void)
{
   
	printf("restart uart2\n\r");
	need_re_tx = 0;
	uart2_tx_buff_len = 0;
	memset(uart2_buff, 0x00, sizeof(uart2_buff));
	memset(uart2_tx_buff, 0x00, sizeof(uart2_tx_buff));
	Uart2_Init(115200);
}
/*******************************************************************************
函   数  名  :  Uart2_Init
功能描述 :   数据串口的初始化
入            参:   无
出            参:   无
*******************************************************************************/
void Uart2_Init(u32 bound)
{
   
	UART2_Handler.Instance = USART2;
	UART2_Handler.Init.BaudRate = bound;
	UART2_Handler.Init.WordLength = UART_WORDLENGTH_8B;
	UART2_Handler.Init.StopBits = UART_STOPBITS_1;
	UART2_Handler.Init.Parity = UART_PARITY_NONE;
	UART2_Handler.Init.HwFlowCtl = UART_HWCONTROL_NONE;
	UART2_Handler.Init.Mode = UART_MODE_TX_RX;
	HAL_UART_Init(&UART2_Handler);
	if (HAL_UART_Init(&UART2_Handler) != HAL_OK)
	{
   
		Error_Handler();
	}
	start_uart2();
}

/*******************************************************************************
函   数  名  :  start_uart
功能描述 :   
入            参:   
出            参:  
*******************************************************************************/
void start_uart2(void)
{
   
	uart2_statu = UART_RUNNING;
	uart2_tx_statu = UART_TX_RUNNING;
	Stop_Soft_Timer(TIMER_UART2_BYTE_TIMEOUT);
	uart2_buff_index = 0;
	uart2_buff_len = 0;
	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值