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

2019-07-21 06:17发布

发送程序:
#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(" ");//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相互反接,没有现象,求助大佬是什么原因?

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
jaems
1楼-- · 2019-07-21 08:14
本帖最后由 jaems 于 2018-10-21 12:02 编辑

1:首先 接线有没有错,没错的话吧板子的rx 和tx 短接看能不能正常收发,确保板子串口硬件没问题。
2:如果板子串口硬件没问题,接线也没问题检查GND 是否正常连接,两块板子如果不是同一个电源供电,那么参考电位是不一样的,不能正常触发高低电位信号,具体要看供电电源的情况,不能盲目短接GND,有的复杂的供电系统 GND 电势不一样,短接GND容易烧板子,最简单的做法就是 用同一个共GND的电源供电,比如两块板子都用同一台电脑的USB 供电就没有这个问题了,
今晚啃母猪丶
2楼-- · 2019-07-21 10:28
 精彩回答 2  元偷偷看……
勾瑞
3楼-- · 2019-07-21 14:12
请问你的问题解决了吗?
是如何解决的?

我也遇到同样的问题,两块板子分别于PC通信没任何问题,但是互相通信不行。两块板子公用同一个电源,PA9,PA10交叉连接
peng1554
4楼-- · 2019-07-21 17:52
勾瑞 发表于 2018-12-24 10:29
请问你的问题解决了吗?
是如何解决的?

明天有时间的话我写个程序,你测试看看
peng1554
5楼-- · 2019-07-21 21:10
勾瑞 发表于 2018-12-24 10:29
请问你的问题解决了吗?
是如何解决的?

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

一周热门 更多>