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

程序:voidUSART1_IRQHandler(void)1、{if(USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET)//... 程序:
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?
本人自学,有很多都没搞明白,希望高手指点一下
展开
 我来答
百度网友550b363
推荐于2017-11-29
知道答主
回答量:24
采纳率:0%
帮助的人:18.6万
展开全部
程序思路是这样的,进入中断后:
接收陀螺仪的数据,如果收到的第一个字节不是0x55,就不接收。。此时counter是不增加的。。

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

第一行的意思是 表示 如果接收寄存器非空,即有数据,那么判断为接收中断
第五行 是跳出中断
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式