中级会员
 
- 积分
- 235
- 金钱
- 235
- 注册时间
- 2019-7-8
- 在线时间
- 27 小时
|
1金钱
我用在中断里用NRF接收另一个NRF发来的数据,但是调试的时候,我把接收程序放在主函数里面就可以接收,放在中断里就根本没进中断,看了很久也没发现问题,请大神帮忙看一下,主函数里面就是简单的初始化然后显示NRF接收的数据,下面是中断函数:
#include "exti.h"
void EXTI6_Init(void)
{
EXTI_InitTypeDef EXTI_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); //ê1Äü¸′óÃ1|Äüê±Öó
//GPIOB.6 ÖD¶ÏÏßòÔ¼°ÖD¶Ï3õê¼»ˉÅäÖà ϽμÑØ′¥·¢ PB6
GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource6);
EXTI_InitStructure.EXTI_Line=EXTI_Line6;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
EXTI_Init(&EXTI_InitStructure); //¸ù¾YEXTI_InitStructÖDÖ¸¶¨μÄ2Îêy3õê¼»ˉíaéèEXTI¼Ä′æÆ÷
NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn; //ê1ÄüNRFËùÔúμÄía2¿ÖD¶Ïí¨μà
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02; //ÇàÕ¼óÅÏè¼¶2
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x00; //×óóÅÏè¼¶0
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //ê1Äüía2¿ÖD¶Ïí¨μà
NVIC_Init(&NVIC_InitStructure); //¸ù¾YNVIC_InitStructÖDÖ¸¶¨μÄ2Îêy3õê¼»ˉíaéèNVIC¼Ä′æÆ÷
}
//ía2¿ÖD¶Ï6·tÎñ3ìDò
void EXTI9_5_IRQHandler(void)
{
if(EXTI_GetITStatus(EXTI_Line6)!=RESET)
{
extern unsigned int flag;
NVIC_InitTypeDef NVIC_InitStructure;
u16 aacx[100],aacy[100],aacz[100];
u16 i=0,j=0,k=0;
u8 tmp_buf[33];
flag=1;
if(NRF24L01_RxPacket(tmp_buf)==0)
{
if((tmp_buf[24]-'0')==0)
{
aacx[i++]=tmp_buf[5]*1000+tmp_buf[6]*100+tmp_buf[7]*10+tmp_buf[8]*1;
aacy[j++]=tmp_buf[10]*1000+tmp_buf[11]*100+tmp_buf[12]*10+tmp_buf[13]*1;
aacz[k++]=tmp_buf[15]*1000+tmp_buf[16]*100+tmp_buf[17]*10+tmp_buf[18]*1;
if(i==99)i=0;
if(j==99)j=0;
if(k==99)k=0;
OLED_ShowNum(36,20,tmp_buf[5]*10+tmp_buf[6]*1,2,12);
OLED_ShowNum(52,20,tmp_buf[7]*10+tmp_buf[8]*1,2,12);//ÏÔê¾xÖá¼óËù¶è
OLED_ShowNum(30,36,tmp_buf[10]*10+tmp_buf[11]*1,2,12);
OLED_ShowNum(46,36,tmp_buf[12]*10+tmp_buf[13]*1,2,12);//ÏÔê¾yÖá¼óËù¶è
OLED_ShowNum(24,52,tmp_buf[15]*10+tmp_buf[16]*1,2,12);
OLED_ShowNum(40,52,tmp_buf[17]*10+tmp_buf[18]*1,2,12);//ÏÔê¾zÖá¼óËù¶è
OLED_Refresh();
//phone(phoneNumber);
//NVIC_InitStructure.NVIC_IRQChannelCmd = DISABLE; //1رÕía2¿ÖD¶Ïí¨μà
flag=1;
}
flag=1;
}
EXTI_ClearITPendingBit(EXTI_Line6); //Çå3yLINE6éÏμÄÖD¶Ï±ê־λ
}
}
|
|