includestm32f10x。hvoidMyUSART1Init(void){定义结构体GPIOInitTypeDefGPIOInitStruct;USARTInitTypeDefUSARTInitStruct;NVICInitTypeDefNVICInitStruct;一GPIOA,USART1时钟使能RCCAPB2PeriphResetCmd(RCCAPB2PeriphGPIOA,ENABLE);RCCAPB2PeriphResetCmd(RCCAPB2PeriphUSART1,ENABLE);GPIO参数配置输出引脚配置GPIOInitStruct。GPIOModeGPIOModeAFPP;GPIOInitStruct。GPIOPinGPIOPin9;GPIOInitStruct。GPIOSpeedGPIOSpeed10MHz;输入引脚配置GPIOInitStruct。GPIOModeGPIOModeINFLOATING;GPIOInitStruct。GPIOPinGPIOPin10;GPIOInitStruct。GPIOSpeedGPIOSpeed10MHz;GPIOInit(GPIOA,GPIOInitStruct);二串口参数初始化USARTInitStruct。USARTBaudRate115200;波特率USARTInitStruct。USARTHardwareFlowControlUSARTHardwareFlowControlNone;硬件流控制USARTInitStruct。USARTModeUSARTModeRxUSARTModeTx;模式USARTInitStruct。USARTParityUSARTParityNo;奇偶校验USARTInitStruct。USARTStopBitsUSARTStopBits1;停止位USARTInitStruct。USARTWordLengthUSARTWordLength8b;字长USARTInit(USART1,USARTInitStruct);使能串口USARTCmd(USART1,ENABLE);USARTITConfig(USART1,USARTITRXNE,ENABLE);2中断类型(接收到数据楷书中断),3使能开关中断优先级NVICInitStruct。NVICIRQChannelUSART1IRQn;NVICInitStruct。NVICIRQChannelCmdENABLE;NVICInitStruct。NVICIRQChannelPreemptionPriority1;抢占优先级NVICInitStruct。NVICIRQChannelSubPriority1;NVICInit(NVICInitStruct);}voidUSART1IRQHandler()中断服务函数{u8res;if(USARTGetITStatus(USART1,USARTITRXNE)){resUSARTReceiveData(USART1);USARTSendData(USART1,res);}}intmain(void){系统中断优先级分组,需要在主函数开始前初始化,后期不能修改NVICPriorityGroupConfig(NVICPriorityGroup2);MyUSART1Init();while(1){}}