金牌会员
 
- 积分
- 1083
- 金钱
- 1083
- 注册时间
- 2016-7-22
- 在线时间
- 103 小时
|
1金钱
void USART1_IRQHandler(void)
{
u8 Res;
#if SYSTEM_SUPPORT_OS
OSIntEnter();
#endif
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
{
Res =USART_ReceiveData(USART1);
if((USART_RX_STA&0x8000)==0)
{
if(USART_RX_STA&0x4000)
{
if(Res!=0x0a)USART_RX_STA=0;
else USART_RX_STA|=0x8000;
}
else
{
if(Res==0x0d)USART_RX_STA|=0x4000;
else
{
USART_RX_BUF[USART_RX_STA&0X3FFF]=Res ;
USART_RX_STA++;
if(USART_RX_STA>(USART_REC_LEN-1))USART_RX_STA=0;
}
}
}
}
#if SYSTEM_SUPPORT_OS
OSIntExit();
#endif
}
#endif
请问为什么 if(USART_RX_STA>(USART_REC_LEN-1))USART_RX_STA=0; 中USART_REC_LEN要减1
|
最佳答案
查看完整内容[请看2#楼]
USART_RX_STA是接收到的数据存储在数组中的位置,是从0 开始计数的。USART_REC_LEN是允许接收的数据的最大长度,是一个数值,所以在数组中存储数据的最后一位是USART_RX_BUF
|