这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » 环形队列串口发送接收数据

共3条 1/1 1 跳转至

环形队列串口发送接收数据

高工
2018-11-15 08:51:55     打赏

环形队列中断方式 -- 不耗时,支持缓冲区


unsigned char SendItComm=1;


void SendCommBuffer(unsigned char *base, unsigned short size) 

{

    unsigned short i=0;

    if (!size) 

    { 

        return; 

    }

    while(i<size) 

    {  

        CommSendBuffer[CommSendBufferTail]=base[i]; 

        i++;

        CommSendBufferTail++; 

        if (CommSendBufferTail==DB_SENDMAXSIZE)

        { 

            CommSendBufferTail=0;

        }

    }

    if(SendItComm) //当SendItComm为零时,表示上一帧数据还未发送完毕

    {  

        SBUF0=CommSendBuffer[CommSendBufferHead]; 

    }

}


void CommISR(void) interrupt 4

{

    if (TI0)

    {

        TI0=0;

        CommSendBufferHead++;


        if (CommSendBufferHead==DB_SENDMAXSIZE)

        {  

            CommSendBufferHead=0;

        }

        if (CommSendBufferHead!=CommSendBufferTail)

        {  

            SBUF0=CommSendBuffer[CommSendBufferHead]; // send the next byte

            SendItComm=0;

        }

        else

        {

            SendItComm=1;

        }

    }






管理员
2018-11-16 09:03:28     打赏
2楼

谢谢楼主分享


专家
2018-11-16 09:05:26     打赏
3楼

我看了工作机制是否是需要一包发完,才能发送下一包数据,


共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]