打印

USART发送中断的问题

[复制链接]
309|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
无幻|  楼主 | 2019-11-20 16:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
extern u8 RxBuf[20],Rxcount,Txcount;
void USART1_IRQHandler(void)
{
        if(USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET)
        {
                USART_ClearITPendingBit(USART1,USART_IT_RXNE);
                RxBuf[Rxcount++]=USART_ReceiveData(USART1);
        }
        if(USART_GetITStatus(USART1,USART_IT_TC)!=SET)
        {
                if(Txcount<Rxcount)
                {
                        USART_SendData(USART1, RxBuf[Txcount++]);
                }
                else
                {
                        USART_ClearITPendingBit(USART1,USART_IT_TC);
                        USART_ITConfig(USART1,USART_IT_TC,DISABLE);
                        memset(RxBuf,0,Rxcount);
                        Rxcount=Txcount=0;
                }
               
        }
}

void TIM2_IRQHandler(void)
{
        if(Rxcount>7)
        {
                USART_ITConfig(USART1,USART_IT_TC,ENABLE);
        }
}
每次收到8个以上字符,则启动发送中断,把收到的数据发送回去,我是用的时USART_IT_TC,但是这个只能进入一次发送中断
之后就不能再进入发送中断了,但是如果换成USART_IT_TXE则可以每次都进入发送中断,这是为什么???

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

431

主题

436

帖子

0

粉丝