蓝桥杯嵌入式组开发——USART

    技术2026-02-18  15

    蓝桥杯嵌入式组开发——USART

    初始化时钟, 中断 对RX(A3),TX(A2)口进行配置 USART配置 中断使能 打开总开关

    1.初始化代码

    void USART_INIT(void) { USART_InitTypeDef USART_InitStructure; GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE); NVIC_Configuration_USART(); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOA, &GPIO_InitStructure); 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(USART2, &USART_InitStructure); USART_ITConfig(USART2, USART_IT_RXNE, ENABLE); USART_Cmd(USART2,ENABLE); }

    2.发送数据函数

    void Usart_SendString(char *str) { char index = 0; do{ USART_SendData(USART2, str[index]); while(USART_GetFlagStatus(USART2, USART_FLAG_TXE) == 0); index++; } while(str[index] != 0 ); USART_SendData(USART2, '\n'); }

    3.中断接收函数

    void USART2_IRQHandler(void) { uint8_t temp; if(USART_GetITStatus(USART2,USART_IT_RXNE) != RESET){ USART_ClearITPendingBit(USART2,USART_IT_RXNE); temp = USART_ReceiveData(USART2); if((temp == 'x') || (RXCUNT == 20)) { RXCUNT = 0; RXOVER = 1; //接收完成标志位置位 USART_ITConfig(USART2,USART_IT_RXNE,DISABLE); } else{ USART_RXBUF[RXCUNT] = temp; ++RXCUNT; } } }

    4.参考库函数

    STM32_MCU\stm32f10x_stdperiph_lib\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Examples\USART\Interrupt

    初始化参考: 中断接收数据函数参考如下: GPIO口配置参考: STM32_MCU\stm32f10x_stdperiph_lib\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Examples\USART\HyperTerminal_HwFlowControl文件下的IO口配置

    Processed: 0.009, SQL: 9