隐者-423522 发表于 2014-3-21 15:03:59

STM32串口通讯的问题

                        STM32串口通讯的问题                                                            在对USART初始化后,每次上电发送的第一个数据总没有,后续的数据全部正常,是否还需要对哪个标志位进行配置呢?
            初始化代码  
             /* USART5 mode config */
             USART_InitStructure.USART_BaudRate = 9600;  //115200
             USART_InitStructure.USART_WordLength = USART_WordLength_8b;
             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(UART5, &USART_InitStructure); 
             USART_Cmd(UART5, ENABLE);
            发送 代码    
            USART_SendData(UART5 , shuju);
                  while( USART_GetFlagStatus(UART5, USART_FLAG_TC) == RESET );
             
            
            
                                              STM32串口通讯的问题                                                            在对USART初始化后,每次上电发送的第一个数据总没有,后续的数据全部正常,是否还需要对哪个标志位进行配置呢?
            初始化代码  
             /* USART5 mode config */
             USART_InitStructure.USART_BaudRate = 9600;  //115200
             USART_InitStructure.USART_WordLength = USART_WordLength_8b;
             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(UART5, &USART_InitStructure); 
             USART_Cmd(UART5, ENABLE);
            发送 代码    
            USART_SendData(UART5 , shuju);
                  while( USART_GetFlagStatus(UART5, USART_FLAG_TC) == RESET );
             
            
            
                      在对USART初始化后,每次上电发送的第一个数据总不能用串口工具接收到,后续的数据全部正常,是否还需要对哪个标志位进行配置呢?
初始化代码 
 /* USART5 mode config */
 USART_InitStructure.USART_BaudRate = 9600;  //115200
 USART_InitStructure.USART_WordLength = USART_WordLength_8b;
 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(UART5, &USART_InitStructure);
 USART_Cmd(UART5, ENABLE);
发送 代码   
USART_SendData(UART5 , shuju);
      while( USART_GetFlagStatus(UART5, USART_FLAG_TC) == RESET );
 

那片清茶 发表于 2014-3-21 15:43:48

回复:STM32串口通讯的问题

你把发送 代码改成:
while(USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET);
    USART_SendData(USART2, byte);
试试

隐者-423522 发表于 2014-3-21 16:25:40

RE:STM32串口通讯的问题

仿真了半天,单步执行都可以的。但是循环执行就出错。
改成
while( USART_GetFlagStatus(UART5, USART_FLAG_TC) == RESET );
USART_SendData(UART5 , shuju);
就没有问题了。

隐者-423522 发表于 2014-3-21 16:26:19

回复:STM32串口通讯的问题

回复第 2 楼 于2014-03-21 15:43:48发表:
你把发送 代码改成:
while(USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET);
USART_SendData(USART2, byte);
试试 

请问 判断TXE和TC 有什么区别呢?

那片清茶 发表于 2014-3-21 17:07:04

回复:STM32串口通讯的问题

  TC不对的原因是没有清除TC标记,,你可以去网上找找关于这个方面的问题,很多人跟你一样的错误。
页: [1]
查看完整版本: STM32串口通讯的问题