新手入门
- 积分
- 16
- 金钱
- 16
- 注册时间
- 2017-12-17
- 在线时间
- 1 小时
|
1金钱
void USART2_IRQHandler(void)
{
u8 res;
if(USART_GetFlagStatus(USART2, USART_IT_RXNE) != RESET)
{
res = USART_ReceiveData(USART2);
if((USART2_RX_STA & (1<<15)) == 0)
{
if(USART2_RX_STA < USART2_MAX_RECV_LEN)
{
TIM_SetCounter(TIM8, 0);
if(USART2_RX_STA == 0)
{
TIM8_Set(1);
}
USART2_RX_BUF[USART2_RX_STA++] = res;
}
else
{
USART2_RX_STA |= 1<<15;
}
}
}
}
这段代码里在接收到中断信息
USART_GetFlagStatus(USART2, USART_IT_RXNE) != RESET
为什么不需要加上
USART_ClearITPendingBit(USART2,USART_IT_RXNE); //清除中断标志
清除中断位?
另外USART串口每次接受数据只是接受一位数据?如果我发送了4位数据那么RX端是不是要产生4次中断?
|
|