串口环形队列

2019-08-19 17:49发布

#define  UART1_RBUF_Size          4096                                //
u16 UART1_RX_ph;                                             //
u16 UART1_RX_pe;                                            //
u16 UART1_RX_buf_full;                                     //
u8  UART1_RX_BUF[UART1_RBUF_Size] ;              //
//***************************串口1接收环形队列*******************************
void USART1_IRQHandler(void)                                                                               //
{
        u8 Res;             
        if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)                                //
        {                                           
                USART_ClearITPendingBit(USART1,USART_IT_RXNE);                                 //
                Res = USART_ReceiveData(USART1);
                if(((UART1_RX_ph-UART1_RX_pe)&(UART1_RBUF_Size-1)) == (UART1_RBUF_Size-1))
                {
                        UART1_RX_buf_full = 1;
                        USART_ITConfig(USART1, USART_IT_RXNE, DISABLE);                        //                                                               
                }                         
                else
                {
                        UART1_RX_BUF[UART1_RX_ph] = Res;
                        UART1_RX_ph++;
                        UART1_RX_ph &= (UART1_RBUF_Size-1);
                }
        }                                                                
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
dreamARM
1楼-- · 2019-08-19 22:08
何为环形队列,请解释一下
shikihane
2楼-- · 2019-08-20 00:26
 精彩回答 2  元偷偷看……
chenghuayou
3楼-- · 2019-08-20 04:08
大神!!!!受教了
1375917982gxut
4楼-- · 2019-08-20 07:10
看不太明白,可以把完整的环形队列程序分享出来吗?你这里只贴了一部分代码,不太完美吧
你的眼睛
5楼-- · 2019-08-20 07:50
受教了!!!谢谢
dyfei
6楼-- · 2019-08-20 13:00
1375917982gxut 发表于 2016-11-14 22:20
看不太明白,可以把完整的环形队列程序分享出来吗?你这里只贴了一部分代码,不太完美吧

我也在找呢,移植过来的UCOS的代码到STM32上面的,就留了这么几个函数接口。还没搞定。

一周热门 更多>