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?
本人自学,有很多都没搞明白,希望高手指点一下 展开
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?
本人自学,有很多都没搞明白,希望高手指点一下 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询