OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2423|回复: 0

为什么NRF接收数据不进中断?

[复制链接]

3

主题

13

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
235
金钱
235
注册时间
2019-7-8
在线时间
27 小时
发表于 2019-9-6 12:48: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¶Ï±ê־λ
        }
}



正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-12 19:23

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表