STM32F0308 USART set up
Hi,
I am having trouble getting some basic USART up and running on the STM32F0308-DISCO board. I have tried both sending and receiving and don't seem to see anything coming through on either end. My code is as follows:
Thanks in advance.
#include 'stm32f0xx.h'
#include 'string.h' #define BSRR_VAL 0x0300 void usart_init( void );/*-----------------------------------------------------------------------------*/
void usart_init( void ) { USART_InitTypeDef USART_InitStructure; GPIO_InitTypeDef GPIO_InitStructure;RCC_AHBPeriphClockCmd( RCC_AHBPeriph_GPIOB, ENABLE );
RCC_APB2PeriphClockCmd( RCC_APB2Periph_USART1, ENABLE );/* Configure USART2 pins */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | 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_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_Init( GPIOB, &GPIO_InitStructure ); GPIO_PinAFConfig( GPIOB, GPIO_PinSource8, GPIO_AF_1 ); GPIO_PinAFConfig( GPIOB, GPIO_PinSource9, GPIO_AF_1 );/* Config USART */
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_Cmd( USART1, ENABLE );
}/*-----------------------------------------------------------------------------*/
void output_init( void )
{ RCC_AHBPeriphClockCmd( RCC_AHBPeriph_GPIOC, ENABLE );GPIO_InitTypeDef GPIO_InitStructure;
GPIO_StructInit( &GPIO_InitStructure ); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init( GPIOC, &GPIO_InitStructure ); } /*-----------------------------------------------------------------------------*/int main(void)
{output_init();
usart_init(); while (1) { //usart_send_str( 'moving to 180' ); //while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET); //USART_SendData( USART1, (uint8_t)'X' ); while ( USART_GetFlagStatus( USART1, USART_FLAG_RXNE) == RESET );char ch = (char)USART_ReceiveData( USART1 );
if ( ch == 'o' ) GPIOC->BSRR = BSRR_VAL; else if ( ch == 'f' ) GPIOC->BRR = BSRR_VAL; } } #stm32f0 #usart Note: this post was migrated and contained many threaded conversations, some content may be missing.