请问ch57X 的串口中断,如果接收到的数据长度和FIFO设置的一样,是不是只能进入UART_II_RECV_RDY,而不会触发UART_II_RECV_TOUT?
那这样的话UART_II_RECV_TOUT这个中断感觉并没有什么用啊?
我的串口初始化配置:
```
/* 配置UART3 */
GPIOA_SetBits( GPIO_Pin_5 );
GPIOA_ModeCfg( GPIO_Pin_4, GPIO_ModeIN_PU ); // RXD-配置上拉输入
GPIOA_ModeCfg( GPIO_Pin_5, GPIO_ModeOut_PP_5mA ); // TXD-配置推挽输出,注意先让IO口输出高电平
UART3_DefInit( );
UART3_BaudRateCfg( 9600 );
UART3_ByteTrigCfg( UART_7BYTE_TRIG );
UART3_INTCfg( ENABLE, RB_IER_RECV_RDY );
PFIC_EnableIRQ( UART3_IRQn );
UART3_Data.RxCount = 0;
```
我的中断接收:
```
__attribute__( ( interrupt( "WCH-Interrupt-fast" ) ) )
__attribute__( ( section( ".highcode" ) ) )
void UART3_IRQHandler( void )
{
switch ( UART3_GetITFlag( ) )
{
case UART_II_RECV_RDY : // 数据达到设置触发点
UART3_Data.RxCount += UART3_RecvString( UART3_Data.RxBuff+UART3_Data.RxCount ); // 拷贝数据
break;
case UART_II_RECV_TOUT : // 接收超时,暂时一帧数据接收完成
UART3_Data.RxCount += UART3_RecvString( UART3_Data.RxBuff+UART3_Data.RxCount ); // 拷贝结尾数据
UART3_Logic_Handler( );
UART3_Data.RxCount = 0;
break;
default :
break;
}
}
```
这个代码的效果是如果接受到的数据长度是 7 的整数倍,那只会进入 UART_II_RECV_RDY 中断,
其他情况,如果小于7字节会进入 UART_II_RECV_TOUT 中断。
如果大于7字节则会在接收完毕之前进入n次UART_II_RECV_RDY 中断,最后再进入一次UART_II_RECV_TOUT 中断。
请问7字节及其整数倍的时候只能自己判断是不是接受完毕吗?那UART_II_RECV_TOUT中断没有意义啊?