天线|RF射频
直播中

邢东

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

NRF24L01改中断无法进入EXTI0_IRQHandler的解决办法?

初学STM32,还往大家多多指教



光盘上的NRF24L01 代码在两个开发板上均能正确运行,在接收端改成中断后无法进入中断



根据原理图,NRF24L01 IRQ对应的是PC5管脚,于是我在NRF24L01_Init()后加入了EXtiX_Init();  (NRF24L01_Init 方法内未作任何改动)



在EXTIX_Init,我将PC5管脚从输出(NRF24L01_Init中将其设为输出)改成了输入



void EXTIX_Init(void)

{


GPIOC->CRL&=0XFF0FFFFF;// PC5输入

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


GPIOC->IDR|=0<<5;    //PC5默认下拉



Ex_NVIC_Config(GPIO_C,5,RTIR); //上升沿触发



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

}



但是就是无法进入EXTI0_IRQHandler,如果我把接受代码放到while里面则能正常接收。

恳请各位指出我的错误,谢谢

回帖(23)

贾虎世

2020-7-27 10:26:48
谢谢发烧友的提示,上面有一个地方我弄错了,NRF接收的IRQ是置低为enable,于是我修改了一个地方



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



另外NRF的config为



NRF24L01_Write_Reg(WRITE_REG+CONFIG, 0x0f);



bit 4,5,6 均为0, 根据NRF的说明书,as active low interrupt on IRQ pin,所以我的理解是这样就已经开了接收中断了,但是实验后仍然无法进入中断,麻烦再给一点提示呢

举报

赵秀英

2020-7-27 10:36:21
外设IO中断可以设成 上升沿有效,下降沿有效,高电平有效,底电平有效,电平变化有效的.那个适合就用那个吧.



NRF24L01_Write_Reg(WRITE_REG+CONFIG, 0x0f); 这是设成接收模式,RX_RD中断产生时IRQ引脚为低.你应将中断设成下降沿有效或低电平有效.
举报

江璐

2020-7-27 10:46:12
不好意思我设置了下降沿有效的,忘了把代码贴上来:



void EXTIX_Init(void)

{



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

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



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



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



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

}


举报

陈琳

2020-7-27 11:00:57

STM32只能设置上升沿/下降沿触发中断,不能设置高低电平触发!



用示波器抓INT输出的波形...
举报

更多回帖

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