[mw_shl_code=c,true]void sim_at_response(u8 mode)
{
if(USART2_RX_STA&0X8000) //????????????????
{
USART2_RX_BUF[USART2_RX_STA&0X7FFF]=0;//?í???á??·?
printf("%s",USART2_RX_BUF); //·??????®??
if(mode)USART2_RX_STA=0;
}
}[/mw_shl_code]
[mw_shl_code=c,true]u16 USART2_RX_STA=0;
void USART2_IRQHandler(void)
{
u8 res;
if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)//??????????
{
res=USART_ReceiveData(USART2);
if(USART2_RX_STA<USART2_MAX_RECV_LEN) //??????????????
{
TIM_SetCounter(TIM4,0);//?????÷???? //?????÷????
if(USART2_RX_STA==0)TIM4_Set(1); //?????¨?±?÷4??????
USART2_RX_BUF[USART2_RX_STA++]=res; //??????????????
}else
{
USART2_RX_STA|=1<<15; //????±ê???????ê??
}
}
}
[/mw_shl_code]
if(USART2_RX_STA&0X8000) 条件成立需要USART2_RX_STA最高位为1才成立吧,USART2_MAX_RECV_LEN为1024,sim900a返回的一般也没这么多吧。貌似条件很难达到。还有USART2_RX_STA&0X7FFF 感觉没什么用 “与”的结果还是USART2_RX_STA啊
|