管理员
最后登录1970-1-1
在线时间 小时
注册时间2017-7-7
|
发表于 2019-6-6 22:15:17
|
显示全部楼层
[mw_shl_code=c,true]//全局数组
u8 buff[20];
//接收计数
u8 RxNum=0;
//命令字符串标志
u8 CMD_FLAG=0;
void CMD_FUN(void )
{
for(int i=0;i<20;i++)
{
USART_SendData(USART1,buff);
}
RxNum=0;
CMD_FLAG=0;
}
void USART1_IRQHandler(void)
{
u8 temp;
if(USART_GetITStatus(USART1,USART_IT_RXNE)==SET)
{
temp=USART_ReceiveData(USART1);
if(CMD_FLAG==0)
{
if( temp!='\n')
{
buff[RxNum]=temp;
if(RxNum<19)
{
RxNum++;
}else
{
CMD_FLAG=1;
printf("Exceeding the limit");
}
}else if( temp=='\n')
{
CMD_FLAG=1;
// CMD_FUN()//建议放在main轮询判断CMD_FLAG==1来调用
}
}
}
}[/mw_shl_code]
你看串口章节例程里面的哪个环形队列,用空闲中断来判断你发完一串,再把数组里收到的for发出去
如果你想用比如\n来判断包结束,你参考我下面随便写的吧,可能有BUG,看个意思就行了,
|
|