stm32F1,NRF24L01模块无线通信发送失败解决方法【正点原子原码修改】

原码是正点原子的官方例程,对于发送模块,我只是修改了主函数部分。


#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);】,而这个语句和NRF_IRQ相关,也就是和PG6管脚相关。所以,在没有成功发送的时候,利用一根跳线跳出PG6,然后在跳线的另一端,用手搓一下就能实现数据发送了,也就是说,问题就出在PG6口上了。但是只知道和脉冲信号有关系,却不知道怎么修改程序。【求大神指点】

所以我就做了一个比较狗的修改。如图:

stm32F1,NRF24L01模块无线通信发送失败解决方法【正点原子原码修改】_第1张图片



你可能感兴趣的:(stm32,stm32,nrf24l01)