关于STM32串口首字符出现乱码的问题

发布者:不羁少年最新更新时间:2017-10-30 来源: eefocus关键字:STM32  串口  首字符  乱码 手机看文章 扫描二维码
随时随地手机看文章

出现的问题:在使用sscom32串口调试助手,首字符出现乱码“tarttarttarttarttarttart”

原因:波特率过高

解决办法:将波特率设置的低一点,通常9600即可

现象:乱码为波特率较高;  正常显示波特率较低

关于STM32串口首字符出现乱码的问题

 

 

函数代码如下:

int main(void)

{

USART1_Init();

printf("Start");

}

 

 

 

#include "usart1.h"

 

void USART1_Init(void)

{

USART1_GPIO_Config();

USART1_Structure_Config();

USART_Cmd(USART1, ENABLE);

}

 

 

 

static void USART1_GPIO_Config(void)

{

GPIO_InitTypeDef GPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

  

  GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_9;

  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

GPIO_Init(GPIOA, &GPIO_InitStructure);

 

  

  GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_10;

//  GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

GPIO_Init(GPIOA, &GPIO_InitStructure);

}

 

 

static void USART1_Structure_Config(void)

{

 

USART_InitTypeDef USART_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 , ENABLE);

  

  USART_InitStructure.USART_BaudRate = 1200;

  USART_InitStructure.USART_WordLength = USART_WordLength_8b;

  USART_InitStructure.USART_StopBits = USART_StopBits_1;

  USART_InitStructure.USART_Parity = USART_Parity_No ;

  USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;

  USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;

USART_Init(USART1, &USART_InitStructure);

}

 

 

 

int fputc(int ch, FILE *f)

{

USART_ClearFlag(USART1,USART_FLAG_TC);// 清除串口1发送中断--否则第一个数不会发送

 

USART_SendData(USART1, (uint16_t) ch);

while(USART_GetFlagStatus(USART1, USART_FLAG_TC)!= SET);

return ch;

}


关键字:STM32  串口  首字符  乱码 引用地址:关于STM32串口首字符出现乱码的问题

上一篇:STM32——修改MCU步骤
下一篇:STM32 CAN应用-过滤器设置

推荐阅读最新更新时间:2024-03-16 15:42

STM32的复用时钟的开启和重映射功能
1、IO口的复用 最近在学习STM32,在BZ上一篇关于的串口通信文章里有这么一段代码: RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD |RCC_APB2Periph_AFIO,ENABLE); 当初是参考开发的例子写的,一直对GPIOD或上“RCC_APB2Periph_AFIO”这句话的意思没搞懂,通过这几天在网上查找资料和看手册,终于高清楚了,不敢独享,希望能对跟我一样的新手有所帮助吧o(∩_∩)o… STM32上有很多I/O口,也有很多的内置外设,像I2C,ADC,ISP,USART等 ,为了节省引出管脚,这些内置外设基本上是与I/O口共用管脚的,也就是I/O管脚的复用功能。但是S
[单片机]
意法半导体STM32微控制器加密算法库通过美国安全标准认证
中国,2016年7月19日 横跨多重电子应用领域、全球领先的半导体供应商意法半导体(STMicroelectronics,简称ST;纽约证券交易所代码:STM)的STM32微控制器加密算法库成功通过美国密码算法验证体系(US Cryptographic Algorithm Validation Program,CAVP)验证,有助于客户快速、经济地提高新产品的安全性。 作为STM32Cube软件包的扩展模块,X-CUBE-CRYPTOLIB算法库可直接用于基于STM32的注重安全的产品,包括物联网(IoT)硬件、销售终端设备、智能表计、门禁系统和指纹识别模块。CAVP认证免除了企业的算法验证负担,让那些想要获取美国联邦信息处理
[半导体设计/制造]
STM32串口发送数据第一个字节丢失问题
STM32串口发送必须先检测状态,否则第一个字节无法发出,发送完毕,必须检测发送状态是否完成,否则,发送不成功,使用stm32f10x调试串口通讯时,发现一个出错的现象,硬件复位重启之后,发送测试数据0x01 0x02 0x03 0x04..接收端收到的数据为:0x02 0x03 0x04,第一个数据丢失。换成发送别的数值的数据,如0x06 0x0ff,则接收到0x0ff,0x06丢失。错误依旧。 故障排除过程: 1、刚开始怀疑是接收端的错误,我是使用电脑串口,运行串口辅助调试工具接收,换成其他软件后,发现故障依旧,而且电脑软件一直是开启状态,不像和电脑软件有关。 2、使用单步调试,单步运行各个发送指令,都正常。能收到0x01
[单片机]
基于STM32和HAL库创建一个IIC设备
1 简述 使用面向对象的编程思想封装IIC驱动,将IIC的属性和操作封装成一个库,在需要创建一个IIC设备时只需要实例化一个IIC对象即可,本文是基于STM32和HAL库做进一步封装的。 底层驱动方法不重要,封装的思想很重要。在完成对IIC驱动的封装之后借助继承特性实现AT24C64存储器的驱动开发,仍使用面向对象的思想封装AT24C64驱动。 2 IIC驱动面向对象封装 iic.h头文件主要是类模板的定义,具体如下: //定义IIC类 typedef struct IIC_Type { //属性 GPIO_TypeDef *GPIOx_SCL; //GPIO_SCL所属的GPIO组(如:GPIOA)
[单片机]
STM32的GPIO介绍
STM32的GPIO介绍 GPIO是通用输入/输出端口的简称,是STM32可控制的引脚。GPIO的引脚与外部硬件设备连接,可实现与外部通讯、控制外部硬件或者采集外部硬件数据的功能。 STM32F103ZET6芯片为144脚芯片,包括7个通用目的的输入/输出口(GPIO)组,分别为GPIOA、GPIOB、GPIOC、GPIOD、GPIOE、GPIOF、GPIOG,同时每组GPIO口组有16个GPIO口。通常简略称为PAx、PBx、PCx、PDx、PEx、PFx、PGx,其中x为0-15。 STM32的大部分引脚除了当GPIO使用之外,还可以复用为外设功能引脚(比如串口),这部分在【STM32】STM32端口复用和重映射(AFIO
[单片机]
<font color='red'>STM32</font>的GPIO介绍
基于STM32的电池管理系统触摸屏设计
引 言 电动车一直以清洁环保而备受关注,加上能源危机加剧、油价不断上涨,电动车也越来越受到用户的青睐。电动车一般采用锂电池供电,由多个单体电池 串联成电池组作为动力电源。但由于各个串联单体电池特性不能保证完全一致,因此相同的电流下充电放电速度也会不同,如果不进行均衡干预,电池寿命会大大缩 短,因此需要实时监控各个单体电池的状态、总电压、总电流,根据状态适时进行电池充放电均衡,并且充放电均衡时,均衡状态也要实时进行检测,所以就有了电动车电池能量管理系统(EMS)。实践证明EMS可以有效延长电动车电池使用寿命,是电动车中十分重要的管理系统。 EMS主要包括:信息采集模块、充放电均衡模块、信息集中处理模块以及显示模块。图1为自主研发
[单片机]
基于<font color='red'>STM32</font>的电池管理系统触摸屏设计
STM32 DS18B20代码详解
DS18B20是最常用来学习某一个新的开发工具的,程序都是大同小异,主要是要注意时序中的延时要准确,指令要正确,这里记录一下! ------------------第一部分是--------ds18b20.h---------------------- #ifndef __DS18B20_H #define __DS18B20_H #include stm32f10x.h #include bsp_SysTick.h //精确延时函数头文件----参考http://blog.csdn.net/xuxuechen/article/details/40783209这个看一下 #define HIGH 1 #define
[单片机]
<font color='red'>STM32</font> DS18B20代码详解
VK32系列多总线UART串口扩展芯片的原理和应用
摘要 :UART以其简单可靠,抗干扰强,传输距离远,组网方便,被认为是嵌入式系统中进行串行数据传输的最佳方式。本文介绍了专为嵌入式系统设计的VK32系列新型多总线接口UART器件的原理及应用技术。 1 .嵌入式系统中串口扩展的需求:     而在嵌入式领域,由于UART具有操作简单,工作可靠,抗干扰强,传输距离远(组成485网络可以传输1200米以上),设计人员普遍认为UART是从CPU或微控制器向系统的其他部分传输数据的最佳方式,因此它们被大量地应用在工业、通信、和家电控制等嵌入式领域。通常MCU/CPU都会自带一个UART串口,但实际应用中一个串口往往不够用,需要进行UART串口扩展。     目前的大多数UART器件是
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved