<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(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.ex-cimer.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的進(jìn)入是不可能的 但是由于在中斷里更新了 Timter2 所以產(chǎn)生了不可預(yù)計(jì)的后果。

          修正處

          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中斷標(biāo)志
          rectnu=RX_BUF[0];rectnu|=RX_BUF[1]<<8; //接收串長
          onerc=rectnu/33+1; //計(jì)算接收次數(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中斷標(biāo)志
          onerc--;PRX_BUF+=32;//接收計(jì)數(shù) 接收指針移動
          if(!onerc)
          {
          RX_NU=1;
          RX_BUF[rectnu]=看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();