diff --git a/bsp/stm3210/board.c b/bsp/stm3210/board.c index 015b9921535087c53c309a52d48f6e12b96b37b7..27da518e4b00e291a579d2e64146696bf5a46c27 100644 --- a/bsp/stm3210/board.c +++ b/bsp/stm3210/board.c @@ -19,8 +19,6 @@ #include "stm32f10x_fsmc.h" #include "board.h" -static void rt_hw_console_init(void); - /** * @addtogroup STM32 */ @@ -176,139 +174,8 @@ void rt_hw_board_init() EXT_SRAM_Configuration(); #endif - rt_hw_console_init(); -} - -#if STM32_CONSOLE_USART == 1 -#define CONSOLE_TX_PIN GPIO_Pin_9 -#define CONSOLE_RX_PIN GPIO_Pin_10 -#define CONSOLE_GPIO GPIOA -#define CONSOLE_USART USART1 -#define CONSOLE_RCC RCC_APB2Periph_USART1 -#define CONSOLE_RCC_GPIO RCC_APB2Periph_GPIOA -#elif STM32_CONSOLE_USART == 2 - -#if defined(STM32F10X_LD) || defined(STM32F10X_MD) || defined(STM32F10X_CL) -#define CONSOLE_TX_PIN GPIO_Pin_5 -#define CONSOLE_RX_PIN GPIO_Pin_6 -#define CONSOLE_GPIO GPIOD -#define CONSOLE_RCC RCC_APB1Periph_USART2 -#define CONSOLE_RCC_GPIO RCC_APB2Periph_GPIOD -#elif defined(STM32F10X_HD) -#define CONSOLE_TX_PIN GPIO_Pin_2 -#define CONSOLE_RX_PIN GPIO_Pin_3 -#define CONSOLE_GPIO GPIOA -#define CONSOLE_RCC RCC_APB1Periph_USART2 -#define CONSOLE_RCC_GPIO RCC_APB2Periph_GPIOA -#endif - -#define CONSOLE_USART USART2 -#elif STM32_CONSOLE_USART == 3 -#define CONSOLE_TX_PIN GPIO_Pin_10 -#define CONSOLE_RX_PIN GPIO_Pin_11 -#define CONSOLE_GPIO GPIOB -#define CONSOLE_USART USART3 -#define CONSOLE_RCC RCC_APB1Periph_USART3 -#define CONSOLE_RCC_GPIO RCC_APB2Periph_GPIOB -#endif - -/* init console to support rt_kprintf */ -static void rt_hw_console_init() -{ -#if STM32_CONSOLE_USART == 0 -#else - /* Enable GPIOx clock */ - RCC_APB2PeriphClockCmd(CONSOLE_RCC_GPIO, ENABLE); - -#if STM32_CONSOLE_USART == 1 - /* Enable USART1 and GPIOA clocks */ - RCC_APB2PeriphClockCmd(CONSOLE_RCC, ENABLE); -#else - RCC_APB1PeriphClockCmd(CONSOLE_RCC, ENABLE); -#endif - -#if (STM32_CONSOLE_USART == 2) && (defined(STM32F10X_LD) || defined(STM32F10X_MD) || defined(STM32F10X_CL)) - /* Enable AFIO clock */ - RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); - - /* Enable the USART2 Pins Software Remapping */ - GPIO_PinRemapConfig(GPIO_Remap_USART2, ENABLE); -#endif - - /* GPIO configuration */ - { - GPIO_InitTypeDef GPIO_InitStructure; - - /* Configure USART Tx as alternate function push-pull */ - GPIO_InitStructure.GPIO_Pin = CONSOLE_TX_PIN; - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; - GPIO_Init(CONSOLE_GPIO, &GPIO_InitStructure); - - /* Configure USART Rx as input floating */ - GPIO_InitStructure.GPIO_Pin = CONSOLE_RX_PIN; - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; - GPIO_Init(CONSOLE_GPIO, &GPIO_InitStructure); - } - - /* USART configuration */ - { - USART_InitTypeDef USART_InitStructure; - - /* USART configured as follow: - - BaudRate = 115200 baud - - Word Length = 8 Bits - - One Stop Bit - - No parity - - Hardware flow control disabled (RTS and CTS signals) - - Receive and transmit enabled - - USART Clock disabled - - USART CPOL: Clock is active low - - USART CPHA: Data is captured on the middle - - USART LastBit: The clock pulse of the last data bit is not output to - the SCLK pin - */ - USART_InitStructure.USART_BaudRate = 115200; - 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(CONSOLE_USART, &USART_InitStructure); - /* Enable USART */ - USART_Cmd(CONSOLE_USART, ENABLE); - } -#endif -} - -/* write one character to serial, must not trigger interrupt */ -static void rt_hw_console_putc(const char c) -{ - /* - to be polite with serial console add a line feed - to the carriage return character - */ - if (c=='\n')rt_hw_console_putc('\r'); - - while (!(CONSOLE_USART->SR & USART_FLAG_TXE)); - CONSOLE_USART->DR = (c & 0x1FF); -} - -/** - * This function is used by rt_kprintf to display a string on console. - * - * @param str the displayed string - */ -void rt_hw_console_output(const char* str) -{ -#if STM32_CONSOLE_USART == 0 - /* no console */ -#else - while (*str) - { - rt_hw_console_putc (*str++); - } -#endif + rt_hw_usart_init(); + rt_console_set_device(CONSOLE_DEVICE); } /*@}*/ diff --git a/bsp/stm3210/board.h b/bsp/stm3210/board.h index 0a595ea6ce06ee87676d348749de928335fbe69b..0107d126e558c6a48b6612415e8c1bee1ff32cc1 100644 --- a/bsp/stm3210/board.h +++ b/bsp/stm3210/board.h @@ -50,6 +50,16 @@ void rt_hw_board_led_on(int n); void rt_hw_board_led_off(int n); void rt_hw_board_init(void); +#if STM32_CONSOLE_USART == 0 +#define CONSOLE_DEVICE "no" +#elif STM32_CONSOLE_USART == 1 +#define CONSOLE_DEVICE "uart1" +#elif STM32_CONSOLE_USART == 2 +#define CONSOLE_DEVICE "uart2" +#elif STM32_CONSOLE_USART == 3 +#define CONSOLE_DEVICE "uart3" +#endif + void rt_hw_usart_init(void); /* SD Card init function */ diff --git a/bsp/stm3210/project.Uv2 b/bsp/stm3210/project.Uv2 index 54e98186a89e8d4241fa425db780c1cce0e0511d..b17602999c83d46acad3d3c3dfc174ffd14bca8b 100644 --- a/bsp/stm3210/project.Uv2 +++ b/bsp/stm3210/project.Uv2 @@ -17,6 +17,7 @@ File 1,1,<.\startup.c> File 1,1,<.\led.c> File 1,5,<.\rtconfig.h> File 1,5,<.\board.h> +File 1,1,<.\usart.c> File 2,1,<.\Libraries\STM32F10x_StdPeriph_Driver\src\misc.c> File 2,1,<.\Libraries\STM32F10x_StdPeriph_Driver\src\stm32f10x_wwdg.c> File 2,1,<.\Libraries\STM32F10x_StdPeriph_Driver\src\stm32f10x_adc.c> @@ -61,6 +62,7 @@ File 5,1,<..\..\libcpu\arm\stm32\stack.c> File 5,2,<..\..\libcpu\arm\stm32\context_rvds.S> File 5,2,<..\..\libcpu\arm\stm32\fault_rvds.S> File 5,2,<..\..\libcpu\arm\stm32\start_rvds.s> +File 5,1,<..\..\libcpu\arm\stm32\serial.c> Options 1,0,0 // Target 'RT-Thread STM32' diff --git a/bsp/stm3210/usart.c b/bsp/stm3210/usart.c index ac859a58af43ad0cf0d3d2eee714f0072fc94b2d..dc4662d780f7d62beb989ae6a9e7d23b7a4a498e 100644 --- a/bsp/stm3210/usart.c +++ b/bsp/stm3210/usart.c @@ -39,8 +39,6 @@ struct stm32_serial_device uart1 = { USART1, &uart1_int_rx, - RT_NULL, - RT_NULL, RT_NULL }; struct rt_device uart1_device; @@ -48,13 +46,10 @@ struct rt_device uart1_device; #ifdef RT_USING_UART2 struct stm32_serial_int_rx uart2_int_rx; -struct stm32_serial_dma_rx uart2_dma_rx; struct stm32_serial_device uart2 = { USART2, &uart2_int_rx, - RT_NULL, - RT_NULL, RT_NULL }; struct rt_device uart2_device; @@ -67,8 +62,6 @@ struct stm32_serial_device uart3 = { USART3, &uart3_int_rx, - RT_NULL, - RT_NULL, &uart3_dma_tx }; struct rt_device uart3_device;