关键代码usart。c:ifdefGNUCWithGCCRAISONANCE,smallprintf(optionLDLinkerLibrariesSmallprintfsettoYes)callsioputchar()definePUTCHARPROTOTYPEintioputchar(intch)elsedefinePUTCHARPROTOTYPEintfputc(intch,FILEf)endifGNUCPUTCHARPROTOTYPE{Placeyourimplementationoffputcheree。g。writeacharactertotheUSARTUSARTSendData(USART1,(uint8t)ch);Loopuntiltheendoftransmissionwhile(USARTGetFlagStatus(USART1,USARTFLAGTC)RESET){}}ifUSART1RXENuint8tUSART1RXBuffer〔USARTRXMAX〕{0};uint8tUSART1RXIndex0;uint8tUSART1RXOverFlag0;endifvoidUSART1Init(uint32tbaudRate){GPIOInitTypeDefGPIOInitSUSARTInitTypeDefUSARTInitSNVICInitTypeDefNVICInitSRCCAHB1PeriphClockCmd(RCCAHB1PeriphGPIOA,ENABLE);RCCAPB2PeriphClockCmd(RCCAPB2PeriphUSART1,ENABLE);GPIOPinAFConfig(GPIOA,GPIOPinSource9,GPIOAFUSART1);GPIOPinAFConfig(GPIOA,GPIOPinSource10,GPIOAFUSART1);GPIOInitStructure。GPIOPinGPIOPin9GPIOPin10;GPIOInitStructure。GPIOModeGPIOModeAF;GPIOInitStructure。GPIOOTypeGPIOOTypePP;GPIOInitStructure。GPIOSpeedGPIOFastSGPIOInitStructure。GPIOPuPdGPIOPuPdUP;GPIOInit(GPIOF,GPIOInitStructure);USARTInitStructure。USARTBaudRatebaudRUSARTInitStructure。USARTWordLengthUSARTWordLength8b;USARTInitStructure。USARTStopBitsUSARTStopBits1;USARTInitStructure。USARTParityUSARTParityNo;USARTInitStructure。USARTHardwareFlowControlUSARTHardwareFlowControlNUSARTInitStructure。USARTModeUSARTModeRxUSARTModeTx;USARTInit(USART1,USARTInitStructure);USARTCmd(USART1,ENABLE);ifUSART1RXENUSARTITConfig(USART1,USARTITRXNE,ENABLE);NVICInitStructure。NVICIRQChannelUSART1IRQn;NVICInitStructure。NVICIRQChannelPreemptionPriority1;NVICInitStructure。NVICIRQChannelSubPriority3;NVICInitStructure。NVICIRQChannelCmdENABLE;NVICInit(NVICInitStructure);endif}voidUSART1IRQHandler(void){uint8tRif(USARTGetITStatus(USART1,USARTITRXNE)!RESET){ResUSART1DR;ResUSARTReceiveData(USART1);if(USART1RXIndexUSARTRXMAX){USART1RXIndex0;}if(Res!){USART1RXBuffer〔USART1RXIndex〕R}elseif(Res){USART1RXBuffer〔USART1RXIndex〕RUSART1RXOverFlag1;}}USARTClearFlag(USART1,USARTFLAGRXNE);} main。c:LEDWorkModeTypeDefmyLEDWorkModeLEDMODE1;constcharstringMode1〔8〕mode1;constcharstringMode2〔8〕mode2;constcharstringMode3mode3;intmain(void){delayinit(168);LEDInit();USART1Init(115200);printf(SystemStarted!r);while(1){if(USART1RXOverFlag1){if(strstr((constchar)USART1RXBuffer,stringMode1)!NULL){printf(Iminmode1!r);myLEDWorkModeLEDMODE1;}elseif(strstr((constchar)USART1RXBuffer,stringMode2)!NULL){printf(Iminmode2!r);myLEDWorkModeLEDMODE2;}elseif(strstr((constchar)USART1RXBuffer,stringMode3)!NULL){printf(Iminmode3!r);myLEDWorkModeLEDMODE3;}USART1RXIndex0;USART1RXOverFlag0;memset(USART1RXBuffer,0,USARTRXMAX);}if(myLEDWorkModeLEDMODE1){LEDMode1(1000);}elseif(myLEDWorkModeLEDMODE2){LEDMode2();}elseif(myLEDWorkModeLEDMODE3){LEDMode3();}}}