STM32开发板USART2通信接收不到数据

  • 开发
  • 程序
  • 通信
  • 心机BOY
  • LV4工程师
  • |      2016-08-11 16:36:57
  • 浏览量 2522
  • 回复:13
本帖最后由 心机BOY 于 2016-8-11 20:03 编辑 昨天经过USART学习写了一个与PC通讯的小程序,但一直调试不出来有没有大神帮忙看下问题出在哪里? It文件里的程序
  • 0
  • 收藏
  • 举报
  • 分享
我来回复

登录后可评论,请 登录注册

所有回答 数量:3
LiuYang 2016-08-11
RX的GPIO设置,Mode也是AF,而不是IN。IN是GPIO模式,应该用复用模式配置为串口的RX,也就是AF。
0   回复
举报
发布
心机BOY 回复 2016-08-11
RX怎么改成AF,不是应该是浮空输入吗
0   回复
举报
听雨落凡尘 回复 2016-08-11
@马踏飞燕 大神 快来
0   回复
举报
汉云 回复 2016-08-11
这是我用的程序,如下的配置是可以正常通讯的。所以RX配置成GPIO_Mode_IN_FLOATING也是可以的。 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; //RX GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;// GPIO_Init(GPIOA, &GPIO_InitStructure); // GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //TX GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出 GPIO_Init(GPIOA, &GPIO_InitStructure); //
0   回复
举报
汉云 回复 2016-08-11
在你的配置程序中,你使能的是接收中断, USART_ITConfig(USART2,USART_IT_RXNE,ENABLE); 程序功能是返回接收到的数据。 先确定是不是硬件 问题。再看程序了的。 先确定PC是不是发送了,可以短接PC上的TX与RX,试试。 确定STM32是不是接收到了,仿真一下看下有没有进中断里。
0   回复
举报
心机BOY 2016-08-11
君子好“球” 发表于 2016-8-11 17:00 串口通信步骤: 1、串口时钟使能,GPIO时钟使能 2、串口复位
哪里有问题,增加的代码加在USART里面?
0   回复
举报
发布
君子好“球” 回复 2016-08-12
增加在RCC_Configuration()函数的最后一行。
0   回复
举报
灵澈 回复 2016-08-12
楼主问题解决了,记得及时结贴哦,社区还有3倍奖励要奖励给回答问题者哦
1   回复
举报
残存地丢 回复 2016-08-11
我觉得还是直接把程序给你改了吧,我已经验证过了,可以正常收发数据,见附件.
0   回复
举报
999 回复 2016-08-12
本帖最后由 999 于 2016-8-13 02:45 编辑 我这里说一种我遇到过的情况: “在接收中断中,进行发送” 有时就会产生这样的问题。 这个问题比较奇葩,有时修改代码或者删掉一些函数,又好了。当时没有去仔细寻找原因。 所以我建议楼主: 1、在接接收中断中,不要发送,设置一个IO口进行输出,如点亮一个小灯。或者进入debug模式在中断设置断点。先单独判断是否能触发接收中断。 2、单独发送,看是否成功。 曾遇到不好觉得的问题:比如进入debug就正常,不进入就异常。或者插着Jlink就正常,拔下去就不正常。导致原因很多,就要隔离条件,依次测试。
0   回复
举报
君子好“球” 2016-08-11
串口通信步骤: 1、串口时钟使能,GPIO时钟使能 2、串口复位 3、GPIO端口模式设置 4、串口参数初始化 5、初始化NVIC 6、开启中断 7、使能串口 按照这几个步骤下来应该就可以通信了,你应该少了第二个串口复位,增加一行代码:USART_DeInit(USART2)
2   回复
举报
发布
x
收藏成功!点击 我的收藏 查看收藏的全部帖子