stm32F1,NRF24L01模組無線通訊傳送失敗解決方法【正點原子原碼修改】
阿新 • • 發佈:2019-01-29
原碼是正點原子的官方例程,對於傳送模組,我只是修改了主函式部分。
#include "led.h" #include "delay.h" #include "key.h" #include "sys.h" #include "lcd.h" #include "usart.h" #include "24l01.h" int main(void) { u8 key,mode,j=0; u16 t=0; u8 tmp_buf[33]; delay_init(); NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); uart_init(115200); LED_Init(); NRF24L01_Init(); POINT_COLOR=RED; while(NRF24L01_Check()) {} NRF24L01_TX_Mode(); mode=' '; while(1) { if(NRF24L01_TxPacket(tmp_buf)==TX_OK) { //key=mode; for(t=0;t<32;t++) { // key++; // if(key>('~'))key=' '; tmp_buf[t]=j++; } //mode++; if(mode>'~')mode=' '; tmp_buf[32]=0;//¼ÓÈë½áÊø·û } delay_ms(1500); }; }
程式下載到開發板,能檢測到RF24L01模組是正常的,且有效。但是,就是無法傳送資料,一直都停在那裡,然後經過一步步的除錯。都沒有任何的改變,依舊傳送不了資訊。
所以就只能用原函式,未閹割版,也就是未改動的【正點原子】官方例程,在兩個F1上嘗試資料的傳送與接收。
但是依舊是停在傳送的步驟沒反應,而且沒辦法跳出24l01.c檔案,函式u8 NRF24L01_TxPacket(u8 *txbuf)裡面的語句:
while(NRF24L01_IRQ!=0);
但是一個偶然的嘗試,用手掰一下發送板的nrf24l01模組,神奇的可以通訊了。所以,可以斷定程式碼肯定好使了。
接著嘗試,發現主要影響語句【while(NRF24L01_IRQ!=0);】,