stm32f103串口接收openmv数据乱码

场景是:调试串口的时候,openmv发送过来的数据是一群乱码,通过强制转换为char类型之后发现是乱码,通过oled显示的时候就是一坨。

问题解决

最开始处出现乱码应该要解决的问题应该是波特兰应该保持一致。

后面找了蛮久发现是编码格式不同导致的问题。

opmv默认的数据发送编码格式应该是utf-8

 通过以下代码发送数据。

    uart.write(data)
    print(data)

但是stm32在接收数据之后转换为char类型数据的时候是和keil一样的编码格式解码的,所以在解码的时候,如果stm32不是utf-8的编码格式就很容易乱码。

keil的编码格式修改步骤

这样调整之后就可以接收到数据就好了。

stm32端的接收代码是

(设置一次接受8位数据)

int bz;
uint8_t redata[8];

void USART1_IRQHandler(void)
{
	if (USART_GetITStatus(USART1, USART_IT_RXNE) == SET)
	{
		
		Serial_RxData = USART_ReceiveData(USART1);
		Serial_RxFlag = 1;
		
		
		//正式数据
		
		//存入缓冲区
		redata[bz]=(char)Serial_RxData;
		bz++;
		
		if (bz == 8)
		{
			bz=0;
	    }
		USART_ClearITPendingBit(USART1, USART_IT_RXNE);
	}
		
}

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值