两个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相互反接,没有现象,求助大佬是什么原因?

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。