/** * initializes lower level rf protocol, sets high level address. * @param ownAddress high level address: 2-255 */ void radioInit(void) { nRF24L01_init(); nRF24L01_set_RADDR_01(0, ThermostatAdr); nRF24L01_set_TADDR(ThermostatAdr); nRF24L01_set_rx_callback(&radioRxDataAvailable); }
int main(void) { //usart_init (UBRR_VAL);//инициализация модуля SPI_MasterInit();//инициализация SPI nRF24L01_init(0b00000011);//инициализация модуля nrf24l01_RX_TX_mode(PRX);//переходим в режим приемника while(1) { mSend(4);//внешний mSend(3);//кухня mSend(2);//ванная } }
int main(void) { int status; memset(RX_BUF,0,4); led_init(); nRF24L01_init(); motor_init(); //电机初始化 QuadCopter_init(&QuadCopter); uart_init(115200); status = nRF_Check(); /*检测NRF模块与MCU的连接*/ if(status == SUCCESS) /*判断连接状态*/ uart_printf("\r\n NRF与MCU连接成功!\r\n"); else uart_printf("\r\n NRF与MCU连接失败,请重新检查接线。\r\n"); nRF_RX_Mode(); LED_OFF; while(1) { nRF_RX_Mode(); nRF_Rx_Dat(RX_BUF); status=RX_BUF[2]; switch(status) { case Q_ON: LED_ON; QuadCopter.Status=Q_ON; QuadCopter.BaseSpeed=300; motor_speed(QuadCopter.BaseSpeed,QuadCopter.BaseSpeed,QuadCopter.BaseSpeed,QuadCopter.BaseSpeed ) ; break; case Q_UP: QuadCopter_up(&QuadCopter); break; case Q_DOWN: QuadCopter_down(&QuadCopter); break; case Q_OFF: LED_OFF; QuadCopter.Status=Q_OFF; motor_speed(0,0,0,0 ) ; break; default: break; } } }
nRF24L01 *setup_rf(void) { nRF24L01 *rf = nRF24L01_init(); rf->ss.port = &PORTB; rf->ss.pin = PB2; rf->ce.port = &PORTB; rf->ce.pin = PB1; rf->sck.port = &PORTB; rf->sck.pin = PB5; rf->mosi.port = &PORTB; rf->mosi.pin = PB3; rf->miso.port = &PORTB; rf->miso.pin = PB4; // interrupt on falling edge of INT0 (PD2) EICRA |= _BV(ISC01); EIMSK |= _BV(INT0); nRF24L01_begin(rf); return rf; }
int main(void) { memset(RX_BUF,0,4); led_init(); nRF24L01_init(); motor_init(); //电机初始化 QuadCopter_init(&QuadCopter); Delayms(10); serial_init(115200); LED_ON; serial_printf("\nhhhhhahhahahha终于可以了 \n "); // Delayms(100); // serial_flush(&tx_ringbuf); serial_putc('o'); serial_gets((char*)rxbuf); while(1) { } }
void main(void){ // 0.001 с = 1/1000 с = 1мс if (SysTick_Config(SystemCoreClock / 1000)){ /* если вернулся не ноль - ошибка */ while (1); } STM_EVAL_LEDInit(LED3); STM_EVAL_LEDInit(LED4); STM_EVAL_LEDInit(LED5); STM_EVAL_LEDInit(LED6); nRF24L01_init(); nRF24L01_set_rf(nRF24L01_DataRate_2M, nRF24L01_OutputPower_M18dBm); // устанавливаем адреса приемника и передатчика nRF24L01_set_my_addr(MyAddress); nRF24L01_set_tx_addr(TxAddress); u8 str[32] = "Hello blablacode.ru by nRF24\n"; u8 dataIn[32]; u16 req = 0; u16 badTransactions = 0; u16 successfulTransactions = 0; while (1) { status_reg = nRF24L01_readStatus(); STM_EVAL_LEDToggle(LED3); nRF24L01_writeTx(str); do { status_reg = nRF24L01_readStatus(); } while (status_reg.bit.MAX_RT == 0 && status_reg.bit.TX_DS == 0); nRF24L01_ClearStatus(); nRF24L01_configure_rx(); do { status_reg = nRF24L01_readStatus(); req++; if (req > 1000) { req = 0; break; } } while (status_reg.bit.RX_DR == 0); if (status_reg.bit.RX_DR) { // чистим буфер memset(dataIn,0,32); // читаем nRF24L01_readRx(dataIn,32); // сравниваем int ret = memcmp(dataIn,str,32); if (ret == 0) successfulTransactions++; else badTransactions++; } status_reg = nRF24L01_readStatus(); } }