AnsweredAssumed Answered

Usart4 no TX

Question asked by carter.bob on May 15, 2017
Latest reply on May 29, 2017 by carter.bob

Hi Forum,

I'm using the stm32f091RCt6, (LQFP64) to set up USART4

 

Kind Regards

Bob

 

  USART_InitTypeDef USART_InitStructure;
  GPIO_InitTypeDef GPIO_InitStructure;
  NVIC_InitTypeDef NVIC_InitStructure;

 


  // Enable GPIOC clock
  RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC, ENABLE);
 
  // Enable USART3 APB clock
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART4, ENABLE);
    
 
  // Connect pin to Periph
  GPIO_PinAFConfig(GPIOC, GPIO_PinSource10, GPIO_AF_0);   //  USART4 TX
  GPIO_PinAFConfig(GPIOC, GPIO_PinSource11, GPIO_AF_0);   //  USART4 RX
 
  // Configure pins as AF pushpull
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10 | GPIO_Pin_11;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;
  GPIO_Init(GPIOC, &GPIO_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(USART4, &USART_InitStructure);
    
  USART_Cmd(USART4, ENABLE);
      
//  Enable the COM4 Receive interrupt: this interrupt is generated when the
//  COM4 receive data register is not empty
  USART_ITConfig(USART4, USART_IT_RXNE, ENABLE);

 

  // USART4 IRQ Channel configuration
  NVIC_InitStructure.NVIC_IRQChannel = USART3_8_IRQn;   

  NVIC_InitStructure.NVIC_IRQChannelPriority = 1;


  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);

 

Although I can receive data I cannot get any TX at all.  I have usart1 and usart2 working fine. not sure what is is. I've buzzed out all the board connections and they are fine. Looking at the clock tree on page16 of the datasheet, I notice PCLK only goes to usart1, usart2 and usart3. Does usart4 need some aqlternative form of clocking? The datasheet really doesnt say to much about usarts4 to 8 and there are no app notes out there to refer to so i'm stuck at this point.

 

Thanks for any help.

 

Regards Bob

Outcomes