void USART1_IRQHandler(void) //中断服务函数
{
u8 res,x,a,times;
if(USART_GetFlagStatus(USART1,USART_FLAG_RXNE)==SET) //½óêüêy¾YòÔèy¸ö0xff½áÎ2êy¾Y
{
res = USART_ReceiveData(USART1);
if(res==0xff)//可能结束标志开始
{
times++;
determined_buf[a++]=res;
if(times==3) recieveflag=1; //结束
else //防止出现其他个数FF的情况
{
for(x=0;x<a;x++)
{
USART_RX_BUF[t++]=determined_buf[x++];
}
}
}
else
{
USART_RX_BUF[t++]=res;
if(t>200) t=0; //接收不超过200
}
}
}
int main(void) //主函数
{
u8 l,k;
extern u8 t;
delay_init();
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
uart_init(115200);
LED_Init();
while(1)
{
if(recieveflag==1) //接收完成标识是否置1
{
printf("
您输入的信息为
");
for(l=0;l<t;l++)
{
USART_SendData(USART1,USART_RX_BUF[l]);
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);
}
printf("
");
recieveflag =0;
}
else
{
k++;
if(k%5000==0)
{
printf("
正带源自
");
printf("ALIENTEK");
}
if(k%200==0)printf("请输入
");
if(k%30==0) LED0=~LED0;
delay_ms(10);
}
}
}
不知道我的逻辑存在什么问题?大家帮忙看一下,新手一枚 ,望见谅!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>