首页 > 其他分享 >串口接受不了消息,乱码问题

串口接受不了消息,乱码问题

时间:2023-07-03 16:14:55浏览次数:35  
标签:不了 HAL uint8 len 乱码 Init 串口 byte buf

收不了消息(一)

发送消息,代码所写应该为接受后发送,但是并没有出现

int main(void)
{
  HAL_Init();
  SystemClock_Config();
  MX_GPIO_Init();
  MX_USART1_UART_Init();
    
  uint8_t byte;
  uint8_t len;
  uint8_t buf[32]="";
 
  while (1)
  {
			if(HAL_UART_Receive(&huart1,&byte,1,100)==HAL_OK)
		{
		   if(byte=='\n')
			 {
			 	HAL_UART_Transmit(&huart1,buf,len,100);
				 // printf("%s\n",buf);
				memset(buf,0,sizeof(buf));
				  len=0;
			 }
			 else
			 buf[len++]=byte;
		}

  }

}

image.png

解决方法


  uint8_t len;
  
int main(void)
{
      uint8_t byte;
    uint8_t buf[32]="";
  HAL_Init();
  SystemClock_Config();
  MX_GPIO_Init();
  MX_USART1_UART_Init();
  while (1)
  {
			if(HAL_UART_Receive(&huart1,&byte,1,100)==HAL_OK)
		{
		   if(byte=='\n')
			 {
			 	HAL_UART_Transmit(&huart1,buf,len,100);
				 // printf("%s\n",buf);
				memset(buf,0,sizeof(buf));
				  len=0;
			 }
			 else
			 buf[len++]=byte;
		}

  }

}

image.png解决了,将变量定义为全局,细节上,可以只把len变量放在全局就行了

收不了消息(二)


  uint8_t len;
  
int main(void)
{
      uint8_t byte;
    uint8_t buf[32]="";
    HAL_Delay(500);
  HAL_Init();
  SystemClock_Config();
  MX_GPIO_Init();
  MX_USART1_UART_Init();
  while (1)
  {
			if(HAL_UART_Receive(&huart1,&byte,1,100)==HAL_OK)
		{
		   if(byte=='\n')
			 {
			 	HAL_UART_Transmit(&huart1,buf,len,100);
				 // printf("%s\n",buf);
				memset(buf,0,sizeof(buf));
				  len=0;
			 }
			 else
			 buf[len++]=byte;
		}

  }

}

解决方案

去掉第8行的HAL_Delay(500); 就解决了

乱码问题

用重定向实现,发现是乱码

//重定向
int  fputc(int ch,FILE *F)
{
  while(!(USART1->ISR & 1<<7)){}
  USART1->TDR=ch;
	return 0;
}

printf("hello\n");

image.png

解决方案

image.png
勾选Use Micro LIB
image.png

标签:不了,HAL,uint8,len,乱码,Init,串口,byte,buf
From: https://www.cnblogs.com/moveddown/p/17523138.html

相关文章

  • 如果串口驱动有问题,怎么调
    有很多人问我,为什么不录串口驱动?实际上串口裸板很简单,但是串口驱动还是挺复杂的;另外基本上所有芯片的内核源码中基本上都会有串口驱动。所以我认为对于串口,我们只要会APP编程即可,不需要去写它的驱动程序。现在有2个问题:1.怎么写串口APP?2.如果串口驱动有问题,怎么调?第1个问题挺简单,百......
  • STM32/GD32串口接收不定长数据
    RYMCU嵌入式开源https://rymcu.com编者注:单片机串口接收不定长数据时,必须面对的一个问题为:怎么判断这一包数据接收完成了呢?常见的方法主要有以下两种:1.在接收数据时启动一个定时器,在指定时间间隔内没有接收到新数据,认为数据接收完成;2.在数据中加入帧......
  • 串口接收不定长数据的实现
    使用串口进行数据的收发在嵌入式产品中是很常用的一种通信方式,因为串口的简单使用,很容易就被选为产品中数据交互的通信手段。基于串口进行开发的功能有很多,比如同类/不同类产品之间的通信,RS485通信,RS232通信方式,实现串口命令行终端用于调试等等的。虽然应用的场景有所不同,但是都会......
  • Linux下的tty终端显示中文乱码解决方法
    1.下载字体fbterm  sudoapt-getinstallfbterm 2.完成后运行  sudofbterm 3.更改字体和字体大小  vi~/.fbtermrc    font-names=UbuntuMono    font-size=14   tty界面下是无法输入中文输入法  https://blog.csdn.net/maybe_frank/article......
  • 传奇架设登录器无法使用?解决乱码问题的方法在这里!
    近年来,传奇架设已经成为了一款备受欢迎的网络游戏。然而,有些玩家在使用传奇架设登录器的过程中可能会遇到一些问题,其中之一就是乱码问题。如果你正困扰于传奇架设登录器无法使用或乱码问题,那么你来对地方了!本文将为你详细介绍解决传奇架设登录器乱码问题的方法。首先,让我们先了解一......
  • zabbix5中文乱码 问题
    乱码界面如图:  乱码的原因在于zabbix默认的字体文件DejaVuSans.ttf不支持中文解决办法:1.用find命令找到字体所在位置#find/-nameDejaVuSans.ttffind的结果有三个,因为Zabbix最终是部署在Nginx上的,第三个的路径才是我们要找的路径  我查的路径是这个:  我修改的/user/share/......
  • python调用cmd显示中文乱码及调用cmd命令
    os.system('dir')解决方法加上os.system('chcp65001')_____________________________________________________________#!/usr/bin/python3#-*-coding:UTF-8-*-importosos.system('chcp65001')result=os.system(r"dir")ss="......
  • 恒创科技:轻量服务器外网访问不了的原因分析
    ​轻量服务器外网访问不了原因的分析。很多用户在选择轻量服务器的时候都没考虑,直接就购买了,导致在使用的时候遇见了很多问题,下面我们就简单的聊聊关于轻量服务器外网无法访问的原因。这里我们按照标题的意思可以解读为两种情况,一种是海外用户无法访问轻量服务器,一种是无......
  • 【雕爷学编程】Arduino动手做(142)---GY-25串口倾斜度模块
    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞......
  • 关于HTML页以Get方法向asp.net页面传值乱码的解决
    这个问题是最近偶然发现的,朋友说我个人做那个基于Lucene的搜索引擎,存在一个问题,就是只能搜索英文,不能搜索中文。我把代码仔细看了一下,没发现问题,但是在测试的时候确实存在这样的问题。我查看传值之后的参数,全部是乱码或者空格,立即觉得是传递过程中编码的问题。后来在web.config中添......