Posted on:
Hi, While configuring my STM32F107's USART, there is a random byte outputted on the tx-pin. A modem that is connected to the serial port gets confused by this random byte and refuses to work. Here's the initialization code:
AFIO->MAPR &= ~(AFIO_MAPR_USART2_REMAP); /* clear USART2 remap */
RCC->APB2ENR |= RCC_APB2ENR_AFIOEN; /* enable clock for Alternate Function */
AFIO->MAPR |= AFIO_MAPR_USART2_REMAP; /* set USART2 remap */
RCC->APB2ENR |= RCC_APB2ENR_IOPDEN; /* enable clock for GPIOD */
GPIOD->CRL &= ~(0xFFUL << 20); /* Clear PD5, PD6 */
GPIOD->CRL |= (0x0BUL << 20); /* USART2 Tx (PD5) alternate output push-pull */
GPIOD->CRL |= (0x04UL << 24); /* USART2 Rx (PD6) input floating */
|
The random byte appears with the configuration for pin PD5 as alternate output push-pull. Any hints or ideas on how to not get this rubbish-byte on initialization? Thanks! -- Regards
Posted on:
If the USART is configured after the pins have been defined as alternate function, the intial state of Tx could be undefined.
Posted on:
So you mean the order of the initialization is wrong? Configuring the GPIO pins first and then the alternate function?