串口重定向和printf的使用

本文介绍了如何在GD32开发板的STM32串口1上使用printf函数打印信息,并通过串口助手发送不定长数据。通过USART1_IRQHandler中断处理接收数据,同时实现数据帧的解析,如使用strstr函数检查特定字符串模式并控制GPIO引脚。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用printf打印信息并在串口助手上显示

printf("Hello World!");内部调用的一个函数fputc,如果没有fputc这个函数,送信息的时候不是送到这个串口上,而是送到其他设备去了。

int fputc(int ch,FILE *f)
{
	uint8_t temp =ch;
	HAL_UART_Transmit(&huart1,&temp,1,10);
	return ch;
}

空闲中断和不定长数据接收实验

实验任务:使用GD32串口0(STM32串口1)接收PC端串口助手发送过来的不定长的数据。

void USART1_IRQHandler(void)
{
  /* USER CODE BEGIN USART1_IRQn 0 */
	uint16_t br = 0;
	uint16_t temp = USART1->SR;//状态寄存器的值
	if(temp & (1<<5))
	{
		if(rxlencnt < LEN)
		{
			rxbuf[rxlencnt] = USART1->DR&0x1ff;
			rxlencnt++;
		}
		else
		{
			rxlencnt = 0;
			memset(rxbuf,0,LEN);
		}
		USART1->SR &= ~(1<<5);//将状态寄存器的值清零
	}else
	if(temp & (1<<4))//检测到了空闲线路
	{
		flag=1;
		br = USART1->DR;
		USART1->SR &= ~(1<<4);
	}
  /* USER CODE END U
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值