软件:KeilMDK芯片:STM32F103/STM32F107串口数量:4备注:4 个串口均配置为 DMA 读取//串口 1 初始化函数void uart1_init(u32 bound){ //GPIO 端口设置GPIO_InitTypeDef GPIO_InitStructure;USART_InitTypeDef USART_InitStructure;NVIC_InitTypeDef NVIC_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE);//使能 USART1,GPIOA 时钟USART_DeInit(USART1); //复位串口 1//USART1_TX PA.9GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA。9GPIO_InitStructure。GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;//复用推挽输出GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化 PA9//USART1_RX PA。10GPIO_InitStructure。GPIO_Pin = GPIO_Pin_10;GPIO_InitStructure。GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化 PA10//Usart1 NVIC 配置NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1 ;//抢占优先级 3NVIC_InitStructure。NVIC_IRQChannelSubPriority = 0;//子优先级 3NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//IRQ 通道使能NVIC_Init(&NVIC_InitStructure); //根据指定的参数初始化 VIC 寄存器/*Enable DMA Channel4 Interrupt */NVIC_InitStructure.NVIC_IRQChannel = DMA1_Channel4_IRQn;NVIC_InitStructure。NVIC_IRQChannelPreemptionPriority = 1;NVIC_InitStructure。NVIC_IRQChannelSubPriority = 1;NVIC_InitStructure。NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);/*Enable DMA Channel5 Interrupt */NVIC_InitStructure。NVIC_IRQChannel = DMA1_Channel5_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;NVIC_InitStructure。NVIC_IRQChannelSubPriority = 0;NVIC_InitStructure。NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);//USART 参数初始化设置USART_InitStructure.USART_BaudRate = bound;//一般设置为 9600;USART_InitStructure.USART_WordLength = USART_WordLength_8b;//字长为8 位数据格式USART_InitStructure.USART_StopBits = USART_StopBits_...