在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > STM32 驅(qū)動無線NRF24L01 的穩(wěn)定修正

            STM32 驅(qū)動無線NRF24L01 的穩(wěn)定修正

            作者: 時間:2016-12-03 來源:網(wǎng)絡(luò) 收藏
            修正處

            void sent_data(u8* fp,u16 flong)
            {
            u16 i;
            TX_Mode((u8*)&flong); //傳送長度
            while(!tran); //等待完成
            tran=0;
            flong=flong/33+1;
            while(flong)
            {
            for(i=0;i<20000;i++);//這個延時的非常必要 大約2MS 左右
            if(MAX_RT) return;//無應(yīng)答返回
            TX_Mode(fp); //傳送數(shù)據(jù)
            while(!tran); //等待完成
            tran=0;
            fp+=32;flong--;
            }

            本文引用地址:http://www.biyoush.com/article/201612/325213.htm

            }

            更加合理的延時寫法 ,發(fā)送分兩部分 首先發(fā)送內(nèi)容長度 然后發(fā)送內(nèi)容

            修正處

            if(RX_NU==2&&Timer2==0)

            {
            USART2_Puts("傳輸錯誤 ");
            USART2_Puts("rn");
            RX_NU=1;

            }

            貌似這個if的進入是不可能的 但是由于在中斷里更新了 Timter2 所以產(chǎn)生了不可預(yù)計的后果。

            修正處

            if(RX_DR) // 判斷是否接受到數(shù)據(jù)
            {
            if(RX_NU==1)
            {
            CE_L;
            SPI_Read_Buf(RD_RX_PLOAD, RX_BUF, TX_PLOAD_WIDTH); // 從RX FIFO讀出數(shù)據(jù)
            SPI_RW_Reg(RF_WRITE_REG + STATUS, sta); //清除RX_DS中斷標志
            rectnu=RX_BUF[0];rectnu|=RX_BUF[1]<<8; //接收串長
            onerc=rectnu/33+1; //計算接收次數(shù)
            Timer2=50;RX_NU=2;///*超時時間*/
            PRX_BUF=RX_BUF; //恢復(fù)指針
            RX_Mode();return;

            }

            if(RX_NU==2)
            {
            CE_L;
            SPI_Read_Buf(RD_RX_PLOAD, PRX_BUF, TX_PLOAD_WIDTH); // 從RX FIFO讀出數(shù)據(jù)
            SPI_RW_Reg(RF_WRITE_REG + STATUS, sta); // 清除RX_DS中斷標志
            onerc--;PRX_BUF+=32;//接收計數(shù) 接收指針移動
            if(!onerc)
            {
            RX_NU=1;
            RX_BUF[rectnu]=