Salut à tous
je veux faire un test de l'UART en mode loopback. "Un test loopback veut dire qu'on court-circuite les deux broches afin que l'on transmet avec TX on le reçoit avec RX."
Je travaille avec la carte STM32F4 Discovery. Je choisis USART3 (USART3_TX (PD8) et USART_RX (PD9)).
Je prépare donc mon programme et je fais le test mais sans résultat,voila mon programme main :


#include "stm32f4xx.h"

/* Private typedef -----------------------------------------------------------*/
GPIO_InitTypeDef GPIO_InitStructure;

/* Private define ------------------------------------------------------------*/
#define USART USART3
#define USART_GPIO GPIOD
#define USART_CLK RCC_APB1Periph_USART3
#define USART_GPIO_CLK RCC_APB1Periph_GPIOD
#define USART_RxPin GPIO_Pin_9
#define USART_TxPin GPIO_Pin_8

/* Private variables ---------------------------------------------------------*/
USART_InitTypeDef USART_InitStructure;
uint8_t RxBuffer_UART;
uint8_t envoi_USART3;

/* Private function prototypes -----------------------------------------------*/
void LEDInit();
void LEDOff(Led_TypeDef Led);
void LEDOn(Led_TypeDef Led);
void delay(void);
void RCC_Configuration(void);
void GPIO_Configuration(void);

int main(void)
{
/* System Clocks Configuration */
RCC_Configuration();

/* Configure the GPIO ports */
GPIO_Configuration();

/* USART configured as follow:
- BaudRate = 9600 baud
- Word Length = 8 Bits
- One Stop Bit
- No parity
- Hardware flow control disabled (RTS and CTS signals)
- Receive and transmit enabled
*/
USART_InitStructure.USART_Baud Rate = 9600;
USART_InitStructure.USART_Word Length = USART_WordLength_8b;
USART_InitStructure.USART_Stop Bits = USART_StopBits_1;
USART_InitStructure.USART_Pari ty = USART_Parity_No;
USART_InitStructure.USART_Hard wareFlowControl = USART_HardwareFlowControl_None ;
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;

/* Configure USART */
USART_Init(USART, &USART_InitStructure);

/* Enable the USART */
USART_Cmd(USART, ENABLE);

/* Infinite loop */
while(1)
{ envoi_USART3=0x66; // je change cette valeur pendant chaque test pour la visualiser
USART_SendData(USART3,envoi_US ART3);

while (USART_GetFlagStatus(USART, USART_FLAG_RXNE) ==RESET) //indicateur de message en attente dans le buffer de USART3
{}
RxBuffer_UART = USART_ReceiveData(USART); //pendant le test le contenu de RxBuffer_UART est toujours vide !!???
} // fin de while
} // fin de main


/*activation de l'horloge*/
void RCC_Configuration(void)
{
/* Enable GPIO clock */
RCC_AHB1PeriphClockCmd(RCC_AHB 1Periph_GPIOD, ENABLE);

/* Enable USART Clock */
RCC_APB1PeriphClockCmd(RCC_APB 1Periph_USART3, ENABLE);
}


/* configuration GPIO*/
void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;

/* Configure USART Tx as alternate function push-pull */
GPIO_InitStructure.GPIO_Pin = USART_TxPin;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_Init(USART_GPIO, &GPIO_InitStructure);

/* Configure USART Rx as input floating */
GPIO_InitStructure.GPIO_Pin = USART_RxPin;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
GPIO_Init(USART_GPIO, &GPIO_InitStructure);

/* Connect PXx to USARTx_Tx*/
GPIO_PinAFConfig(GPIOD,GPIO_Pi n_8,GPIO_AF_USART3);

/* Connect PXx to USARTx_Rx*/
GPIO_PinAFConfig(GPIOD, GPIO_Pin_9, GPIO_AF_USART3);
}

SVP ya t'il quelqu'un qui peut m'aider !!!
merci d'avance
cordialement Etudiant_GEII