天线|RF射频
直播中

王玉华

7年用户 147经验值
私信 关注
[问答]

NRF24L01无线通信中如何让接收到的信息优先被响应?

最近在弄一个移动小车,用NRF24L01无线通信模块进行控制。想创建两种模式,一种是自动运行的模式,还有就是手动运行的模式。然而在手动模式和自动运行模式之间切换就出现问题了,发现切换的时候响应不顺畅,原因是此时程序可能还在执行其他相应的动作。要按很多下才能读到按键发送的消息,请问有没有什么方法可以让该无线通信发送的消息优先响应的。 在网上查找貌似IRQ中断可以,但是不知道该怎么设置,麻烦谁要是知道的帮忙解决下!!谢谢

回帖(12)

李焰

2020-7-30 08:02:10
你又没有考虑过当你的遥控器按下的时候,nrf已经发了n个数据包过去了,小车全接收了,然后小车在自动和手动模式之间反复切换
举报

王颖群

2020-7-30 08:21:59
我把NRF的中断改成下面这段代码:发现程序一运行马上就进去中断了,而且出不来,不知道是什么原因:

void EXTI9_5_IRQHandler(void)

{

 u8 t;

  for(t=0;t<20;t++)

  {

   delay_ms(1000);

   LED0=!LED0;



  }

                                 EXTI->R=1<<5; 

 

}

//外部中断初始化程序

void EXTIX_Init(void)

{

RCC->APB2ENR|=1<<4;



       GPIOC->CRL&=0XFF0FFFFF;// C5输出  

     GPIOC->CRL|=0X00800000;  //上拉/下拉输入模式 

     GPIOC->ODR|=1<<5;    //PC5默认上拉 



     Ex_NVIC_Config(GPIO_C,5,FTIR); //由上升沿改为下降沿沿触发 



     MY_NVIC_Init(2,1,EXTI9_5_IRQChannel,2);//抢占2,子优先级1,组2 



    



}
举报

李丹

2020-7-30 08:32:57
没有清除中断标志位.
举报

王淑华

2020-7-30 08:44:34

  EXTI->R=1<<5;  //这个应该就是清除中断标志位了,今天发现原因原来是程序中的if(NRF24L01_RxPacket(tmp_buf)==0)一直会给PC5高低电平的脉冲,所以一直触发它进中断,请问原子哥这种问题有没有办法解决!!
举报

更多回帖

发帖
×
20
完善资料,
赚取积分