标题:
NRF24L01如何配置IRQ接收完(成功接收)数据后,进行外部中断
[打印本页]
作者:
JF.y
时间:
2020-4-22 03:02
标题:
NRF24L01如何配置IRQ接收完(成功接收)数据后,进行外部中断
请大侠指示一下怎么配置这个参数。
我现在已经将单片机中的外部中断0已启用了。也已经将IRQ引脚接到了P32脚中。
单片机是STC89C52RC。
现在我的无线模块是能正常通讯的,已经确认是能接收成功。
但是外部中断0中的程序并未执行。
查了一下百度,说要在程序里先启用IRQ中断功能,请问,怎么启用这个配置。
作者:
xxpp2011
时间:
2020-4-22 10:02
/******************************************************************/
/* 外部中断初始化 */
/******************************************************************/
void EX0init(void)
{
IT0 = 1; //指定外部中断0下降沿触发,INT0 (P3.2)
EX0 = 1; //使能外部中断
EA = 1; //开总中断
}
作者:
小石头123
时间:
2020-4-22 10:20
1、设置中断寄存器中断触发方式IT
2、开启外部中断EX
3、开启总中断EA
根据51单片机中断管脚 INT0 INT1
编写中断函数
作者:
JF.y
时间:
2020-4-22 14:37
majianghua999 发表于 2020-4-22 12:22
这个问题首先要先确认一下RF的IRQ是否打开,别用的是扫描方式收发,那么肯定单片机部分是无法有中断的。如 ...
//===== 接收模式 =====
nrf_RxMod();
while_times = 120; //检测是否接收成功 循环检测?次 【可更改,让接收循环次数大于发送循环次数效果较好】
while(while_times--) //接收超时或者接收成功,跳出循环 进入发送模式
{
get_nrf_sta(); //获取状态标志
if(RX_DR == 1) //接收成功
{
nrf_read(RxBuf); //接收成功后,将NRF24L01接收到的数据读到单片机的RxBuf数组中。
break; //跳出循环
}
}
if(RX_DR == 1) //是因为接收到数据,而不是因为超时才跳出循环
{
wuxian_zt=1;
if(RxBuf[0] == 1)
{
LED2=0; //点亮LED
go();
}
else if(RxBuf[0] == 0)
LED2=1;
}
else
{
wuxian_zt=0;
}
复制代码
作者:
JF.y
时间:
2020-4-22 14:37
我现在用的是if(RX_DR == 1) 这个指令来确认是否接收到数据的。
且是放到主函数,while循环里。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1