AnsweredAssumed Answered

USART and Hyperterminal

Question asked by marchetti.simone on Jul 31, 2013
Latest reply on Jul 31, 2013 by Clive One
Hi,
I create on my stm3220G evaluation board an example with USART. The code:
#include <stm32f2xx.h>
#include <misc.h>            // I recommend you have a look at these in the ST firmware folder
#include <stm32f2xx_usart.h> // under Libraries/STM32F4xx_StdPeriph_Driver/inc and src
#include "stm32f2xx_gpio.h"
 
volatile char StringLoop[] = "The quick brown fox jumps over the lazy dog\r\n";
  
//**************************************************************************************
int main(void)
{
  USART_InitTypeDef USART_InitStructure;
  GPIO_InitTypeDef GPIO_InitStructure;
  NVIC_InitTypeDef NVIC_InitStructure;
    
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
    
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
     
     
  GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_USART1);
  GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_USART1);
    
    /* USART1 Rx */
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
    GPIO_Init(GPIOA, &GPIO_InitStructure);
 
    /* USART1 Tx */
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
    GPIO_Init(GPIOA, &GPIO_InitStructure);
  
  /* Enable USART1 IRQ */
    NVIC_ClearPendingIRQ(USART1_IRQn);
  NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
     
    
  USART_InitStructure.USART_BaudRate = 9600;
  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(USART1, &USART_InitStructure);
    
   
  
  USART_ITConfig(USART1, USART_IT_TXE, ENABLE);
  
  USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
 
  USART_Cmd(USART1,ENABLE);
  while(1); // Don't want to exit
}
  
 
 
//**************************************************************************************
  
void USART1_IRQHandler(void)
{
  static int tx_index = 0;
  static int rx_index = 0;
    
  if (USART_GetITStatus(USART1, USART_IT_TXE) != RESET) // Transmit the string in a loop
  {
    USART_SendData(USART1, StringLoop[tx_index++]);
    
    if (tx_index >= (sizeof(StringLoop) - 1))
      tx_index = 0;
  }
    
  if (USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) // Received characters modify string
  {
    StringLoop[rx_index++] = USART_ReceiveData(USART1);
    
    if (rx_index >= (sizeof(StringLoop) - 1))
      rx_index = 0;
  }
}

When I use hyperterminal, I don't see anything. why?? I set hyperterminal with the same properties of USART. 

THANKS

Outcomes