This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

I want to use the radio interrupt to receive data, but I only entered the interrupt once at initialization, and I can't enter the interrupt again.

I want to use the radio interrupt to receive data, but I only entered the interrupt once at initialization, and I can't enter the interrupt again.
But use the commented out code,I can get the data.
thanks!

Here's my code:

#include "sdk_common.h"
#include "radio_config.h"
uint8_t packet[3]={'Q','0','C'};  

void Radio_init(void)
{
    NRF_RADIO->INTENSET = 0xF;
    NVIC_SetPriority(RADIO_IRQn, 1);
    NVIC_ClearPendingIRQ(RADIO_IRQn);
    NVIC_EnableIRQ(RADIO_IRQn);  
    NRF_RADIO->TASKS_RXEN  = 1;
}
  
int main(void)													
    {					
    volatile int ss;										
    NRF_CLOCK->EVENTS_HFCLKSTARTED = 0;
    NRF_CLOCK->TASKS_HFCLKSTART = 1;
    while (NRF_CLOCK->EVENTS_HFCLKSTARTED == 0) 
    {}        
    radio_configure();	       
    Radio_init();
    NRF_RADIO->PACKETPTR = (uint32_t)packet;
    while (1)
    {       
                //        NRF_RADIO->EVENTS_READY = 0U;      												
                //        NRF_RADIO->TASKS_RXEN   = 1U; 
                //        while(NRF_RADIO->EVENTS_READY == 0U)
                //        {}
                //        NRF_RADIO->EVENTS_END  = 0U;    															
                //        NRF_RADIO->TASKS_START = 1U; 																								
                //        while(NRF_RADIO->EVENTS_END == 0U)
                //        {}            
                //        if (NRF_RADIO->CRCSTATUS == 1U)														
                //            {																														
                //               ss=packet[1];                               
                //            }			         
                //        NRF_RADIO->EVENTS_DISABLED = 0U;														
                //        NRF_RADIO->TASKS_DISABLE   = 1U;														
                //        while(NRF_RADIO->EVENTS_DISABLED == 0U)	
                //        {}
    }
}											
 
void RADIO_IRQHandler()
{  
    int ss;
    if(NRF_RADIO->EVENTS_READY && (NRF_RADIO->INTENSET & RADIO_INTENSET_READY_Msk))
    {
        NRF_RADIO->EVENTS_READY = 0;
    }
    if(NRF_RADIO->EVENTS_END && (NRF_RADIO->INTENSET & RADIO_INTENSET_END_Msk))
    {
        NRF_RADIO->EVENTS_END = 0;
    }
    if(NRF_RADIO->EVENTS_ADDRESS && (NRF_RADIO->INTENSET & RADIO_INTENSET_ADDRESS_Msk))
    {
        NRF_RADIO->EVENTS_ADDRESS= 0;
    }       
    if(NRF_RADIO->CRCSTATUS == 1)
    {
       ss=packet[1]; 
    }						   
}

Parents Reply Children
No Data
Related