完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我要完成一个任务:从一个传感器接收连续不断发送来的数据,格式为“0xff .. .. .. ..”即以OxFF为开头的五个字节数据,后四个字节是一个32位浮点数,然后将其显示在LCD屏幕上。在接收数据时用中断方式,我设置了一个共用体union data r,然后将原子哥的代码改了改, usart.c部分代码如下: int j,n,l;//用来接收、显示用的计数 char str[15]; //存放浮点数转化为char型数据,以便LCD显示 union data { u8 rxdata[4]; float f; }r; //存放发送来的浮点数 void USART1_IRQHandler(void) { u8 res; if(USART1->SR&(1<<5))//接收到数据 { res=USART1->DR; //如果接收到0xff就进入{}内,先接收四个字节,再转化类型,再LCD显示 if(res==255) { //USART1->CR1&=~(1<<5);//本来想禁止接收非空使能中断,后发现有无此句无影响 n=0; j=0; l=30; //接收四个字节存共用体里 while(1) { if(USART1->SR&(1<<5)) { r.rxdata[n]=USART1->DR; n++; } if(n==4)break; } //显示部分,注释掉了,我的疑惑不在这 // sprintf(str,"%6.2f",r.f); // while(str[j]!=' |