AnsweredAssumed Answered

Trouble with USART_ReceiveData() and STM32F103 with Tera Term

Question asked by thompson.leah on May 29, 2015
Latest reply on May 29, 2015 by Clive One

I would like assistance in determining why I cannot properly use the USART_ReceiveData() function with my SMT32F103RE. I have been using Tera Term with a SparkFun FT232R usb to serial breakout board. Printing to Tera Term works fine, however, Our code can print from the board to Tera Term, but when we enter input from Tera Term using the USART_ReceiveData() function, it does not read the input. Perhaps I should be using another terminal emulator, or my code is off somehow. Here is the code:

 void InitDebug (void)
                 USART_InitTypeDef USART_InitStructure;
                 GPIO_InitTypeDef GPIO_InitStructure;
                 RCC_APB2PeriphClockCmd (DBG_COM_GpIO_CLK, ENABLE);
                 RCC_APB1PeriphClockCmd (DBG_COM_USART_CLK, ENABLE);
                 // Configure DBG_COM_Tx as alternate function push-pull
                 GPIO_InitStructure.GPIO_Pin          = DBG_COM_TX_GpIO_PIN;
                 GPIO_InitStructure.GPIO_Speed     = GPIO_Speed_50MHz;
                 GPIO_InitStructure.GPIO_Mode     = GPIO_Mode_AF_PP;
                 GPIO_Init (DBG_COM_GpIO_PORT, &GPIO_InitStructure);
                 // Configure DBG_COM_Rx as input floating
                 GPIO_InitStructure.GPIO_Pin          = DBG_COM_RX_GpIO_PIN;
                 GPIO_InitStructure.GPIO_Mode     = GPIO_Mode_IN_FLOATING;
                 GPIO_Init (DBG_COM_GpIO_PORT, &GPIO_InitStructure);
                 USART_InitStructure.USART_BaudRate          = 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_Mode = USART_Mode_Rx | USART_Mode_Tx;
                 USART_InitStructure.USART_HardwareFlowControl =  USART_HardwareFlowControl_None;
                 USART_Init (DBG_COM_USART_PORT, &USART_InitStructure);
                    USART_Cmd (DBG_COM_USART_PORT, ENABLE);

            static void getString(USART_TypeDef *com, char dataRecvd) {

                   while(USART_GetFlagStatus(com, USART_FLAG_RXNE) == RESET) {}
                           dataRecvd = USART_ReceiveData(USART1_BASE);
                   if (USART_GetFlagStatus(com, USART_FLAG_RXNE) != RESET)
                          USART_SendData(USART2, dataRecvd);

                      if (dataRecvd == 's')
            void debugScanString(char dataRecvd) {

                   getString(USART1_BASE, dataRecvd);



Any help would be greatly appreciated!