OpenEdv-开源电子网

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

关于串口2的问题

[复制链接]

2

主题

7

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2011-3-31
在线时间
0 小时
发表于 2011-4-1 19:01:08 | 显示全部楼层 |阅读模式

 原子大哥,我按照下面配置完串口2之后,我发现它的波特率减了一半,如果设9600,它就是4800; 如果设置115200,它就是57600

 uart_init(72,115200);

 RCC->APB2ENR|=1<<2;   //使能PORTA口时钟 
 RCC->APB1ENR|=1<<17;  //使能串口2时钟
 GPIOA->CRL=0X44444B44;//IO状态设置

 RCC->APB1RSTR|=1<<17;   //复位串口2
 RCC->APB1RSTR&=~(1<<17);//停止复位

 //波特率设置
  USART2->BRR=mantissa; // 波特率设置 
 USART2->CR1|=0X200C;  //1位停止,无校验位.

虽然不影响使用,但是我知道为什么会这样的。谢谢。

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2011-4-1 19:17:11 | 显示全部楼层
回复【楼主位】volval:
-------------------------------
串口2和串口1的时钟不在一个地方.
自己查一下.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

2

主题

7

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2011-3-31
在线时间
0 小时
 楼主| 发表于 2011-4-2 09:02:08 | 显示全部楼层
原子大哥,时钟我是设置对了的。
RCC->APB2ENR|=1<<14;  //使能串口1时钟.
RCC->APB1ENR|=1<<17;  //使能串口2时钟 
问题是如果时钟设置不对,它是不会正常发送的,现在是波特率自己减了一半很纳闷。
回复 支持 反对

使用道具 举报

6

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2011-3-25
在线时间
0 小时
发表于 2011-4-2 10:05:10 | 显示全部楼层
回复【3楼】volval:
-------------------------------
原子的意思是,APB1和APB2的时钟是不同的,APB1最多36M,APB2最大72M
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2011-4-2 10:05:41 | 显示全部楼层
回复【3楼】volval:
-------------------------------
串口1和串口2的时钟频率不一样.!!!
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

2

主题

9

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2011-7-19
在线时间
0 小时
发表于 2011-7-23 20:33:09 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子大哥,请问是USB_232那个接口是串口1还是USB那个接口是串口1呢?
我再编,我再调,我再调,我再编~~~
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2011-7-23 21:47:37 | 显示全部楼层
串口1.
回复 支持 反对

使用道具 举报

3

主题

92

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
275
金钱
275
注册时间
2012-6-19
在线时间
37 小时
发表于 2012-9-10 16:58:46 | 显示全部楼层
哈哈,多谢楼主提问,我也遇到这个问题,终于解决了。
回复 支持 反对

使用道具 举报

6

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
101
金钱
101
注册时间
2012-9-8
在线时间
9 小时
发表于 2012-9-11 23:11:36 | 显示全部楼层
//初始化串口2
//默认时钟72MHz
//bound:波特率
void USART2_Config(u32 bound)
{    
GPIO_InitTypeDef GPIO_InitStructure; //定义初始化GPIO的结构体
USART_InitTypeDef USART2_InitStructure; //定义初始化USART的结构体
/*配置USART2时钟*/
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2|RCC_APB2Periph_GPIOA,ENABLE);
/*USART2端口配置*/
/*USART2 Tx(PA0.2) 开漏推挽*/
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);
/*USART1 Rx(PA0.3) 开路输入*/
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA,&GPIO_InitStructure);
/*USART2 模式配置*/
USART2_InitStructure.USART_BaudRate=bound;
USART2_InitStructure.USART_WordLength=USART_WordLength_8b;
USART2_InitStructure.USART_StopBits=USART_StopBits_1;
USART2_InitStructure.USART_Parity=USART_Parity_No;
USART2_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
USART2_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;
USART_Init(USART2,&USART2_InitStructure);
/*使能USART1*/
USART_Cmd(USART2,ENABLE);
}

这个我试了,可以用,10楼有新的,这个其实还有问题。。。
回复 支持 反对

使用道具 举报

6

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
101
金钱
101
注册时间
2012-9-8
在线时间
9 小时
发表于 2012-9-11 23:12:14 | 显示全部楼层
倒数第3行注释搞错了 是USART2
回复 支持 反对

使用道具 举报

6

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
101
金钱
101
注册时间
2012-9-8
在线时间
9 小时
发表于 2012-9-12 16:07:26 | 显示全部楼层
不好意思哦 8楼上传的程序是有问题的,如果先使用了USART1 A9 A10,是能了GPIOPA,这个程序是可以的,如果没有,这个程序是不能的,
/*配置USART2时钟*/
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2|RCC_APB2Periph_GPIOA,ENABLE); 
这局有问题,GPIOA的时钟是在APB2里的,分开就可以了。这里吧改正的上传下
//初始化串口2
//默认时钟72MHz
//bound:波特率
void USART2_Config(u32 bound)
{    
GPIO_InitTypeDef GPIO_InitStructure; //定义初始化GPIO的结构体
USART_InitTypeDef USART2_InitStructure; //定义初始化USART的结构体
/*配置USART2时钟*/
//RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2|RCC_APB2Periph_GPIOA,ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
/*USART2端口配置*/
/*USART2 Tx(PA0.2) 开漏推挽*/
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);
/*USART1 Rx(PA0.3) 开路输入*/
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA,&GPIO_InitStructure);
/*USART2 模式配置*/
USART2_InitStructure.USART_BaudRate=bound;
USART2_InitStructure.USART_WordLength=USART_WordLength_8b;
USART2_InitStructure.USART_StopBits=USART_StopBits_1;
USART2_InitStructure.USART_Parity=USART_Parity_No;
USART2_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
USART2_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;
USART_Init(USART2,&USART2_InitStructure);
/*使能USART2*/
USART_Cmd(USART2,ENABLE);
}
拷贝程序是万恶之源啊,调试串口3的时候发现的这个问题。共勉之。。。。
回复 支持 反对

使用道具 举报

1

主题

3

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2012-10-18
在线时间
2 小时
发表于 2012-11-22 21:05:22 | 显示全部楼层
 刚刚遇到串口2的问题,就找到这个帖子~
回复 支持 反对

使用道具 举报

0

主题

8

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2012-10-7
在线时间
0 小时
发表于 2013-12-1 22:08:08 | 显示全部楼层
哎哎哎,我的这个串口2 和GSM模块一直通信不成功,感觉我的代码直接停在这没有执行一样
成功的花,人们只惊羡他现实的惊艳,然而当初她的芽儿浸透了奋斗的泪泉,洒遍了牺牲的血雨!!!!!
回复 支持 反对

使用道具 举报

1

主题

14

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2013-10-26
在线时间
0 小时
发表于 2013-12-5 21:03:16 | 显示全部楼层
回复【11楼】vampirei:
---------------------------------
我尝试了你的程序,但是串口2 还是不行,无法发送与接收数据。
这世界并不会在意你的自尊。这世界指望你在自我感觉良好之前先要有所成就。
回复 支持 反对

使用道具 举报

3

主题

35

帖子

0

精华

高级会员

Rank: 4

积分
916
金钱
916
注册时间
2014-4-28
在线时间
75 小时
发表于 2014-5-22 22:08:11 | 显示全部楼层
正好需要这个,哈哈!
来路长   前程湮   待从头拨断琴弦
回复 支持 反对

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2015-1-14
在线时间
3 小时
发表于 2015-7-23 22:38:40 | 显示全部楼层
回复【11楼】vampirei:
---------------------------------
请教一下,我们在设置波特率时不需要考虑时钟频率吗
回复 支持 反对

使用道具 举报

0

主题

7

帖子

0

精华

新手上路

积分
24
金钱
24
注册时间
2016-4-3
在线时间
3 小时
发表于 2016-4-3 17:47:30 | 显示全部楼层
blackbattery 发表于 2013-12-5 21:03
回复【11楼】vampirei:
---------------------------------
我尝试了你的程序,但是串口2&nbsp;还是不行, ...

我也是。根本不知道串口2相比串口1到底多了哪些配置
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-19 03:46

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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