OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7580|回复: 11

串口接收乱码,请大神帮忙们看看是哪里的问题!!!

[复制链接]

22

主题

49

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
214
金钱
214
注册时间
2014-4-30
在线时间
26 小时
发表于 2014-5-19 11:48:47 | 显示全部楼层 |阅读模式
5金钱
自制串口用的是sp3232,在串口调试助手上显示


串口的程序在开发板上测试正常,
#include "stm32f10x.h"
#include <stdio.h>
#include "usart.h"
#include "Delay.h"

int main(void)
{
USART_Configuration();//串口1初始化
while(1)
{
printf("11 01 01 ED");
// USART_SendData(USART1,0x10);
// while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);
delay_ms(1000);
}
}
而且是不停的显示,但是程序中是每秒显示一次。
我想请教一下高手们,这是什么问题?



正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2014-5-19 12:54:22 | 显示全部楼层
你这9针串口接线错了,接的是2脚、3脚和5脚即可,你怎么跑到6脚去啦
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

22

主题

49

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
214
金钱
214
注册时间
2014-4-30
在线时间
26 小时
 楼主| 发表于 2014-5-19 15:08:23 | 显示全部楼层
回复【2楼】Badu_Space:
---------------------------------
失误,画错了,板子上接的是2脚,不是6脚,用杜邦线接的。
回复

使用道具 举报

22

主题

49

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
214
金钱
214
注册时间
2014-4-30
在线时间
26 小时
 楼主| 发表于 2014-5-19 15:11:29 | 显示全部楼层

电路那里是接的2脚,先前画的时候搞错了。接到2脚还是不行。这是为什么呢?
回复

使用道具 举报

0

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2014-5-4
在线时间
0 小时
发表于 2014-5-19 15:32:00 | 显示全部楼层
楼猪请给出你的PA9和PA10的IO配置代码和USART配置代码。能接收到数据基本上可以排除硬件电路的问题,估计问题还是出在软件和配置上。
回复

使用道具 举报

22

主题

49

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
214
金钱
214
注册时间
2014-4-30
在线时间
26 小时
 楼主| 发表于 2014-5-19 15:52:21 | 显示全部楼层
在开发板上试过了,能行,但是到自己做的板子上就不行了、、、
引脚、串口配置如下: 
#include "usart.h"



#ifdef __GNUC__

#define UTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define UTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif /* __GNUC__ */



void USART_RCC_Configuration(void)
{
// RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//开复用时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_USART1,ENABLE);
}


void USART_GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStruct;

GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOA, &GPIO_InitStruct);

GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_10;

GPIO_Init(GPIOA, &GPIO_InitStruct);
}


void USART_Configuration(void)
{
USART_InitTypeDef USART_InitStruct;

USART_RCC_Configuration();

USART_InitStruct.USART_BaudRate =115200;
USART_InitStruct.USART_StopBits = USART_StopBits_1;
USART_InitStruct.USART_WordLength = USART_WordLength_8b;
USART_InitStruct.USART_Parity = USART_Parity_No;
USART_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStruct.USART_Mode = USART_Mode_Tx | USART_Mode_Rx;

USART_Init(USART1, &USART_InitStruct);
// USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);//使能接收中断
USART_Cmd(USART1, ENABLE);//使能串口1

USART_GPIO_Configuration();
}



//不使用半主机模式
#if 1 //如果没有这段,则需要在target选项中选择使用USE microLIB
#pragma import(__use_no_semihosting)
struct __FILE  
{  
int handle;  
};  
FILE __stdout;  

_sys_exit(int x)  
{  
x = x;  
}
#endif


PUTCHAR_PROTOTYPE
{

USART_SendData(USART1,(u8)ch);
while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);

return ch;
}
/**
  * @}
  */

/*********************************END OF FILE**********************************/
回复

使用道具 举报

30

主题

705

帖子

1

精华

新手上路

积分
21
金钱
21
注册时间
2013-3-14
在线时间
52 小时
发表于 2014-5-19 17:23:43 | 显示全部楼层
如果连接正常:
2和5脚电压大概是-7V;
3和5脚电压大概也是-7V。
从-6V到-10V都算正常。如果是这个范围的电平的话,那么你的硬件连接的是正常的。
原子哥是不是又要出黑科技了呀。^_^...
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-5-19 22:56:03 | 显示全部楼层
可以试试回环实验.
可以确定是不是硬件问题.
不过要断开你的STM32,RXD,TXD和SP3232的连接....然后短接SP3232的TXD,RXD.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

22

主题

49

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
214
金钱
214
注册时间
2014-4-30
在线时间
26 小时
 楼主| 发表于 2014-5-20 15:38:39 | 显示全部楼层
那就是硬件的问题了!
回复

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2014-5-20
在线时间
0 小时
发表于 2014-5-20 22:57:03 | 显示全部楼层
波特率问题,有的USB转串口线,在窗口调试助手中设置波特率不起作用,你用9600试试。
回复

使用道具 举报

22

主题

49

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
214
金钱
214
注册时间
2014-4-30
在线时间
26 小时
 楼主| 发表于 2014-5-21 15:40:58 | 显示全部楼层
助手里面的波特率都试过了,不行。
回复

使用道具 举报

1

主题

11

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2015-9-15
在线时间
2 小时
发表于 2015-11-4 22:18:42 | 显示全部楼层
回复【11楼】木頭love@rong:
---------------------------------
你好你的问题解决了吗,我用mini板试验程序烧写到别的板上,也出现了乱码,找不到原因
I Can!
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-19 16:37

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表