OpenEdv-开源电子网

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

我用战舰,串口调试给USART1发数据,USART1接收到数据,把数据用USART2输出,下面是程序。现象是输入数据从USART1输出,朋友们帮忙看一下哪有错误

[复制链接]

16

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
199
金钱
199
注册时间
2015-9-7
在线时间
24 小时
发表于 2015-12-11 15:54:33 | 显示全部楼层 |阅读模式
5金钱



#include "stm32f10x.h"
#include "delay.h"


/************************************************
 ALIENTEK 战舰STM32F103开发板实验0
 工程模板
 注意,这是手册中的新建工程章节使用的main文件
 技术支持:www.openedv.com
 淘宝店铺:http://eboard.taobao.com
 关注微信公众平台微信号:"正点原子",免费获取STM32资料。
 广州市星翼电子科技有限公司 
 作者:正点原子 @ALIENTEK
************************************************/
void usart1_init(void)
{
 GPIO_InitTypeDef GPIO_InitTypeStruct;
 USART_InitTypeDef USART_InitTypeStruct;
 NVIC_InitTypeDef NVIC_InitTypeStruct;
 
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
 
 GPIO_InitTypeStruct.GPIO_Mode=GPIO_Mode_AF_PP;
 GPIO_InitTypeStruct.GPIO_Pin=GPIO_Pin_9;
 GPIO_InitTypeStruct.GPIO_Speed=GPIO_Speed_10MHz;
 GPIO_Init(GPIOA,&GPIO_InitTypeStruct);
 
 GPIO_InitTypeStruct.GPIO_Mode=GPIO_Mode_IN_FLOATING;
 GPIO_InitTypeStruct.GPIO_Pin=GPIO_Pin_10;
 GPIO_InitTypeStruct.GPIO_Speed=GPIO_Speed_10MHz;
 GPIO_Init(GPIOA,&GPIO_InitTypeStruct);
 
 USART_InitTypeStruct.USART_BaudRate=115200;
 USART_InitTypeStruct.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
 USART_InitTypeStruct.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;
 USART_InitTypeStruct.USART_Parity=USART_Parity_No;
 USART_InitTypeStruct.USART_StopBits=USART_StopBits_1;
 USART_InitTypeStruct.USART_WordLength=USART_WordLength_8b;
 
 USART_Init(USART1,&USART_InitTypeStruct);
 
 USART_Cmd(USART1,ENABLE); //使能串口
 
 USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);
 
 NVIC_InitTypeStruct.NVIC_IRQChannel=USART1_IRQn;
 NVIC_InitTypeStruct.NVIC_IRQChannelCmd=ENABLE;
 NVIC_InitTypeStruct.NVIC_IRQChannelPreemptionPriority=1;
 NVIC_InitTypeStruct.NVIC_IRQChannelSubPriority=1;

 NVIC_Init(&NVIC_InitTypeStruct);
 
}

void USART1_IRQHandler(void)
{
 u8 res;
 if(USART_GetITStatus(USART1,USART_IT_RXNE))
 {
  res=USART_ReceiveData(USART1);  //usart1接收
   USART_SendData(USART2,res);    //usart2发送
 }
 

}

void uart2_init(u32 bound)
{
 GPIO_InitTypeDef GPIO_InitStructure;
 USART_InitTypeDef USART_InitStructure; 

 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //使能GPIOA时钟
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);//使能USART2
 //USART2_TX   GPIOA.2
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; //PA.2
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出
  GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA.2
  
  //USART2_RX   GPIOA.3初始化
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;//PA3
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入
  GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA.3  
  //USART 初始化设置

 USART_InitStructure.USART_BaudRate = bound;//串口波特率
 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_Rx | USART_Mode_Tx; //收发模式

  USART_Init(USART2, &USART_InitStructure); //初始化串口2
  //USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);//开启串口接受中断
  USART_Cmd(USART2, ENABLE);                    //使能串口2


}


 int main(void)
 { 
   NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
   usart1_init();
   uart2_init(115200);
   while(1);
 }

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

使用道具 举报

22

主题

2251

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4480
金钱
4480
注册时间
2013-4-22
在线时间
337 小时
发表于 2015-12-11 16:10:28 | 显示全部楼层
串口2的中断函数哪里去了?
回复

使用道具 举报

16

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
199
金钱
199
注册时间
2015-9-7
在线时间
24 小时
 楼主| 发表于 2015-12-11 16:25:33 | 显示全部楼层
回复【2楼】三叶草:
---------------------------------
串口2需要中断?我只开了串口1中断,中断里有读串口1数据,然后串口2发出。红色部分,这样不行啊?
回复

使用道具 举报

22

主题

2251

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4480
金钱
4480
注册时间
2013-4-22
在线时间
337 小时
发表于 2015-12-11 16:53:21 | 显示全部楼层
回复【3楼】七夜957925791:
---------------------------------
可定不行啊
回复

使用道具 举报

0

主题

3

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
214
金钱
214
注册时间
2013-7-30
在线时间
28 小时
发表于 2015-12-11 17:53:32 | 显示全部楼层
中断分为接收中断和发送中断,发送之前开中断,发送完之后关中断就行了
回复

使用道具 举报

16

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
199
金钱
199
注册时间
2015-9-7
在线时间
24 小时
 楼主| 发表于 2015-12-11 18:05:04 | 显示全部楼层
回复【4楼】三叶草:
---------------------------------
那串口2的中断函数里写什么啊?
回复

使用道具 举报

6

主题

115

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1027
金钱
1027
注册时间
2015-6-1
在线时间
126 小时
发表于 2015-12-13 11:11:51 | 显示全部楼层
串口1中断不要用delay,也不要进行太多操作
删去delay看看,
回复

使用道具 举报

16

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
199
金钱
199
注册时间
2015-9-7
在线时间
24 小时
 楼主| 发表于 2015-12-13 12:23:20 | 显示全部楼层
回复【7楼】Watmin:
---------------------------------
也不行啊,串口2没反应。串口1正常
回复

使用道具 举报

18

主题

238

帖子

3

精华

金牌会员

Rank: 6Rank: 6

积分
1823
金钱
1823
注册时间
2014-8-5
在线时间
211 小时
发表于 2015-12-13 18:05:09 | 显示全部楼层
回复【8楼】七夜957925791:
---------------------------------
 把串口2的波特率设高点或者把串口1波特率设低点即可。如果串口1和串口2波特率一样,当串口1接收到数据,在中断中通过串口2发数据时间不够,串口2发送的时候串口1又收到数据了。
回复

使用道具 举报

16

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
199
金钱
199
注册时间
2015-9-7
在线时间
24 小时
 楼主| 发表于 2015-12-15 10:12:49 | 显示全部楼层
回复【9楼】513393302@qq.com:
-----------------------------谢谢,问题解决了,串口1 2在初始化的时候复位一下就好了。
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2016-1-20
在线时间
11 小时
发表于 2016-1-21 09:58:43 | 显示全部楼层
朋友,我试了你的程序,在使能串口时钟之后添加了初始化也不管用。
回复

使用道具 举报

16

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
199
金钱
199
注册时间
2015-9-7
在线时间
24 小时
 楼主| 发表于 2016-1-21 10:03:34 | 显示全部楼层
wangzai 发表于 2016-1-21 09:58
朋友,我试了你的程序,在使能串口时钟之后添加了初始化也不管用。

初始化里加上串口复位。
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2016-1-20
在线时间
11 小时
发表于 2016-1-21 10:11:18 | 显示全部楼层
七夜957925791 发表于 2016-1-21 10:03
初始化里加上串口复位。

RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);
USART_DeInit(USART2);   
不是加上后面这一句吗 ?
回复

使用道具 举报

8

主题

42

帖子

0

精华

初级会员

Rank: 2

积分
197
金钱
197
注册时间
2015-12-31
在线时间
38 小时
发表于 2016-1-21 10:18:50 | 显示全部楼层
新人求楼主指教,我想用PC端通过串口发送数据  然后再打印到PC端串口调试助手,串口初始化程序都有,就是没有接收发的程序、、、
回复

使用道具 举报

16

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
199
金钱
199
注册时间
2015-9-7
在线时间
24 小时
 楼主| 发表于 2016-1-21 10:22:50 | 显示全部楼层
wangzai 发表于 2016-1-21 10:11
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);
USART_DeInit(USART2);   
不是加上后面这一 ...

是啊,然后就行了。你看教学视频,按照PPT上的过程做就行。
回复

使用道具 举报

16

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
199
金钱
199
注册时间
2015-9-7
在线时间
24 小时
 楼主| 发表于 2016-1-21 10:26:19 | 显示全部楼层
jgh211 发表于 2016-1-21 10:18
新人求楼主指教,我想用PC端通过串口发送数据  然后再打印到PC端串口调试助手,串口初始化程序都有,就是没 ...

我擦,这个自己看原子的例程,大概是主程序while(1),串口中断为接收中断,中断里是串口向外发数。原子的例程就这样,你好好看看。
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2016-1-20
在线时间
11 小时
发表于 2016-1-21 10:41:22 | 显示全部楼层
七夜957925791 发表于 2016-1-21 10:22
是啊,然后就行了。你看教学视频,按照PPT上的过程做就行。

但还是不行啊,能否把你这个调通的程序发给我看看呢,这个地方已经调了一天了 。邮箱amuleto@163.com 谢谢了
回复

使用道具 举报

16

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
199
金钱
199
注册时间
2015-9-7
在线时间
24 小时
 楼主| 发表于 2016-1-21 15:17:15 | 显示全部楼层
wangzai 发表于 2016-1-21 10:41
但还是不行啊,能否把你这个调通的程序发给我看看呢,这个地方已经调了一天了 。邮箱 谢谢了

查收。。。
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
6
金钱
6
注册时间
2016-3-15
在线时间
1 小时
发表于 2016-3-19 13:57:32 | 显示全部楼层
jgh211 发表于 2016-1-21 10:18
新人求楼主指教,我想用PC端通过串口发送数据  然后再打印到PC端串口调试助手,串口初始化程序都有,就是没 ...

您好,您的问题解决了,我想想读入电脑发送的程序,但是但是读取的都是stm32发往pc的,求解决办法,我的邮箱79642430@qq.com,谢啦
回复

使用道具 举报

15

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
154
金钱
154
注册时间
2016-1-18
在线时间
61 小时
发表于 2016-9-21 10:44:53 | 显示全部楼层
你好,我现在想做串口2接受传感器数据串口1打印输出,没跳出来,能把您的程序发我吗?邮箱936679030@qq.com
回复

使用道具 举报

12

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2016-11-7
在线时间
39 小时
发表于 2016-12-20 11:26:13 | 显示全部楼层
七夜957925791 发表于 2016-1-21 10:26
我擦,这个自己看原子的例程,大概是主程序while(1),串口中断为接收中断,中断里是串口向外发数。原子 ...

楼主,我一直在写这个程序可是就是不通过,可以发一个调通的程序给我看一下吗 1142068125@qq.com
回复

使用道具 举报

16

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
138
金钱
138
注册时间
2016-11-6
在线时间
20 小时
发表于 2017-1-10 18:30:20 | 显示全部楼层
您好,对于串口收发数据,最近也是上位机查看的数据不对,麻烦您发一份调通的源码,谢谢。1486633149@qq.com
回复

使用道具 举报

11

主题

33

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2017-7-12
在线时间
46 小时
发表于 2017-7-19 14:23:45 | 显示全部楼层
楼主,程序可以发我看看吗        471973063@qq.com
万分感谢
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2018-7-4
在线时间
2 小时
发表于 2018-7-4 16:29:10 | 显示全部楼层
楼主,程序可以发我看看吗       374649328@qq.com,万分感谢
回复

使用道具 举报

3

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2017-12-16
在线时间
17 小时
发表于 2018-7-6 09:43:14 | 显示全部楼层
同求,谢谢楼主了!邮箱shen_d@qq.com。调了很多天了,好不容易看见楼主的帖子,求源代码。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-11 13:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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