Usart 2 does not work
I am trying to use 2 usart in my program. When i am trying send_to_uart2('a'); nothing happens. In debug mode USART2->SR is always 0x000. Why?
#include 'stm32f10x.h'
#include 'stm32f10x_gpio.h'#include 'stm32f10x_rcc.h'void Delay(void)
{ volatile uint32_t i; for (i = 0; i != 0x140000; i++) ;}void send_to_uart1(uint8_t data)
{ while (!(USART1->SR & USART_SR_TC)) ; USART1->DR = data;}void send_to_uart2(uint8_t data)
{ while (!(USART2->SR & USART_SR_TC)) ; USART2->DR = data;}uint8_t uart_data;
int main(void)
{ GPIO_InitTypeDef PORTA_init_struct;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_USART1 | RCC_APB1Periph_USART2, ENABLE);
PORTA_init_struct.GPIO_Pin = GPIO_Pin_9; PORTA_init_struct.GPIO_Speed = GPIO_Speed_50MHz; PORTA_init_struct.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOA, &PORTA_init_struct);PORTA_init_struct.GPIO_Pin = GPIO_Pin_10;
PORTA_init_struct.GPIO_Speed = GPIO_Speed_50MHz; PORTA_init_struct.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &PORTA_init_struct); PORTA_init_struct.GPIO_Pin = GPIO_Pin_2; PORTA_init_struct.GPIO_Speed = GPIO_Speed_50MHz; PORTA_init_struct.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOB, &PORTA_init_struct); PORTA_init_struct.GPIO_Pin = GPIO_Pin_3; PORTA_init_struct.GPIO_Speed = GPIO_Speed_50MHz; PORTA_init_struct.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &PORTA_init_struct);USART_InitTypeDef uart_struct1;
uart_struct1.USART_BaudRate = 9600; uart_struct1.USART_WordLength = USART_WordLength_8b; uart_struct1.USART_StopBits = USART_StopBits_1; uart_struct1.USART_Parity = USART_Parity_No; uart_struct1.USART_HardwareFlowControl = USART_HardwareFlowControl_None; uart_struct1.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_Init(USART1, &uart_struct1); USART_Cmd(USART1, ENABLE); USART_InitTypeDef uart_struct2; uart_struct2.USART_BaudRate = 9600; uart_struct2.USART_WordLength = USART_WordLength_8b; uart_struct2.USART_StopBits = USART_StopBits_1; uart_struct2.USART_Parity = USART_Parity_No; uart_struct2.USART_HardwareFlowControl = USART_HardwareFlowControl_None; uart_struct2.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_Init(USART2, &uart_struct2); USART_Cmd(USART2, ENABLE);while (1) {
send_to_uart2('a'); Delay(); send_to_uart1('b'); Delay(); }}