找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3364|回復(fù): 5
打印 上一主題 下一主題
收起左側(cè)

NRF24L01如何配置IRQ接收完(成功接收)數(shù)據(jù)后,進行外部中斷

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:710522 發(fā)表于 2020-4-22 03:02 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
請大俠指示一下怎么配置這個參數(shù)。
我現(xiàn)在已經(jīng)將單片機中的外部中斷0已啟用了。也已經(jīng)將IRQ引腳接到了P32腳中。
單片機是STC89C52RC。

現(xiàn)在我的無線模塊是能正常通訊的,已經(jīng)確認是能接收成功。

但是外部中斷0中的程序并未執(zhí)行。

查了一下百度,說要在程序里先啟用IRQ中斷功能,請問,怎么啟用這個配置。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:452950 發(fā)表于 2020-4-22 10:02 | 只看該作者
/******************************************************************/
/*                   外部中斷初始化                               */
/******************************************************************/
void EX0init(void)
{
IT0 = 1;   //指定外部中斷0下降沿觸發(fā),INT0 (P3.2)
EX0 = 1;   //使能外部中斷
EA = 1;    //開總中斷
}
回復(fù)

使用道具 舉報

板凳
ID:150374 發(fā)表于 2020-4-22 10:20 | 只看該作者
1、設(shè)置中斷寄存器中斷觸發(fā)方式IT
2、開啟外部中斷EX
3、開啟總中斷EA

根據(jù)51單片機中斷管腳 INT0 INT1
編寫中斷函數(shù)
回復(fù)

使用道具 舉報

地板
ID:710522 發(fā)表于 2020-4-22 14:37 | 只看該作者
majianghua999 發(fā)表于 2020-4-22 12:22
這個問題首先要先確認一下RF的IRQ是否打開,別用的是掃描方式收發(fā),那么肯定單片機部分是無法有中斷的。如 ...
  1. //===== 接收模式 =====
  2.                                         nrf_RxMod();
  3.                                         while_times = 120;                //檢測是否接收成功 循環(huán)檢測?次 【可更改,讓接收循環(huán)次數(shù)大于發(fā)送循環(huán)次數(shù)效果較好】
  4.                                         while(while_times--)         //接收超時或者接收成功,跳出循環(huán) 進入發(fā)送模式
  5.                                         {
  6.                                                 get_nrf_sta();                        //獲取狀態(tài)標志
  7.                                                 if(RX_DR == 1)                        //接收成功
  8.                                                 {       
  9.                                                         nrf_read(RxBuf);        //接收成功后,將NRF24L01接收到的數(shù)據(jù)讀到單片機的RxBuf數(shù)組中。
  10.                                                         break;                                                //跳出循環(huán)
  11.                                                 }
  12.                                         }
  13.                                         if(RX_DR == 1)                                //是因為接收到數(shù)據(jù),而不是因為超時才跳出循環(huán)
  14.                                         {

  15.                                                 wuxian_zt=1;
  16.                                                
  17.                                                 if(RxBuf[0] == 1)               
  18.                                                 {       
  19.                                                         LED2=0;    //點亮LED
  20.                                                        
  21.                                                         go();
  22.                                                 }
  23.                                                 else if(RxBuf[0] == 0)
  24.                                                         LED2=1;
  25.                                                        
  26.                                                        
  27.                                         }
  28.                                         else   
  29.                                         {
  30.                                                 wuxian_zt=0;
  31.                                         }
  32.                                        
復(fù)制代碼
回復(fù)

使用道具 舉報

5#
ID:710522 發(fā)表于 2020-4-22 14:37 | 只看該作者
我現(xiàn)在用的是if(RX_DR == 1)        這個指令來確認是否接收到數(shù)據(jù)的。

且是放到主函數(shù),while循環(huán)里。
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表