在 STM32 战舰开发板上测试, 接受采用 IRQ 引脚产生外部中断。发送数据字节长度可以动态改变, 接收端也可以读取到发送方实际发送字节长度。战舰开发板为接收端。然后将接受数据通过 USART1 发送至电脑, 使用 DMA 传输方式, 波。 S TM32F103ZET6 与 NRF24L01 SPI 通信速率为 9MHz 。 24L01 .c 文件代码#include "" #include "" #include "" #include "" const uint8_t TX_ADDRESS[TX_ADR_WIDTH]={0x34,0x43,0x10,0x10,0x01}; // 发送地址 const uint8_t RX_ADDRESS[RX_ADR_WIDTH]={0x34,0x43,0x10,0x10,0x01}; // 发送地址// 初始化 24L01 的 IO口 void NRF24L01_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; SPI_InitTypeDef SPI_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; EXTI_InitTypeDef EXTI_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOD|RCC_APB2Pe riph_GPIOG |RCC_APB2Periph_AFIO, ENABLE); // 使能 PB,D,G 端口时钟 = GPIO_Pin_12; //PB12 上拉防止 W25 X 的干扰 = GPIO_Mode_Out_PP; // 推挽输出 = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); // 初始化指定 IO GPIO_SetBits(GPIOB,GPIO_Pin_12);// 上拉 = GPIO_Pin_2; //PD2 推挽输出上拉禁止 SD 卡的干扰 = GPIO_Mode_Out_PP; // 推挽输出 GPIO_SetBits(GPIOD,GPIO_Pin_2);// 初始化指定 IO = GPIO_Pin_6|GPIO_Pin_7; //PG6 7 推挽 GPIO_Init(GPIOG, &GPIO_InitStructure);// 初始化指定 IO RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); // 使能复用功能时钟 = GPIO_Pin_8; = GPIO_Mode_IPU; = GPIO_Speed_50MHz; GPIO_Init(GPIOG, &GPIO_InitStructure); GPIO_EXTILineConfig(GPIO_PortSourceGPIOG,GPIO_PinSource8); = EXTI_Line8; = EXTI_Trigger_Falling; = EXTI_Mode_Interrupt; = ENABLE; EXTI_Init(&EXTI_InitStructure); = EXTI9_5_IRQn; = 0; = 0; = ENABLE;
NRF24L01动态字节长度接受和发送 来自淘豆网m.daumloan.com转载请标明出处.