stm32串口中断接收问题----问题是,接收不到输入数据。

程序:
void USART1_IRQHandler(void)
1、{ if(USART_GetITStatus(USART1,USART_IT_RXNE)!= RESET) // USART_IT_RXNE
2、接收中断器满寄存器的标志位, 在USART接收结束时寄存器会自动检测
3、 {
4、 Temp[counter] = USART_ReceiveData(USART1); //接收数据 数据是放在Temp数组中
5、 if(counter == 0 && Temp[0] != 0x55) return; //第 0 号数据不是帧头,跳过
6、 counter++;
7、 if(counter==11) //接收到 11 个数据
{
memcpy(Re_buf,Temp,11); //将temp中内容复制到re_buff中
counter=0; //重新赋值,准备下一帧数据的接收
sign=1;
} } }
目的:想接收从陀螺仪中发过来的数据,共11组数据,已知传感器发过来的数据是连续不间断的。

问题:第一行,意思是不是接收数据满了?如果是,第4行的USART_ReceiveData(USART1)函数将串口读取的数据发送给Temp数组,这个数组接收的是串口中的所有数据还是一组一组的接收?从第5行的return是不是跳出中断,第6行的counter++没有循环怎么会到第7行会出现到11?
本人自学,有很多都没搞明白,希望高手指点一下

程序思路是这样的,进入中断后:
接收陀螺仪的数据,如果收到的第一个字节不是0x55,就不接收。。此时counter是不增加的。。

如果接收到的第一个字节是0x55,counter自增,收到的数据暂存至 Temp。。。
当 counter自增到11时,将Temp收到的数据存至Re_buf,同时counter清零,sign置1

第一行的意思是 表示 如果接收寄存器非空,即有数据,那么判断为接收中断
第五行 是跳出中断
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答