19866|19

16

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

初学STM32的串口实验,在接收时出现以下的乱码?是什么原因呢 [复制链接]

 

这是我接收到得乱码截图,请各位大侠指教下是什么原因呢?谢谢了啊

附上程序:

#include "stm32f10x.h"
GPIO_InitTypeDef GPIO_InitStructure; 

USART_InitTypeDef USART_InitStructure; 

unsigned char TxBuf1[100] = "神州三号,串口测试程序";
unsigned char i;

void gpio_init()   

{
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);  
    GPIO_StructInit(&GPIO_InitStructure);
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_Init(GPIOA , &GPIO_InitStructure);
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    GPIO_Init(GPIOA, &GPIO_InitStructure); 
}
void usart_init()   

{
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
 USART_StructInit(&USART_InitStructure);
    USART_InitStructure.USART_BaudRate = 115200;    //设置波特率为115200//
    USART_InitStructure.USART_WordLength = USART_WordLength_8b;   //设置数据位为8位//
    USART_InitStructure.USART_StopBits = USART_StopBits_1;     //设置停止位为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);  //对串口1进行初始化
 USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);  //接收的中断使能打开:
    USART_ITConfig(USART1, USART_IT_TXE, ENABLE);  //发送的中断使能打开
 USART_Cmd(USART1 , ENABLE);

}

 

int main()   

   usart_init();
   gpio_init();
  for( i = 0; TxBuf1 != '\0'; i++) {
USART_SendData(USART1 , TxBuf1);
while(USART_GetFlagStatus(USART1, USART_FLAG_TC)==RESET);
}
 
}

此帖出自stm32/stm8论坛

最新回复

zfp
  详情 回复 发表于 2018-3-3 21:57
点赞 关注
 

回复
举报

16

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
求解答,自己顶起自己
此帖出自stm32/stm8论坛
 
 

回复

25

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
同问,我也发的乱码,发0x24结果PC收到的是0xf9
此帖出自stm32/stm8论坛
 
 

回复

272

帖子

0

TA的资源

纯净的硅(初级)

4
 
这种情况 最有可能就是波特率的问题
此帖出自stm32/stm8论坛

点评

那波特率大概要怎么设置呢?谢谢  详情 回复 发表于 2012-6-25 14:15
 
 
 

回复

16

帖子

0

TA的资源

一粒金砂(中级)

5
 

回复 4楼 xinjitmzy 的帖子

那波特率大概要怎么设置呢?谢谢
此帖出自stm32/stm8论坛

点评

遇到这样的情况不要急,既然能收到数据,说明程序什么的是没有问题的 你在网上搜搜,波特率的计算公式 我记不清了,设置一个精确一点的波特率 还有 串口调试助手的话 波特率要与你设置的对应~~  详情 回复 发表于 2012-6-26 08:35
 
 
 

回复

25

帖子

0

TA的资源

一粒金砂(中级)

6
 
楼主我也遇到你这样的问题。
你的程序好歹还能收到“神州三号,串口测试程序”,请问你除了上面贴出来的程序以外,其他地方如stm32f10x.h和system_stm32f10x.c等地方有没有作修改,还是直接用的库里的文件没改?
还有你的晶振是25M还是8M
此帖出自stm32/stm8论坛

点评

直接用库里的文件没改,晶振是是8M 的  详情 回复 发表于 2012-6-26 18:00
 
 
 

回复

6366

帖子

4912

TA的资源

版主

7
 
应该是波特率问题,误差比较大,找一个误差率小的波特率试试
此帖出自stm32/stm8论坛
 
 
 

回复

272

帖子

0

TA的资源

纯净的硅(初级)

8
 

回复 5楼 wangyan238885 的帖子

遇到这样的情况不要急,既然能收到数据,说明程序什么的是没有问题的
你在网上搜搜,波特率的计算公式 我记不清了,设置一个精确一点的波特率
还有  串口调试助手的话  波特率要与你设置的对应~~
此帖出自stm32/stm8论坛
 
 
 

回复

25

帖子

0

TA的资源

一粒金砂(中级)

9
 
楼上的用ST的库:
USART_InitStructure.USART_BaudRate = 115200;    //设置波特率为115200//

这里设置不就可以了吗,要自己配寄存器?
此帖出自stm32/stm8论坛

点评

你这个115200,也不是无缘无故得出来的啊~~  详情 回复 发表于 2012-6-26 10:33
 
 
 

回复

25

帖子

0

TA的资源

一粒金砂(中级)

10
 
楼主我的问题解决了,我用的是F107VCT6,在MDK中C/C++选项卡我吧编译选项DEFINE改成USE_STDPERIPH_DRIVER, STM32F10X_CL就行了,我原来是USE_STDPERIPH_DRIVER, STM32F10X_HD
好像和芯片系列有关系,STM32F10X_CL是107系列
此帖出自stm32/stm8论坛

点评

我用的是stm32f103zet6,好像改了不行,呵呵。  详情 回复 发表于 2012-6-26 18:22
 
 
 

回复

272

帖子

0

TA的资源

纯净的硅(初级)

11
 

回复 9楼 hjsh 的帖子

你这个115200,也不是无缘无故得出来的啊~~
此帖出自stm32/stm8论坛

点评

ST的库函数不是会根据你写的115200对寄存器进行配置嘛,最多他配置得误差大了点,实在不行自己配。但是我想ST不至于这么差吧  详情 回复 发表于 2012-6-26 12:29
 
 
 

回复

25

帖子

0

TA的资源

一粒金砂(中级)

12
 

回复 11楼 xinjitmzy 的帖子

ST的库函数不是会根据你写的115200对寄存器进行配置嘛,最多他配置得误差大了点,实在不行自己配。但是我想ST不至于这么差吧
此帖出自stm32/stm8论坛

点评

恩恩, 我理解你的意思~~  详情 回复 发表于 2012-6-26 12:31
 
 
 

回复

272

帖子

0

TA的资源

纯净的硅(初级)

13
 

回复 12楼 hjsh 的帖子

恩恩, 我理解你的意思~~
此帖出自stm32/stm8论坛
 
 
 

回复

16

帖子

0

TA的资源

一粒金砂(中级)

14
 

回复 6楼 hjsh 的帖子

直接用库里的文件没改,晶振是是8M 的
此帖出自stm32/stm8论坛
 
 
 

回复

16

帖子

0

TA的资源

一粒金砂(中级)

15
 

回复 10楼 hjsh 的帖子

我用的是stm32f103zet6,好像改了不行,呵呵。
此帖出自stm32/stm8论坛
 
 
 

回复

12

帖子

0

TA的资源

一粒金砂(中级)

16
 
我也是神州三号的板子  源程序是没错的  只是比较不好懂 头文件里有一个其他的包含  我每次都不爱用  可以去网上搜搜  我滴调通了 我可以发给你
此帖出自stm32/stm8论坛
 
 
 

回复

16

帖子

0

TA的资源

一粒金砂(中级)

17
 

你好

可以加我QQ吗?252730659,我有些问题可以向你讨教下
此帖出自stm32/stm8论坛
 
 
 

回复

135

帖子

0

TA的资源

一粒金砂(中级)

18
 
遇到同样问题。。。
此帖出自stm32/stm8论坛
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

19
 

1


1、首先要确保使用keil程序正确编译,并且程序经过调试,已经可以正常发送英文字符,但是发送中文字符时乱码。


2


使用记事本打开main.c文件(或其他主程序),点击另存为,在右下方选择编码方式为ANSI,替换原文件即可


3


替换完成后,重新进行编译,程序应该可以正常运行

此帖出自stm32/stm8论坛
 
 
 

回复

2

帖子

0

TA的资源

宇宙尘埃

20
 
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表