OpenEdv-开源电子网

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

串口1和串口2能同时工作吗?

[复制链接]

22

主题

79

帖子

0

精华

初级会员

Rank: 2

积分
198
金钱
198
注册时间
2015-3-13
在线时间
5 小时
发表于 2015-9-4 09:48:20 | 显示全部楼层 |阅读模式
5金钱
STM32F103C8T6  USART1和USART2能同时工作吗? 
USART2要怎么配置,与USART1有区别吗?

最佳答案

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

互相不影响、完全独立的硬件,当然能,5个、8个都行。 当年51芯片不行,因为要借用外部的定时器,不是“独立硬件”。
不断学习和进步
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11557
金钱
11557
注册时间
2014-4-1
在线时间
1318 小时
发表于 2015-9-4 09:48:21 | 显示全部楼层
互相不影响、完全独立的硬件,当然能,5个、8个都行。

当年51芯片不行,因为要借用外部的定时器,不是“独立硬件”。
回复

使用道具 举报

22

主题

79

帖子

0

精华

初级会员

Rank: 2

积分
198
金钱
198
注册时间
2015-3-13
在线时间
5 小时
 楼主| 发表于 2015-9-4 10:17:11 | 显示全部楼层
回复【2楼】xuande:
---------------------------------
USART1_Configuration();    // 串口1初始化
USART2_Configuration();    // 串口2初始化
当我这样设置时,串口1就不能工作了。

当把串口2屏蔽之后就可以工作了,所以我质疑是不是串口2的配置影响到了串口1?求助
USART1_Configuration();    // 串口1初始化
//USART2_Configuration();    // 串口2初始化
不断学习和进步
回复

使用道具 举报

10

主题

81

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1502
金钱
1502
注册时间
2013-8-28
在线时间
28 小时
发表于 2015-9-4 10:30:29 | 显示全部楼层
回复【3楼】水晶球:
---------------------------------
可以同时工作  
USART1_Configuration();    // 串口1初始化 
USART2_Configuration();    // 串口2初始化 
但是只有这两行代码看不出问题来啊
STM32软硬件相关项目外包开发 QQ:83029775
回复

使用道具 举报

22

主题

109

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
367
金钱
367
注册时间
2015-5-28
在线时间
0 小时
发表于 2015-9-4 10:36:18 | 显示全部楼层
当然可以
亲 都是初始化 可是初始化函数里面的语句可以设置呀。波特率 硬件连接等 用到中断 还有中断不同设置。
再不玩命努力,你就老了
回复

使用道具 举报

22

主题

79

帖子

0

精华

初级会员

Rank: 2

积分
198
金钱
198
注册时间
2015-3-13
在线时间
5 小时
 楼主| 发表于 2015-9-4 13:54:57 | 显示全部楼层
回复【4楼】andyzhao365:
---------------------------------
回复【4楼】andyzhao365:
---------------------------------
void USART1_Configuration(void)
{
  USART_InitTypeDef USART_InitStructure;
  GPIO_InitTypeDef GPIO_InitStructure;

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE);
  USART_DeInit(USART1);  
  //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_InitStructure.USART_BaudRate = 57600;//115200;
  USART_InitStructure.USART_WordLength = USART_WordLength_8b;
  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_Rx | USART_Mode_Tx;
  USART_Init(USART1, &USART_InitStructure); 
                                                                  
  
  USART_ClearFlag(USART1, USART_FLAG_TC);        // 清标志                                                                

  USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); // 允许接收中断
  USART_Cmd(USART1, ENABLE);                     // 使能串口

}


void USART2_Configuration(void)
{
  USART_InitTypeDef USART_InitStructure;
  GPIO_InitTypeDef GPIO_InitStructure;

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2 , ENABLE);
  
  USART_DeInit(USART2);  //复位串口2
  
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; 
  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_3;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入
  GPIO_Init(GPIOA, &GPIO_InitStructure);  

  USART_InitStructure.USART_BaudRate = 57600;//115200;
  USART_InitStructure.USART_WordLength = USART_WordLength_8b;
  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_Rx | USART_Mode_Tx;
  USART_Init(USART2, &USART_InitStructure); 
                                                                  
  USART_ClearFlag(USART2, USART_FLAG_TC);        // 清标志                                                                

  USART_ITConfig(USART2, USART_IT_RXNE, ENABLE); // 允许接收中断
  USART_Cmd(USART2, ENABLE);                     // 使能串口
}

void NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);

NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;   //用到串口1时,
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);

NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;   //用到串口2时,
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}

我是这样配置两个串口的,有问题吗?
我这样配置后,就出现当两个串口都打开时,串口1就不能工作了 
为什么我用J-Link第一次下载进去可以执行程序,但是当我拔掉J-Link,然后重启就不能运行程序了。(我的程序有无线接收功能)
不断学习和进步
回复

使用道具 举报

22

主题

79

帖子

0

精华

初级会员

Rank: 2

积分
198
金钱
198
注册时间
2015-3-13
在线时间
5 小时
 楼主| 发表于 2015-9-4 15:59:59 | 显示全部楼层
回复【5楼】逍遥居士_888:
---------------------------------
都设置了,还是有问题
不断学习和进步
回复

使用道具 举报

22

主题

109

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
367
金钱
367
注册时间
2015-5-28
在线时间
0 小时
发表于 2015-9-4 16:33:32 | 显示全部楼层
回复【7楼】水晶球:
---------------------------------
仔细检查下吧  一个不留神就出问题。
这两天我用2个定时器做东西,最开始不好使,后来发现是初始化那里的问题
再不玩命努力,你就老了
回复

使用道具 举报

19

主题

102

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
204
金钱
204
注册时间
2015-6-19
在线时间
1 小时
发表于 2015-9-4 19:32:44 | 显示全部楼层
回复【2楼】xuande:
---------------------------------
串口1和串口2同时通信可以吗?串口一发数据给串口2?
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11557
金钱
11557
注册时间
2014-4-1
在线时间
1318 小时
发表于 2015-9-4 20:27:48 | 显示全部楼层
回复【9楼】张鋆:
---------------------------------

当然可以,
甚至可以和自己。
回复

使用道具 举报

19

主题

102

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
204
金钱
204
注册时间
2015-6-19
在线时间
1 小时
发表于 2015-9-4 20:34:27 | 显示全部楼层
回复【10楼】xuande:
---------------------------------
我的天,这个真厉害
回复

使用道具 举报

2

主题

14

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2015-7-30
在线时间
0 小时
发表于 2015-9-11 20:42:32 | 显示全部楼层
回复【6楼】水晶球:
---------------------------------
nvic第0组,要不你把抢占式改0试试
回复

使用道具 举报

30

主题

705

帖子

1

精华

新手上路

积分
21
金钱
21
注册时间
2013-3-14
在线时间
52 小时
发表于 2015-9-14 13:54:22 | 显示全部楼层
void usart1_init(u32 bound)
{
    //GPIO端口设置  
    GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
 
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO, ENABLE);
    //USART1_TX   A.9
    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);
   
    //USART1_RX   A.10
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    GPIO_Init(GPIOA, &GPIO_InitStructure);  

    //Usart1 NVIC 配置
    NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0; //1
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //1

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道使能
NVIC_Init(&NVIC_InitStructure); //根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器USART1
  
    //USART 初始化设置
USART_InitStructure.USART_BaudRate = bound;//一般设置为9600;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
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_Rx | USART_Mode_Tx;

    USART_Init(USART1, &USART_InitStructure);
    USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//开启中断
    USART_Cmd(USART1, ENABLE);                    //使能串口
//USART1->CR3|=1<<7; //使能串口DMA
}

void usart2_init(u32 bound)
{
    //GPIO端口设置  
    GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
USART_ClockInitTypeDef USART_ClockInitStructure; 
 
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);
     //USART2_TX   A.2
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_Init(GPIOA, &GPIO_InitStructure);
   
    //USART3_RX   A.3
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    GPIO_Init(GPIOA, &GPIO_InitStructure);  

    NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1; //0
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; //0

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道使能
NVIC_Init(&NVIC_InitStructure);  //根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器USART1
  
USART_InitStructure.USART_BaudRate = bound;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
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_Rx | USART_Mode_Tx;
//---------------------------------------------------------------------------------
USART_ClockInitStructure.USART_Clock = USART_Clock_Disable;
USART_ClockInitStructure.USART_CPOL = USART_CPOL_Low;
USART_ClockInitStructure.USART_CPHA = USART_CPHA_2Edge;
USART_ClockInitStructure.USART_LastBit = USART_LastBit_Disable;
USART_ClockInit(USART2, &USART_ClockInitStructure);
//---------------------------------------------------------------------------------
    USART_Init(USART2, &USART_InitStructure);
    USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);//开启中断
    USART_Cmd(USART2, ENABLE);                    //使能串口 
//USART2->CR3|=1<<7;//使能串口DMA
}
原子哥是不是又要出黑科技了呀。^_^...
回复

使用道具 举报

1

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
92
金钱
92
注册时间
2019-3-28
在线时间
12 小时
发表于 2019-3-28 09:42:02 | 显示全部楼层
请问问题解决了吗,我也遇到了这样的问题(好久远
回复

使用道具 举报

22

主题

271

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
405
金钱
405
注册时间
2019-3-21
在线时间
107 小时
发表于 2019-3-28 09:50:22 | 显示全部楼层
atalanta 发表于 2019-3-28 09:42
请问问题解决了吗,我也遇到了这样的问题(好久远)

代码给我看看
回复

使用道具 举报

1

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
92
金钱
92
注册时间
2019-3-28
在线时间
12 小时
发表于 2019-3-28 10:14:13 | 显示全部楼层

发上来了,可能不太规范,或许您可以移步到我的这个求助帖
http://www.openedv.com/forum.php?mod=viewthread&tid=290319&extra=

3.27.rar

1.3 MB, 下载次数: 16

回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-24 07:21

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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