STM32F407的串口通信问题求助??

2019-07-20 23:03发布

由于是新手,也没什么积分所以发的帖子性质不对还望见谅,下面是我自己配置的USART1的代码,主要就是想实现查询方式的简单收发,但是发现根本收不到数据,主函数的while循环中的条件语句执行不下去。因为经验很有限没有找到问题所在,还望论坛的朋友们能够指点解惑。
void init_usart(u32 baud){
        GPIO_InitTypeDef GPIOA_Init;
        USART_InitTypeDef USART1_Init;
       
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);

       
        GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_USART1);
        GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_USART1);
       
        GPIOA_Init.GPIO_Pin=GPIO_Pin_9|GPIO_Pin_10;
        GPIOA_Init.GPIO_Mode=GPIO_Mode_AF;
        GPIOA_Init.GPIO_Speed=GPIO_Speed_50MHz;
        GPIOA_Init.GPIO_OType= GPIO_OType_PP;
        GPIOA_Init.GPIO_PuPd=GPIO_PuPd_UP;
        GPIO_Init(GPIOA,&GPIOA_Init);
       
       
        USART1_Init.USART_BaudRate=baud;
        USART1_Init.USART_Mode=USART_HardwareFlowControl_None;
        USART1_Init.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;
        USART1_Init.USART_Parity=USART_Parity_No;
        USART1_Init.USART_StopBits=USART_StopBits_1;
        USART1_Init.USART_WordLength=USART_WordLength_8b;
        USART_Init(USART1,&USART1_Init);
        USART_Cmd(USART1,ENABLE);       
}
int main()
{
        init_usart(115200);

        while(1){
                if(USART_GetFlagStatus(USART1, USART_FLAG_RXNE)==SET){
                  USART_SendData(USART1,USART_ReceiveData(USART1));
                  while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
                }
               
        }
}

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