当前位置: 代码迷 >> 综合 >> nrf24l01(程序)
  详细解决方案

nrf24l01(程序)

热度:23   发布时间:2024-01-06 07:16:28.0
#include "RF24L01.h"
#include "delay.h"u16 RTD_wait = 0; //发送等待时间设限u8  RTD_success = 0;u8 RX_BUF[RX_PLOAD_WIDTH]={0};		//接收数据缓存u8 TX_BUF[TX_PLOAD_WIDTH]={0};		//发射数据缓存u8 TX_ADDRESS[TX_ADR_WIDTH] = {0x34,0x43,0x10,0x10,0x01};  // 定义一个静态发送地址u8 RX_ADDRESS[RX_ADR_WIDTH] = {0x34,0x43,0x10,0x10,0x01};void Delay(__IO u32 nCount)
{for(; nCount != 0; nCount--);
} /*** @brief  SPI的 I/O配置* @param  无* @retval 无*/
void SPI_NRF_Init(void)
{SPI_InitTypeDef  SPI_InitStructure;GPIO_InitTypeDef GPIO_InitStructure;/*开启相应IO端口的时钟*/RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB,ENABLE);/*使能SPI1时钟*/RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);/*配置 SPI_NRF_SPI的 SCK,MISO,MOSI引脚,GPIOA^5,GPIOA^6,GPIOA^7 */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用功能GPIO_Init(GPIOA, &GPIO_InitStructure);  /*配置SPI_NRF_SPI的CE引脚,和SPI_NRF_SPI的 CSN 引脚*/GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_Init(GPIOA, &GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;GPIO_Init(GPIOB, &GPIO_InitStructure);/*配置SPI_NRF_SPI的IRQ引脚*/GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU ;  //上拉输入GPIO_Init(GPIOB, &GPIO_InitStructure); /* 这是自定义的宏,用于拉高csn引脚,NRF进入空闲状态 */NRF_CSN_HIGH(); SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex; //双线全双工SPI_InitStructure.SPI_Mode = SPI_Mod