新手上路
- 积分
- 25
- 金钱
- 25
- 注册时间
- 2017-10-16
- 在线时间
- 3 小时
|
发表于 2017-11-6 22:41:06
|
显示全部楼层
楼上正解
随便说一下,例程里的uart3.c里就用到字节间超时处理
void USART3_IRQHandler(void)
{
u8 res;
OSIntEnter();
if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET)//½ÓÊÕµ½Êý¾Ý
{
res=USART_ReceiveData(USART3);
if((USART3_RX_STA&(1<<15))==0)//½ÓÊÕÍêµÄÒ»ÅúÊý¾Ý,»¹Ã»Óб»´¦Àí,Ôò²»ÔÙ½ÓÊÕÆäËûÊý¾Ý
{
if(USART3_RX_STA<USART3_MAX_RECV_LEN) //»¹¿ÉÒÔ½ÓÊÕÊý¾Ý
{
TIM_SetCounter(TIM7,0);//¼ÆÊýÆ÷Çå¿Õ
if(USART3_RX_STA==0) //ʹÄܶ¨Ê±Æ÷7µÄÖжÏ
{
TIM_Cmd(TIM7,ENABLE);//ʹÄܶ¨Ê±Æ÷7
}
USART3_RX_BUF[USART3_RX_STA++]=res; //¼Ç¼½ÓÊÕµ½µÄÖµ
}else
{
USART3_RX_STA|=1<<15; //Ç¿ÖƱê¼Ç½ÓÊÕÍê³É
}
}
}
OSIntExit();
} |
|