串口传输数据

1.串口初始化

void uart_init(u32 bound)
{	
	//UART 初始化设置
	UART1_Handler.Instance=USART1;					    //USART1
	UART1_Handler.Init.BaudRate=bound;				    //波特率
	UART1_Handler.Init.WordLength=UART_WORDLENGTH_8B;   //字长为8位数据格式
	UART1_Handler.Init.StopBits=UART_STOPBITS_1;	    //一个停止位
	UART1_Handler.Init.Parity=UART_PARITY_NONE;		    //无奇偶校验位
	UART1_Handler.Init.HwFlowCtl=UART_HWCONTROL_NONE;   //无硬件流控
	UART1_Handler.Init.Mode=UART_MODE_TX_RX;		    //收发模式
	HAL_UART_Init(&UART1_Handler);					    //HAL_UART_Init()会使能UART1
	__HAL_UART_DISABLE_IT(&UART1_Handler,UART_IT_TC);
	__HAL_UART_ENABLE_IT(&UART1_Handler,UART_IT_RXNE);
	USART1->CR3 |= 0X1000;//关闭上溢出检测
	}

2.判断串口号

void HAL_UART_MspInit(UART_HandleTypeDef *huart)
{
    //GPIO端口设置
	GPIO_InitTypeDef GPIO_Initure;
	if(huart->Instance==USART2)//如果是串口2,进行串口2 MSP初始化
	{
		__HAL_RCC_USART2_CLK_ENABLE();			//使能USART2时钟
	
		GPIO_Initure.Pin=GPIO_PIN_2;			//PA2
		GPIO_Initure.Mode=GPIO_MODE_AF_PP;		//复用推挽输出
		GPIO_Initure.Pull=GPIO_PULLUP;			//上拉
		GPIO_Initure.Speed=GPIO_SPEED_FREQ_HIGH;//高速
		GPIO_Initure.Alternate=GPIO_AF7_USART2;	//复用为USART2
		HAL_GPIO_Init(GPIOA,&GPIO_Initure);	   	//初始化PA9

		GPIO_Initure.Pin=GPIO_PIN_3;			//PA3
		HAL_GPIO_Init(GPIOA,&GPIO_Initure);	   	//初始化PA10
		HAL_NVIC_EnableIRQ(USART2_IRQn);				//使能USART1中断通道
		HAL_NVIC_SetPriority(USART2_IRQn,3,4);			//抢占优先级3,子优先级4
	}
}

3.识别帧头帧尾方式接受数据

void USART2_IRQHandler(void)                	
{
	u8 a;
	USART2->RQR |= 0x08; 
	USART2->ICR |= 0x08;
	dataBuffer[g_cU2Number] = USART2->RDR;//读取接收到的数据

	if(dataBuffer[0]==0xFE)
	{
		g_cU2Number++;
		if(	g_cU2Number==10&&dataBuffer[9]==0xAA)
		{
			g_cU2Number=0;
			for(a=0;a<10;a++)
			{
				g_cU2Data[a]=dataBuffer[a];
			}
			g_cU2flag = 1;//串口接收到了一帧数据
		}	
	}
	else
		g_cU2Number=0; 
	USART2->ICR |= 0X08;//清除上溢出标志位	
   
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

种蘑菇的金克斯

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

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

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

打赏作者

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

抵扣说明:

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

余额充值