/ ************************************************* ****************************** * Nome da função: USART1_Init * Função: função de inicialização USART1 * Entrada: limite: taxa de transmissão * Saída: Nenhuma **************************************************** ***************************** / nulo USART1_Init (limite de u32) { // configurações da porta GPIO GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_AHB1PeriphClockCmd (RCC_AHB1Periph_GPIOA, ENABLE); // Ativar relógio GPIOA RCC_APB2PeriphClockCmd (RCC_APB2Periph_USART1, ENABLE); // Ativar relógio USART1 // A porta serial 1 corresponde ao mapeamento de multiplexação de pinos GPIO_PinAFConfig (GPIOA, GPIO_PinSource9, GPIO_AF_USART1); // GPIOA9 multiplexado como USART1 GPIO_PinAFConfig (GPIOA, GPIO_PinSource10, GPIO_AF_USART1); // GPIOA10 multiplexado como USART1 // configuração da porta USART1 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10; // GPIOA9 与 GPIOA10 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; // Função multiplex GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; // 50 MHz GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; // Saída de multiplexação push-pull GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; // 上 拉 GPIO_Init (GPIOA, & GPIO_InitStructure); // Inicializa PA9, PA10 // configuração inicial USART1 USART_InitStructure.USART_BaudRate = bound; // Configuração da taxa de transmissão USART_InitStructure.USART_WordLength = USART_WordLength_8b; // O comprimento da palavra é um formato de dados de 8 bits USART_InitStructure.USART_StopBits = USART_StopBits_1; // Um bit de parada USART_InitStructure.USART_Parity = USART_Parity_No; // Sem bit de paridade USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; // Nenhum controle de fluxo de dados de hardware USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; // Padrão de extração USART_Init (USART1, & USART_InitStructure); // Inicializa a porta serial 1 USART_Cmd (USART1, ENABLE); // Ativa a porta serial 1 USART_ClearFlag (USART1, USART_FLAG_TC); USART_ITConfig (USART1, USART_IT_RXNE, ENABLE); // Abrir interrupção relacionada // Configuração NVIC Usart1 NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; // Canal de interrupção serial 1 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 3; // Prioridade de preempção 3 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; // Subprioridade 3 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; // Canal IRQ ativado NVIC_Init (& NVIC_InitStructure); // Inicialize o registro VIC de acordo com os parâmetros especificados, }