OpenEdv-开源电子网

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

关于串口的奇葩问题

[复制链接]

9

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
80
金钱
80
注册时间
2014-3-12
在线时间
0 小时
发表于 2014-5-9 16:17:24 | 显示全部楼层 |阅读模式
5金钱
已经半个月了,一个串口竟然出不来,我真心感觉奇葩了,
uart_init(u32 bound)关于这个函数,我想知道它是怎么初始化串口的,要特别细,
尤其是怎么设置的波特率,因为我怀疑就是波特率不对,所以一直发送和接收的不对,
另外,我这个系统中间过程还有用zigbee,就是串口先发给zigbee,然后zigbee发给主节点的zigbee
然后电脑接收主节点串口zigbee信号显示之,但是这个一直不对,我怀疑就是单片机串口发送的波特率不对
有哪位大神能给点建议,
delay_init();     //延时函数初始化  
TIM_ClearFlag(TIM1, TIM_FLAG_Update);//清除更新标志位
TIM_ClearFlag(TIM1, TIM_FLAG_CC1);//清除捕获标志位
RCC->APB2ENR|=0X0000001c;//先使能外设IO PORTa,b,c时钟
GPIOB->CRH=0X77773333;    //推挽输出
GPIOA->CRL=0X33333333;    //推挽输出
LCD_Init(); 
LCD_Clear();//清屏
    LCD_Write_String(0,0,"Irradiance W/m^2");
    LCD_Write_String(2,1,"0123456789X.");  
  delay_ms(50);
LCD_Clear();//清屏
    LCD_Write_String(0,0,"Irradiance W/m^2");
TIM1_Cap_Init(0XFFFF,1-1); //以72Mhz的频率计数 
TIM1CH3_CAPTURE_VAL1=0;
    uart_init(9600); //串口初始化为9600    怎么就不对呢??????????

最佳答案

查看完整内容[请看2#楼]

学会分析问题先. 串口不对,还扯上zigbee什么无线在里头,作死的节奏啊. 串口不对,直接下载我们的例程,用串口助手,看看,立马知道什么问题了.
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-5-9 16:17:25 | 显示全部楼层
学会分析问题先.
串口不对,还扯上zigbee什么无线在里头,作死的节奏啊.

串口不对,直接下载我们的例程,用串口助手,看看,立马知道什么问题了.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

9

主题

126

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
226
金钱
226
注册时间
2014-4-3
在线时间
18 小时
发表于 2014-5-9 19:32:42 | 显示全部楼层
真心奇葩,把你的uart_init()放出来瞧瞧呗。
回复

使用道具 举报

170

主题

917

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1824
金钱
1824
注册时间
2013-4-13
在线时间
63 小时
发表于 2014-5-9 21:35:23 | 显示全部楼层
我感觉学技术要注意提高自己的基本功!尤其是c语言理解能力。
手艺人要内外兼修。
回复

使用道具 举报

9

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
80
金钱
80
注册时间
2014-3-12
在线时间
0 小时
 楼主| 发表于 2014-5-12 22:31:31 | 显示全部楼层
回复【3楼】dixdsqaid:
---------------------------------
void uart_init(u32 bound){
    //GPIO端口设置
    GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
 
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE); //使能USART1,GPIOA时钟
  USART_DeInit(USART1);  //复位串口1
                                                          //USART1_TX   A.9
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出
    GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化PA9
   
    //USART1_RX   A.10
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入
    GPIO_Init(GPIOA, &GPIO_InitStructure);  //初始化PA10

   //USART 初始化设置

USART_InitStructure.USART_BaudRate = bound;//一般设置为9600;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;//字长为8位数据格式
USART_InitStructure.USART_StopBits = USART_StopBits_1;//一个停止位
USART_InitStructure.USART_Parity = USART_Parity_No;//无奇偶校验位
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//无硬件数据流控制
USART_InitStructure.USART_Mode = USART_Mode_Tx;//USART_Mode_Rx | USART_Mode_Tx; //收发模式

    USART_Init(USART1, &USART_InitStructure); //初始化串口
    USART_Cmd(USART1, ENABLE);                    //使能串口 

}

就这些了,就是原子的输入捕获例程里的,删了不用的几段
回复

使用道具 举报

9

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
80
金钱
80
注册时间
2014-3-12
在线时间
0 小时
 楼主| 发表于 2014-5-12 22:37:31 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子哥,我真的是用usb转串口试过了,也是不行的,
就拿我试着发0x11,,0x20这两个数,
USART_SendData(USART1,0x11);
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);
USART_SendData(USART1,0x20);
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);
将tx接到usb转串口的rx上,接好地,然后在串口调试助手里上只能看到77 03这两个数字重复
还有一个问题,就是我发四个字节的时候,比如
USART_SendData(USART1,usart_t_low);
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);
USART_SendData(USART1,usart_t_high);
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);
USART_SendData(USART1,0x11);
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);
USART_SendData(USART1,0x20);
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);
串口调试助手里只有三个字节,这更搞的我莫名其妙了。。。。
现象就是这些,会是什么问题,串口初始化的程序我在上面贴出来了,就是拿您的输入捕获改的,
我的芯片是stm32F103c8t6
回复

使用道具 举报

9

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
80
金钱
80
注册时间
2014-3-12
在线时间
0 小时
 楼主| 发表于 2014-5-12 22:39:06 | 显示全部楼层
回复【4楼】wangyan915205:
---------------------------------
这个是肯定的,但是现在问题是怎么找出问题,
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-5-13 00:21:20 | 显示全部楼层
回复【6楼】wujitagongli:
---------------------------------
说明你串口通信,都存在问题啊。
好好解决串口通信问题先。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

9

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
80
金钱
80
注册时间
2014-3-12
在线时间
0 小时
 楼主| 发表于 2014-5-20 10:20:12 | 显示全部楼层
回复【8楼】正点原子:
---------------------------------
现在串口通信解决了,买的板子上没有转rs232的芯片,我加了个转232的电路
再接串口转usb就没问题了,但是我的zigbee是直接接TTL点平的,我拿zigbee模块直接接板子的
tx,rx或者是接到转换过的rs232都还接收错误,
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-5-20 23:32:20 | 显示全部楼层
回复【9楼】wujitagongli:
---------------------------------
用串口助手观察下数据看看.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

3

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2013-11-8
在线时间
2 小时
发表于 2014-5-21 00:42:26 | 显示全部楼层
USART_InitStructure.USART_Mode = USART_Mode_Tx;//USART_Mode_Rx | USART_Mode_Tx; //收发模式 你只设置了发送模式,没设置接收模式吧?
无悔今生。
回复

使用道具 举报

9

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
80
金钱
80
注册时间
2014-3-12
在线时间
0 小时
 楼主| 发表于 2014-5-21 10:12:24 | 显示全部楼层
回复【11楼】ICBM核弹头:
---------------------------------
终于知道了,zigbee是个神奇的东西,arm的9600波特率它不支持,改成38400就ok了,
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-7 20:39

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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