初级会员
- 积分
- 134
- 金钱
- 134
- 注册时间
- 2016-3-22
- 在线时间
- 29 小时
|
发表于 2016-3-22 17:49:01
|
显示全部楼层
本帖最后由 soledad928 于 2016-3-22 17:50 编辑
楼主,你好!我也遇到这样的问题,作为接收端时无法进入外部中断,我的板子对应的NRF24L01的IRQ引脚为PC4,那么外部中断的话应该就是EXTI4_IRQn吧!不知是什么原因?高手帮忙看下,谢谢!
[mw_shl_code=c,true]
/*配置SPI_NRF_SPI的SCK,MISO,MOSI引脚,GPIOA^5,GPIOA^6,GPIOA^7 */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
/*配置SPI_NRF_SPI的CE引脚, PG^8和SPI_NRF_SPI的CSN 引脚,PG^15*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_15;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOG, &GPIO_InitStructure);
/*配置SPI_NRF_SPI的IRQ引脚,PC^4*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU ;
GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource4); //NRF24L01 IRQ PC4
EXTI_InitStructure.EXTI_Line = EXTI_Line4; //NRF24L01 IRQ PC4
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; //EXTI外部中断
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; //下降沿触发
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);
下面是中断处理程序
void EXTI4_IRQHandler(void)
{
u8 i = 0;
u8 status;
if(EXTI_GetITStatus(EXTI_Line4) != RESET)
{
if(NRF_Read_IRQ()==0)
{
status = SPI_NRF_ReadReg(NRF_READ_REG+STATUS);
if(status&RX_DR)
{
SPI_NRF_ReadBuf(RD_RX_PLOAD,RxBufferRF,RX_PLOAD_WIDTH);
for(i=0;i<32;i++)
{
TxBufferUSART = RxBufferRF;
}
rf_rec_flag=1;
SPI_NRF_WriteReg(FLUSH_RX,NOP);
}
else if((status &MAX_RT)>0)
{
SPI_NRF_WriteReg(FLUSH_TX,0);
NRF_RX_Mode();
}
else if((status &TX_DS)>0)
{ //·¢éäoóêÕμ½ó|′e
SPI_NRF_WriteReg(FLUSH_TX,0);
NRF_RX_Mode();
}
SPI_NRF_WriteReg(NRF_READ_REG+STATUS, status);
}
}
EXTI_ClearITPendingBit(EXTI_Line4);
}
}[/mw_shl_code]
|
|