AnsweredAssumed Answered

[STM32F3] UART cannot print if handler is on !?

Question asked by Sage on Apr 7, 2015
Latest reply on Apr 7, 2015 by Sage
As bright as the title suggests, I'm gonna post my setting over here~ Anyone please help me check it.. You have my utmost gratitude :)

My UART4_Handler is empty, there's only a STM_EVAL_LEDToggle(LED4) to check its condition.

void UARTInit(USART_TypeDef* USARTx, unsigned Handler)
{
    /* Configure UARTx pins:  Rx and Tx */
    if(USARTx == UART4){
        GPIOSET(GPIOC, alternate, 10,11, stop);

        GPIO_PinAFConfig(GPIOC, GPIO_PinSource10,  GPIO_AF_5); /*TX*/
        GPIO_PinAFConfig(GPIOC, GPIO_PinSource11, GPIO_AF_5); /*RX*/

        NVIC_InitStructure.NVIC_IRQChannel = UART4_IRQn ;
        USART_ITConfig(USARTx, USART_IT_RXNE, Handler);
        //NVIC_EnableIRQ(UART4_IRQn);
    }else if(USARTx == UART5){

        GPIOSET(GPIOD, alternate, 2, stop);
        GPIO_PinAFConfig(GPIOD, GPIO_PinSource2, GPIO_AF_5); /*RX*/

        GPIOSET(GPIOC, alternate, 12, stop);
        GPIO_PinAFConfig(GPIOC, GPIO_PinSource12,  GPIO_AF_5); /*TX*/

        NVIC_InitStructure.NVIC_IRQChannel = UART5_IRQn ;
        USART_ITConfig(USARTx, USART_IT_RXNE, Handler);
    }else if (USARTx == USART1){
        GPIOSET(GPIOC, alternate, 4, 5, stop);

        GPIO_PinAFConfig(GPIOC, GPIO_PinSource4, GPIO_AF_7); /*TX*/
        GPIO_PinAFConfig(GPIOC, GPIO_PinSource5, GPIO_AF_7); /*RX*/

        NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn ;
        USART_ITConfig(USARTx, USART_IT_RXNE, Handler);
    }else if (USARTx == USART2){
        GPIOSET(GPIOD, alternate, 5, 6, stop);

        GPIO_PinAFConfig(GPIOD, GPIO_PinSource5, GPIO_AF_7); /*TX*/
        GPIO_PinAFConfig(GPIOD, GPIO_PinSource6, GPIO_AF_7); /*RX*/

        NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn ;
        USART_ITConfig(USARTx, USART_IT_RXNE, Handler);
    }else if (USARTx == USART3){
        GPIOSET(GPIOB, alternate, 10, 11, stop);

        GPIO_PinAFConfig(GPIOB, GPIO_PinSource10, GPIO_AF_7); /*TX*/
        GPIO_PinAFConfig(GPIOB, GPIO_PinSource11, GPIO_AF_7); /*RX*/

        NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn ;
        USART_ITConfig(USARTx, USART_IT_RXNE, Handler);
    }
         /* Configure UARTx settings */
     // USART_StructInit(&USART_InitStructure);
        USART_InitStructure.USART_BaudRate = baudrate;
        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(USARTx, &USART_InitStructure);

        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
        NVIC_InitStructure.NVIC_IRQChannelCmd = Handler;
        NVIC_Init(&NVIC_InitStructure);

        USART_Cmd(USARTx , ENABLE);             // Enable USART1
//        NVIC_EnableIRQ(USART1_IRQn);            /*!< USART1 global Interrupt*/ /*havent test */
}

Outcomes