void wireless_init() { CC2500_Init(); GPIO_InitTypeDef GPIO_init_st; NVIC_InitTypeDef NVIC_init_st; EXTI_InitTypeDef EXTI_InitStructure; /* Enable SYSCFG clock */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE); //Configure GPIO pin 0 in input mode GPIO_init_st.GPIO_Mode = GPIO_Mode_IN; GPIO_init_st.GPIO_Pin = CC2500_SPI_INT_PIN; GPIO_init_st.GPIO_PuPd = GPIO_PuPd_DOWN; GPIO_init_st.GPIO_Speed = GPIO_High_Speed; GPIO_init_st.GPIO_OType = GPIO_OType_PP; GPIO_Init(CC2500_SPI_INT_GPIO_PORT, &GPIO_init_st); SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOB, CC2500_SPI_INT_EXTI_PIN_SOURCE); EXTI_InitStructure.EXTI_Line = CC2500_SPI_INT_EXTI_LINE; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); // configure NVIC NVIC_init_st.NVIC_IRQChannel = CC2500_SPI_INT_EXTI_IRQn; NVIC_init_st.NVIC_IRQChannelCmd = ENABLE; NVIC_init_st.NVIC_IRQChannelPreemptionPriority = 0x01; NVIC_init_st.NVIC_IRQChannelSubPriority = 0x01; NVIC_Init(&NVIC_init_st); NVIC_EnableIRQ(CC2500_SPI_INT_EXTI_IRQn); }
/** * @brief Function that initializes receiver. * @param *receiver: pointer to Receiver structure. * @retval None */ void init_receiver(struct Receiver *receiver) { receiver->state = 0; receiver->buffer_space = 0; CC2500_Init(); CC2500_config_transmitter(); goToTX(&(receiver->state), &(receiver->buffer_space)); osMutexDef(receiverMutex); receiver->mutexID=osMutexCreate(osMutex(receiverMutex)); }
/* Initialize Wireless Chip */ uint8_t init_wireless(void) { // Setup up CC2500 SPI CC2500_InitTypeDef CC2500_InitStruct; CC2500_Init(&CC2500_InitStruct); // Send reset command CC2500_CommandProbe(CC2500_READBIT, CC2500_SRES); // Wait for CHIP_RDYn while (CC2500_CommandProbe(CC2500_READBIT, CC2500_SNOP) & 0x80); // Configure the CC2500 registers CC2500_SmartRF_Config(); osDelay(1000); return CC2500_CommandProbe(CC2500_READBIT, CC2500_SNOP); }
/** * @brief Function that initializes the transmitter. * @param *transmitter: Pointer to a Transmitter structure. * @param *tid_thread_transmitter: Pointer to the pushbutton thread control block. * @retval None */ void init_transmitter(struct Transmitter *transmitter, osThreadId **tid_thread_transmitter) { transmitter->state = 0; transmitter->buffer_space = 0; uint32_t i; for (i=0; i<sizeof(transmitter->data)/sizeof(transmitter->data[0]); i++) { transmitter->data[i] = 0; } CC2500_Init(); CC2500_config_transmitter(); goToTX(&(transmitter->state), &(transmitter->buffer_space)); osThreadDef(transmitterThread, osPriorityNormal, 1, 0); transmitter->threadID = osThreadCreate(osThread(transmitterThread), transmitter); osMutexDef(transmitterMutex); transmitter->mutexID=osMutexCreate(osMutex(transmitterMutex)); *tid_thread_transmitter = &(transmitter->threadID); }
int main() { __eds__ char temp; TRISBbits.TRISB13 = 0; LATBbits.LATB5 = 0; TRISBbits.TRISB5 = 0; CC2500_Session Session = CC2500_Init(ChipSelect,0xAA,1); char data[10] = {1,2,3,4,5,6,7,8,9,10}; CC2500_ReadStatusRegister(Session,&temp,0); CC2500_TransmitSmallPacket(Session,data,10); while(1) { Nop(); } return (EXIT_SUCCESS); }
void initializeWireless() { //Initialize the transmitter CC2500_Init(); GPIO_InitTypeDef GPIO_init_st; NVIC_InitTypeDef NVIC_init_st; EXTI_InitTypeDef EXTI_InitStructure; /* Enable SYSCFG clock */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE); //Configure GPIO pin 0 in input mode GPIO_init_st.GPIO_Mode = GPIO_Mode_IN; GPIO_init_st.GPIO_Pin = CC2500_SPI_INT_PIN; GPIO_init_st.GPIO_PuPd = GPIO_PuPd_DOWN; GPIO_init_st.GPIO_Speed = GPIO_High_Speed; GPIO_init_st.GPIO_OType = GPIO_OType_PP; GPIO_Init(CC2500_SPI_INT_GPIO_PORT, &GPIO_init_st); //Configure the EXTI Interrupt SYSCFG_EXTILineConfig(CC2500_SPI_INT_EXTI_PORT_SOURCE, CC2500_SPI_INT_EXTI_PIN_SOURCE); EXTI_InitStructure.EXTI_Line = CC2500_SPI_INT_EXTI_LINE; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); //Configure the NVIC for the interrupt NVIC_init_st.NVIC_IRQChannel = CC2500_SPI_INT_EXTI_IRQn; NVIC_init_st.NVIC_IRQChannelCmd = ENABLE; NVIC_init_st.NVIC_IRQChannelPreemptionPriority = 0x01; NVIC_init_st.NVIC_IRQChannelSubPriority = 0x01; NVIC_Init(&NVIC_init_st); NVIC_EnableIRQ(CC2500_SPI_INT_EXTI_IRQn); }