STM32F407串口通信

2019-07-20 09:46发布

我按照教程配置库函数,发送数据,会是不是出现乱码,我以为是,没有接收完又再次发送数据的原因,我又下载例程,发现PC端接收到的数据还是乱码是什么原因啊?[mw_shl_code=c,true]void uart_init(u32 bound){
   //GPIO¶Ë¿ÚÉèÖÃ
  GPIO_InitTypeDef GPIO_InitStructure;
        USART_InitTypeDef USART_InitStructure;
        NVIC_InitTypeDef NVIC_InitStructure;
       
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE); //ʹÄÜGPIOAʱÖÓ
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);//ʹÄÜUSART1ʱÖÓ

        //´®¿Ú1¶ÔÓ¦Òý½Å¸´ÓÃÓ³Éä
        GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_USART1); //GPIOA9¸´ÓÃΪUSART1
        GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_USART1); //GPIOA10¸´ÓÃΪUSART1
       
        //USART1¶Ë¿ÚÅäÖÃ
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10; //GPIOA9ÓëGPIOA10
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//¸´Óù¦ÄÜ
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;        //ËÙ¶È50MHz
        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //ÍÆÍ츴ÓÃÊä³ö
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; //ÉÏÀ­
        GPIO_Init(GPIOA,&GPIO_InitStructure); //³õʼ»&macrA9£&notA10

   //USART1 ³õʼ»¯ÉèÖÃ
        USART_InitStructure.USART_BaudRate = bound;//²¨ÌØÂÊÉèÖÃ
        USART_InitStructure.USART_WordLength = USART_WordLength_8b;//×Ö³¤Îª8λÊý¾Ý¸ñʽ
        USART_InitStructure.USART_StopBits = USART_StopBits_1;//Ò»¸öֹͣλ
        USART_InitStructure.USART_Parity = USART_Parity_No;//ÎÞÆæżУÑéλ
        USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//ÎÞÓ²¼þÊý¾ÝÁ÷¿ØÖÆ
        USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;        //ÊÕ·¢Ä£Ê½
  USART_Init(USART1, &USART_InitStructure); //³õʼ»¯´®¿Ú1
       
  USART_Cmd(USART1, ENABLE);  //ʹÄÜ´®¿Ú1
       
        //USART_ClearFlag(USART1, USART_FLAG_TC);
       
#if EN_USART1_RX       
        USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//¿ªÆôÏà¹ØÖжÏ

        //Usart1 NVIC ÅäÖÃ
  NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;//´®¿Ú1ÖжÏͨµÀ
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3;//ÇÀÕ¼ÓÅÏȼ¶3
        NVIC_InitStructure.NVIC_IRQChannelSubPriority =3;                //×ÓÓÅÏȼ¶3
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                        //IRQͨµÀʹÄÜ
        NVIC_Init(&NVIC_InitStructure);        //¸ù¾ÝÖ¸¶¨µÄ²ÎÊý³õʼ»¯VIC¼Ä´æÆ÷¡¢

#endif
       
}


void USART1_IRQHandler(void)                        //´®¿Ú1ÖжϷþÎñ³ÌÐò
{
        u8 Res;
#if SYSTEM_SUPPORT_OS                 //Èç¹ûSYSTEM_SUPPORT_OSΪÕ棬ÔòÐèÒªÖ§³ÖOS.
        OSIntEnter();   
#endif
        if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)  //½ÓÊÕÖжÏ(½ÓÊÕµ½µÄÊý¾Ý±ØÐëÊÇ0x0d 0x0a½áβ)
        {
                Res =USART_ReceiveData(USART1);//(USART1->DR);        //¶ÁÈ¡½ÓÊÕµ½µÄÊý¾Ý
               
                if((USART_RX_STA&0x8000)==0)//½ÓÊÕδÍê³É
                {
                        if(USART_RX_STA&0x4000)//½ÓÊÕµ½ÁË0x0d
                        {
                                if(Res!=0x0a)USART_RX_STA=0;//½ÓÊÕ´íÎó,ÖØпªÊ¼
                                else USART_RX_STA|=0x8000;        //½ÓÊÕÍê³ÉÁË
                        }
                        else //»¹Ã»ÊÕµ½0X0D
                        {       
                                if(Res==0x0d)USART_RX_STA|=0x4000;
                                else
                                {
                                        USART_RX_BUF[USART_RX_STA&0X3FFF]=Res ;
                                        USART_RX_STA++;
                                        if(USART_RX_STA>(USART_REC_LEN-1))USART_RX_STA=0;//½ÓÊÕÊý¾Ý´íÎó,ÖØпªÊ¼½ÓÊÕ          
                                }                 
                        }
                }                    
  } [/mw_shl_code]
这是乱码的图片

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
eieieiei
1楼-- · 2019-07-20 12:40
 精彩回答 2  元偷偷看……
Noctis
2楼-- · 2019-07-20 13:20
你调用uart_init时传入的参数是115200吗?
Miracle223
3楼-- · 2019-07-20 19:05
 精彩回答 2  元偷偷看……
eieieiei
4楼-- · 2019-07-20 20:32
 精彩回答 2  元偷偷看……
eieieiei
5楼-- · 2019-07-20 23:57
Miracle223 发表于 2018-1-25 10:39
看看程序里波特率设置的对不对。。

[mw_shl_code=c,true]int main(void)
{

        u8 t;
        u8 len;       
        u16 times=0;  
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//ÉèÖÃϵͳÖжÏÓÅÏȼ¶·Ö×é2
        delay_init(168);                //ÑÓʱ³õʼ»¯
        uart_init(115200);        //´®¿Ú³õʼ»¯²¨ÌØÂÊΪ115200
        LED_Init();                                  //³õʼ»¯ÓëLEDÁ¬½ÓµÄÓ²¼þ½Ó¿Ú  
        while(1)
        {
                if(USART_RX_STA&0x8000)
                {                                          
                        len=USART_RX_STA&0x3fff;//µÃµ½´Ë´Î½ÓÊÕµ½µÄÊý¾Ý³¤¶È
                        printf(" Äú·¢Ë͵ÄÏûϢΪ: ");
                        for(t=0;t<len;t++)
                        {
                                USART_SendData(USART1, USART_RX_BUF[t]);         //&Iuml;ò&acute;&reg;&iquest;&Uacute;1·&cent;&Euml;&Iacute;&Ecirc;&yacute;&frac34;&Yacute;
                                while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//&micro;&Egrave;&acute;&yacute;·&cent;&Euml;&Iacute;&frac12;á&Ecirc;&oslash;
                        }
                        printf(" ");//&sup2;&aring;&Egrave;&euml;&raquo;&raquo;&ETH;&ETH;
                        USART_RX_STA=0;
                }else
                {
                        times++;
                        if(times%5000==0)
                        {
                                printf(" ALIENTEK &Igrave;&frac12;&Euml;÷&Otilde;&szlig;STM32F407&iquest;&ordf;·&cent;°&aring; &acute;&reg;&iquest;&Uacute;&Ecirc;&micro;&Ntilde;é ");
                                printf("&Otilde;&yacute;&micro;&atilde;&Ocirc;&shy;×&Oacute;@ALIENTEK ");
                        }
                        if(times%200==0)printf("&Ccedil;&euml;&Ecirc;&auml;&Egrave;&euml;&Ecirc;&yacute;&frac34;&Yacute;,&Ograve;&Ocirc;&raquo;&Oslash;&sup3;&micro;&frac14;ü&frac12;á&Ecirc;&oslash; ");  
                        if(times%30==0)LED0=!LED0;//&Eacute;&Aacute;&Euml;&cedil;LED,&Igrave;á&Ecirc;&frac34;&Iuml;&micro;&Iacute;&sup3;&Otilde;&yacute;&Ocirc;&Uacute;&Ocirc;&Euml;&ETH;&ETH;.
                        delay_ms(10);   
                }
        }
}[/mw_shl_code]
Noctis
6楼-- · 2019-07-21 05:38
看你的图片好像你发的都的中文,有没有试过发英文字符?

一周热门 更多>