STM32 串口接收和发送数据的方法

总结:1 :STM32 接收和发送的数据都是字符串 .

           2: 串口的每一次接收数据都会产生一次中断

           3: 接收数据是否完成的标志是判断 末位的'0x0d'和'0x0a'

发送的模板:

		USART_SendData(USART1, '2');  
        while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束
  		printf("\r\你发送的消息为:\r\n");

接收的模板:

		if(USART_RX_STA&0x8000)   // 判断标志位,已经有数据接收到,可以读取出来。
		{				 	   
			printf("USART_RX_STA02=%d\r\n",USART_RX_STA);
			len=USART_RX_STA&0x3fff;//接收的数据长度
			printf("len=%d\r\n",len);
			
			printf("\r\n你发送的消息:\r\n");
			if(USART_RX_BUF[0]=='e')  LED1=!LED1;  //判断接收的消息
			
			for(t=0;t<len;t++)
			{
				//USART_SendData(USART1, USART_RX_BUF[t]);         //向串口1 发送数据
				USART_SendData(USART1, 5465);   
				while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//表示发送完成
			}
			printf("\r\n\r\n");//换行
			USART_RX_STA=0;
		}

参考:STM32F407串口

STM32 串口接收不定长数据 STM32 USART空闲检测中断

  • 3
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32上进行串口通信,可以通过以下步骤来实现串口接收发送: 1. 配置串口工作模式 在使用串口通信之前,需要先配置串口的工作模式。可以使用STM32的CubeMX软件进行配置,或者手动编写代码进行配置。配置包括波特率、数据位、停止位、校验位等参数。 2. 发送数据 使用HAL库的函数可以轻松地发送数据。例如: ``` uint8_t txData[] = "Hello world!"; // 要发送的数据 HAL_UART_Transmit(&huart1, txData, sizeof(txData), HAL_MAX_DELAY); // 发送数据 ``` 在上面的例子中,使用HAL_UART_Transmit函数发送数据,第一个参数是串口句柄,第二个参数是要发送的数据,第三个参数是数据长度,第四个参数是最大等待时间。 3. 接收数据 使用HAL库的函数可以轻松地接收数据。例如: ``` uint8_t rxData[10]; // 接收数据的缓冲区 HAL_UART_Receive(&huart1, rxData, sizeof(rxData), HAL_MAX_DELAY); // 接收数据 ``` 在上面的例子中,使用HAL_UART_Receive函数接收数据,第一个参数是串口句柄,第二个参数是接收数据的缓冲区,第三个参数是数据长度,第四个参数是最大等待时间。 4. 中断接收数据 使用HAL库的函数可以在中断中接收数据。例如: ``` void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) // USART接收中断回调函数 { if(huart -> Instance == USART1) // 判断是否为USART1接收中断 { uint8_t rxData = huart -> Instance -> DR; // 读取接收到的数据 // 处理接收到的数据 // ... HAL_UART_Receive_IT(&huart1, &rxData, 1); // 重新启动接收中断 } } ``` 在上面的例子中,使用HAL_UART_Receive_IT函数在中断中接收数据,第一个参数是串口句柄,第二个参数是接收数据的缓冲区,第三个参数是数据长度。 通过以上步骤,就可以在STM32上实现串口接收发送了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值