原子的usart.c中为什么不开启发送中断?

2019-08-22 14:41发布

void USART1_IRQHandler(void)                        //′®¿ú1ÖD¶Ï·tÎñ3ìDò
{
        u8 Res;
#ifdef OS_TICKS_PER_SEC                 //èç1ûê±Öó½úÅÄêy¶¨òåáË,ËμÃ÷òaê1óÃucosIIáË.
        OSIntEnter();   
#endif
        if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)  //½óêÕÖD¶Ï(½óêÕμ½μÄêy¾Y±ØDëêÇ0x0d 0x0a½áÎ2)
        {
                Res =USART_ReceiveData(USART1);//(USART1->DR);        //¶á衽óêÕμ½μÄêy¾Y
               
                if((USART_RX_STA&0x8000)==0)//½óêÕÎ′íê3é
                {
                        if(USART_RX_STA&0x4000)//½óêÕμ½áË0x0d
                        {
                                if(Res!=0x0a)USART_RX_STA=0;//½óêÕ′íÎó,ÖØD¿aê¼
                                else USART_RX_STA|=0x8000;        //½óêÕíê3éáË
                        }
                        else //»1ûêÕμ½0X0D
                        {       
                                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;//½óêÕêy¾Y′íÎó,ÖØD¿aê¼½óêÕ          
                                }                 
                        }
                }                    
  }

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
whyviking
1楼-- · 2019-08-22 20:34
讲道理,如果有发送中断的话也在这里,但实际确实不用发送中断。一般开始发送第一个字节后,CPU不断轮询串口的发送状态位,等待发送为空后继续发送下一字节。因为发送一个字节的速度非常快,所以没必要用中断,CPU就那等着就行了。
freedompoi
2楼-- · 2019-08-23 01:20
你这个是接收中断啦,发送中断在其他地方,而且也没有设置发送中断的必要。
szczyb1314
3楼-- · 2019-08-23 05:57
 精彩回答 2  元偷偷看……
DongInker
4楼-- · 2019-08-23 07:53
波特率比较低时,发送中断就会直接影响mcu使用效率,根据自己的需求可以考虑是否开启!

一周热门 更多>