<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > STM32 驅動(dòng)無(wú)線(xiàn)NRF24L01 的穩定修正

STM32 驅動(dòng)無(wú)線(xiàn)NRF24L01 的穩定修正

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

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

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

}

更加合理的延時(shí)寫(xiě)法 ,發(fā)送分兩部分 首先發(fā)送內容長(cháng)度 然后發(fā)送內容

修正處

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

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

}

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

修正處

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

}

if(RX_NU==2)
{
CE_L;
SPI_Read_Buf(RD_RX_PLOAD, PRX_BUF, TX_PLOAD_WIDTH); // 從RX FIFO讀出數據
SPI_RW_Reg(RF_WRITE_REG + STATUS, sta); // 清除RX_DS中斷標志
onerc--;PRX_BUF+=32;//接收計數 接收指針移動(dòng)
if(!onerc)
{
RX_NU=1;
RX_BUF[rectnu]=国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放

<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>