初级会员

- 积分
- 57
- 金钱
- 57
- 注册时间
- 2019-8-4
- 在线时间
- 10 小时
|
1金钱
1.在PC上通过串口调试工具给STM32F407发送“AT\r\n”,出口受到数据后会依次接收传给解析函数处理并将数据打印到串口调试工具上。
2.目前遇到的问题:
中断处理函数内,读取到每一个字符会进行一次判断,但是判断的时候一直无法判断到“\n”,也就是0x0A,只能判断到其他数据以及0x0D。
函数如下,请帮忙看下是什么原因?
void USART1_IRQHandler(void)
{
u16 res;
if(USART_GetITStatus(USART1,USART_IT_RXNE))
{
res=USART_ReceiveData(USART1);
if (res==0x0D){
UART_Cconfig_Zs.gFlagForDisp=1;
UART_Cconfig_Zs.RevBuff[UART_Cconfig_Zs.i++]=res;
}
else if (res==0x0A)
{
printf("S"); //一直无法进到该循环并打印S
if (UART_Cconfig_Zs.gFlagForDisp==1)
{
Neoway_UART_PRINT(USART1,UART_Cconfig_Zs.RevBuff,UART_Cconfig_Zs.i);
UART_Cconfig_Zs.i=0;
UART_Cconfig_Zs.gFlagForDisp=0;
memset(UART_Cconfig_Zs.RevBuff, 0,RevBuff_Len_MAX); //将该数组初始化
//Neoway_UART_PARAMETER_CONFIG_INIT(UART_Cconfig_Zs);UART_Cconfig_Zs.i=0;
}
}
else
{
if (UART_Cconfig_Zs.gFlagForDisp==1)
{
Neoway_UART_PRINT(USART1,UART_Cconfig_Zs.RevBuff,UART_Cconfig_Zs.i);
memset(UART_Cconfig_Zs.RevBuff, 0,RevBuff_Len_MAX); //将该数组初始化
UART_Cconfig_Zs.i=0;
UART_Cconfig_Zs.RevBuff[UART_Cconfig_Zs.i++]=res;
UART_Cconfig_Zs.gFlagForDisp=0;
}
else
{
UART_Cconfig_Zs.RevBuff[UART_Cconfig_Zs.i++]=res;
}
}
}
|
|