OpenEdv-开源电子网

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

两个mini32板之间的串口通信不成功是什么原因,求助大佬?

[复制链接]

1

主题

2

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2018-10-19
在线时间
1 小时
发表于 2018-10-19 21:00:47 | 显示全部楼层 |阅读模式
4金钱
发送程序:
#include "led.h"
#include "delay.h"
#include "sys.h"
#include "key.h"
#include "usart.h"
#include "stm32f10x.h"

int main(void)
{       
        u8 t=0;         

       

        delay_init();                     //Ñóê±oˉêy3õê¼»ˉ       
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// éèÖÃÖD¶ÏóÅÏè¼¶·Ö×é2
        uart_init(9600);         //′®¿ú3õê¼»ˉÎa9600         
        delay_init();                     //Ñóê±oˉêy3õê¼»ˉ          
       
        LED_Init();                                   //3õê¼»ˉóëLEDᬽóμÄó2¼t½ó¿ú
        KEY_Init();                  //3õê¼»ˉóë°′¼üᬽóμÄó2¼t½ó¿ú
       
        while(1)
        {
                t=KEY_Scan(0);                //μÃμ½¼üÖμ
                switch(t)
                {                                 
                        case KEY0_PRES:
                               
                                USART_SendData(USART1, '1');
                        LED0=!LED0;
                        break;
                        case KEY1_PRES:
                          
                          USART_SendData(USART1, '0');
                        LED1=!LED1;
                        break;
                        case WKUP_PRES:                               
                               
                       
                                break;
                        default:
                                delay_ms(10);
                              
                }
        }                 
}
接受程序:
#include "led.h"
#include "delay.h"
#include "sys.h"
#include "key.h"
#include "usart.h"
#include "stm32f10x.h"
//ALIENTEK Mini STM32¿a·¢°å·¶ày′úÂë2
//°′¼üêäèëêμÑé                  
//¼¼êõÖ§3Ö£owww.openedv.com
//1ãÖYêDDÇòíμç×ó¿Æ¼¼óDÏT1«Ë¾
int main(void)
{
  u8 len;         
        u8 t[8];
  u8 s;         
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// éèÖÃÖD¶ÏóÅÏè¼¶·Ö×é2
        uart_init(9600);         //′®¿ú3õê¼»ˉÎa9600
        delay_init();                     //Ñóê±oˉêy3õê¼»ˉ          
        LED_Init();                                   //3õê¼»ˉóëLEDᬽóμÄó2¼t½ó¿ú
        KEY_Init();                  //3õê¼»ˉóë°′¼üᬽóμÄó2¼t½ó¿ú
        //LED0=0;                                        //μãááLED
        while(1)
        {
                       
                if(USART_RX_STA&0x8000)
                {       
               
                        len=USART_RX_STA&0x3fff;//μÃμ½′Ë′νóêÕμ½μÄêy¾Y3¤¶è
                        for(s=0;s<len;s++)
                        {
                               
                        t=USART_RX_BUF;}
                                while((USART1->SR&0X40)==0);//μè′y·¢&#203;í&#189;áê&#248;
                        USART_RX_STA=0;
        //printf("\r\n\r\n");//2&#229;è&#235;&#187;&#187;DD
                switch(t[0])
                {                                 
                        case '0':
                                LED0=!LED0;
                                break;
                        case '1':
                                LED1=!LED1;
                                break;
                       
                        default:
                                delay_ms(10);       
                       
                }
               
           
                }
        }                 
}

用的是原子哥的按键历程修改,加的串口程序,一个发送:按键1按下,发送‘1’,按键2按下发送‘2’。一个接收,接收到‘1’,led1亮,接收到‘2’,led2亮。分别单独用用电脑串口助手测试是成功的,将两个板子用一个电源供电,PA9,PA10相互反接,没有现象,求助大佬是什么原因?

最佳答案

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

1:首先 接线有没有错,没错的话吧板子的rx 和tx 短接看能不能正常收发,确保板子串口硬件没问题。 2:如果板子串口硬件没问题,接线也没问题检查GND 是否正常连接,两块板子如果不是同一个电源供电,那么参考电位是不一样的,不能正常触发高低电位信号,具体要看供电电源的情况,不能盲目短接GND,有的复杂的供电系统 GND 电势不一样,短接GND容易烧板子,最简单的做法就是 用同一个共GND的电源供电,比如两块板子都用同一台电脑 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

7

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
125
金钱
125
注册时间
2016-4-3
在线时间
37 小时
发表于 2018-10-19 21:00:48 | 显示全部楼层
本帖最后由 jaems 于 2018-10-21 12:02 编辑

1:首先 接线有没有错,没错的话吧板子的rx 和tx 短接看能不能正常收发,确保板子串口硬件没问题。
2:如果板子串口硬件没问题,接线也没问题检查GND 是否正常连接,两块板子如果不是同一个电源供电,那么参考电位是不一样的,不能正常触发高低电位信号,具体要看供电电源的情况,不能盲目短接GND,有的复杂的供电系统 GND 电势不一样,短接GND容易烧板子,最简单的做法就是 用同一个共GND的电源供电,比如两块板子都用同一台电脑的USB 供电就没有这个问题了,
回复

使用道具 举报

4

主题

163

帖子

0

精华

高级会员

Rank: 4

积分
955
金钱
955
注册时间
2018-9-7
在线时间
115 小时
发表于 2018-10-22 11:26:17 | 显示全部楼层
2楼大哥,nice
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
2
金钱
2
注册时间
2018-12-24
在线时间
0 小时
发表于 2018-12-24 10:29:31 | 显示全部楼层
请问你的问题解决了吗?
是如何解决的?

我也遇到同样的问题,两块板子分别于PC通信没任何问题,但是互相通信不行。两块板子公用同一个电源,PA9,PA10交叉连接
回复

使用道具 举报

109

主题

5564

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10572
金钱
10572
注册时间
2017-2-18
在线时间
1914 小时
发表于 2018-12-27 22:25:25 | 显示全部楼层
勾瑞 发表于 2018-12-24 10:29
请问你的问题解决了吗?
是如何解决的?

明天有时间的话我写个程序,你测试看看
回复

使用道具 举报

109

主题

5564

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10572
金钱
10572
注册时间
2017-2-18
在线时间
1914 小时
发表于 2018-12-28 17:32:06 | 显示全部楼层
勾瑞 发表于 2018-12-24 10:29
请问你的问题解决了吗?
是如何解决的?

参考这个帖子:http://www.openedv.com/forum.php?mod=viewthread&tid=285930
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-22 21:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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