STM32F407探索者开发板与科大讯飞语音板,双串口通信,大神给看一下程序那里有问题?

2019-07-20 18:16发布

想要实现的功能是电脑通过串口2给开发板发送数据,然后开发板将收到的数据通过串口1发送给语音合成芯片进行语音合成,

#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "beep.h"
#include "key.h"


//ALIENTEK ì½Ë÷ÕßSTM32F407¿a·¢°å êμÑé4
//′®¿úí¨DÅêμÑé -¿aoˉêy°æ±¾
//¼¼êõÖ§3Ö£owww.openedv.com
//ìÔ±|μêÆì£ohttp://eboard.taobao.com
//1ãÖYêDDÇòíμç×ó¿Æ¼¼óDÏT1«Ë¾  
//×÷ÕߣoÕyμãÔ-×ó @ALIENTEK


/**************D¾Æ¬éèÖÃÃüáî*********************/
uint8_t XFS_StopCom[]={0xFD,0X00,0X01,0X02};//í£Ö1oÏ3é
uint8_t XFS_SuspendCom[]={0XFD,0X00,0X01,0X03};//ÔYí£oÏ3é
uint8_t XFS_RecoverCom[]={0XFD,0X00,0X01,0X04};//»Ö¸′oÏ3é
uint8_t XFS_ChackCom[]={0XFD,0X00,0X01,0X21};//×′ì¬2éÑˉ
uint8_t XFS_PowerDownCom[]={0XFD,0X00,0X01,0X88};//½øè&#235OWER DOWN ×′ì¬Ãüáî

/***********************************************/

void PrintCom(u8 *buffer,unsigned  int len)
{
        int i = 0;
       
        for(i=0;i<len;i++)
        {
                USART_SendData(USART1,USART_ReceiveData(USART2) );         //&#207;ò′&#174;&#191;ú1·¢&#203;íêy&#190;Y
                while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//μè′y·¢&#203;í&#189;áê&#248;
        }
}


void XFS_FrameInfo(uint8_t *HZdata)
{
/****************Dèòa·¢&#203;íμ&#196;&#206;&#196;±&#190;**********************************/
                 unsigned  char  Frame_Info[50]; //&#182;¨ò&#229;μ&#196;&#206;&#196;±&#190;3¤&#182;è
     unsigned  int  HZ_Length;  
           unsigned  int  i=0;
                 HZ_Length =strlen(HZdata);                         //Dèòa·¢&#203;í&#206;&#196;±&#190;μ&#196;3¤&#182;è
                 
/*****************&#214;&#161;1ì&#182;¨&#197;&#228;&#214;&#195;D&#197;&#207;¢**************************************/           
                 Frame_Info[0] = 0xFD ;                         //11&#212;ì&#214;&#161;í·FD
                 Frame_Info[1] = 0x00 ;                         //11&#212;ìêy&#190;Y&#199;&#248;3¤&#182;èμ&#196;&#184;&#223;×&#214;&#189;ú
                 Frame_Info[2] = HZ_Length+2;                 //11&#212;ìêy&#190;Y&#199;&#248;3¤&#182;èμ&#196;μí×&#214;&#189;ú
                 Frame_Info[3] = 0x01 ;                         //11&#212;ì&#195;üá&#238;×&#214;£oo&#207;3é2¥·&#197;&#195;üá&#238;                                  
                 Frame_Info[4] = 0x01;       //&#206;&#196;±&#190;±à&#194;&#235;&#184;&#241;ê&#189;£oGBK

/*******************·¢&#203;í&#214;&#161;D&#197;&#207;¢***************************************/                  
     memcpy(&Frame_Info[5], HZdata, HZ_Length);
                 PrintCom(Frame_Info,5+HZ_Length); //·¢&#203;í&#214;&#161;&#197;&#228;&#214;&#195;
}
int sendflag = 0;
int sendflag1= 0;
int sendflag2= 0;
int main(void)
{

        u16 t;
  u16 rx;       
  u8 len;
        u16 times=0;
        //USART_SendData(USART2, USART2_RX_BUF[t]);         //&#207;ò′&#174;&#191;ú2·¢&#203;íêy&#190;Y
        USART_ReceiveData(USART2);         //&#207;ò′&#174;&#191;ú2·¢&#203;íêy&#190;Y
       
  //while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET);//μè′y·¢&#203;í&#189;áê&#248;
       
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//éè&#214;&#195;&#207;μí3&#214;D&#182;&#207;ó&#197;&#207;è&#188;&#182;·&#214;×é2
        delay_init(168);                //&#209;óê±3&#245;ê&#188;&#187;ˉ
        uart_init(9600);        //′&#174;&#191;ú3&#245;ê&#188;&#187;ˉ2¨ì&#216;&#194;ê&#206;a115200
        LED_Init();                                  //3&#245;ê&#188;&#187;ˉó&#235;LEDá&#172;&#189;óμ&#196;ó2&#188;t&#189;ó&#191;ú  
       

        while(1)
{
       
         XFS_FrameInfo("[v1][m3]·¢&#203;í");
                        delay_ms(1000);
                if(QueueMemDataDel(&rx)==0)
                {
                        if(rx == 0x41)
                        {
                                sendflag = 1;
                        }

                }

                if(sendflag == 1)
                {
                        XFS_FrameInfo("[v1][m54]·¢&#203;í");
                        //XFS_FrameInfo("[m55][v1]&#196;&#227;o&#195;&#196;&#227;o&#195;");
                        if(times%300==0)LED0=!LED0;//éá&#203;&#184;LED,ìáê&#190;&#207;μí3&#213;y&#212;ú&#212;&#203;DD.
                }
                delay_ms(1000);
               

                       
                                               
        }
}


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