• 大小: 5.59MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-09-28
  • 语言: 其他
  • 标签: STM32  2.4G  nrf24l01  

资源简介

STM32F103C8T6 2.4G nrf24l01无线模块通信代码含发送和接收代码,编译通过测试OK,能够正常接收和发送数据

资源截图

代码片段和文件信息

#include “24l01.h“
#include “lcd.h“
#include “delay.h“
#include “spi.h“
#include “usart.h“
//Mini STM32开发板
//NRF24L01 驱动函数 
 

const u8 TX_ADDRESS[TX_ADR_WIDTH]={0x340x430x100x100x01}; //发送地址
const u8 RX_ADDRESS[RX_ADR_WIDTH]={0x340x430x100x100x01}; //发送地址
    
//初始化24L01的IO口
void NRF24L01_Init(void)
{
    RCC->APB2ENR|=1<<2;    //使能PORTA口时钟 
RCC->APB2ENR|=1<<3;    //使能PORTB口时钟 
GPIOA->CRL&=0XFFF000FF;//PA3输出
GPIOA->CRL|=0X00033800; 
GPIOA->ODR|= 11100<<0;    //PA.3输出1 PA2输入



SPIx_Init();    //初始化SPI
NRF24L01_CE=0;  //使能24L01
NRF24L01_CSN=1; //SPI片选取消
}
//检测24L01是否存在
//返回值:0,成功;1,失败
u8 NRF24L01_Check(void)
{
u8 buf[5]={0XA50XA50XA50XA50XA5};
u8 buf1[5];
u8 i;
SPIx_SetSpeed(SPI_SPEED_8); //spi速度为9Mhz(24L01的最大SPI时钟为10Mhz)     
NRF24L01_Write_Buf(SPI_WRITE_REG+TX_ADDRbuf5);//写入5个字节的地址.
NRF24L01_Read_Buf(TX_ADDRbuf15); //读出写入的地址  
for(i=0;i<5;i++)if(buf1[i]!=0XA5)break;

Send_Com_Data(buf15);
   
if(i!=5)return 1;//检测24L01错误
return 0;  //检测到24L01
}    
//SPI写寄存器
//reg:指定寄存器地址
//value:写入的值
u8 NRF24L01_Write_Reg(u8 regu8 value)
{
u8 status;
    NRF24L01_CSN=0;                 //使能SPI传输
   status =SPIx_ReadWriteByte(reg);//发送寄存器号 
   SPIx_ReadWriteByte(value);      //写入寄存器的值
   NRF24L01_CSN=1;                 //禁止SPI传输    
   return(status);        //返回状态值
}
//读取SPI寄存器值
//reg:要读的寄存器
u8 NRF24L01_Read_Reg(u8 reg)
{
u8 reg_val;     
  NRF24L01_CSN = 0;          //使能SPI传输
   SPIx_ReadWriteByte(reg);   //发送寄存器号
   reg_val=SPIx_ReadWriteByte(0XFF);//读取寄存器内容
   NRF24L01_CSN = 1;          //禁止SPI传输     
   return(reg_val);           //返回状态值
}
//在指定位置读出指定长度的数据
//reg:寄存器(位置)
//*pBuf:数据指针
//len:数据长度
//返回值此次读到的状态寄存器值 
u8 NRF24L01_Read_Buf(u8 regu8 *pBufu8 len)
{
u8 statusu8_ctr;        
   NRF24L01_CSN = 0;           //使能SPI传输
   status=SPIx_ReadWriteByte(reg);//发送寄存器值(位置)并读取状态值       
  for(u8_ctr=0;u8_ctr   NRF24L01_CSN=1;       //关闭SPI传输
   return status;        //返回读到的状态值
}
//在指定位置写指定长度的数据
//reg:寄存器(位置)
//*pBuf:数据指针
//len:数据长度
//返回值此次读到的状态寄存器值
u8 NRF24L01_Write_Buf(u8 reg u8 *pBuf u8 len)
{
u8 statusu8_ctr;     
  NRF24L01_CSN = 0;          //使能SPI传输
   status = SPIx_ReadWriteByte(reg);//发送寄存器值(位置)并读取状态值
   for(u8_ctr=0; u8_ctr   NRF24L01_CSN = 1;       //关闭SPI传输
   return status;          //返回读到的状态值
}    
//启动NRF24L01发送一次数据
//txbuf:待发送数据首地址
//返回值:发送完成状况
u8 NRF24L01_TxPacket(u8 *txbuf)
{
u8 sta;
  SPIx_SetSpeed(SPI_SPEED_8);//spi速度为9Mhz(24L01的最大SPI时钟为10Mhz)   
NRF24L01_CE=0;
   NRF24L01_Write_Buf(WR_TX_PLOADtxbufTX_PLOAD_WIDTH);//写数据到TX BUF  32个字节
  NRF24L01_CE=1;//启动发送    
while(NRF24L01_IRQ!=0);//等待发送完成
sta=NRF24L01_Read_Reg(STATUS);  //读取状态寄存器的值    
NRF24L01_Write_Reg(SPI_WRITE_REG+STATUSsta); //清除TX_DS或MAX_RT中断标志
if(sta&MAX_TX)//达到最大重发次数
{
NRF24L0

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       6128  2014-12-09 20:46  92.4G无线通信\发送\24l01.c

     文件       4419  2014-12-05 20:03  92.4G无线通信\发送\24l01.h

     文件       1628  2013-09-13 12:16  92.4G无线通信\发送\delay.c

     文件        338  2013-09-13 12:16  92.4G无线通信\发送\delay.h

     文件       8578  2013-09-13 12:16  92.4G无线通信\发送\flash.c

     文件       1562  2013-09-13 12:16  92.4G无线通信\发送\flash.h

     文件      16155  2013-09-13 12:16  92.4G无线通信\发送\FONT.H

     文件      22021  2014-12-02 19:48  92.4G无线通信\发送\ILI93xx.c

     文件       1060  2013-09-13 12:16  92.4G无线通信\发送\key.c

     文件        251  2013-09-13 12:16  92.4G无线通信\发送\key.h

     文件       6243  2013-09-13 12:16  92.4G无线通信\发送\LCD.h

     文件        316  2013-09-13 12:16  92.4G无线通信\发送\led.c

     文件        224  2014-12-05 22:14  92.4G无线通信\发送\led.h

     文件      17273  2013-09-13 12:17  92.4G无线通信\发送\Libraries\CMSIS\CM3\CoreSupport\core_cm3.c

     文件      85714  2013-09-13 12:17  92.4G无线通信\发送\Libraries\CMSIS\CM3\CoreSupport\core_cm3.h

     文件     132958  2016-01-01 14:55  92.4G无线通信\发送\Libraries\CMSIS\CM3\DeviceSupport\ST\Release_Notes_for_STM32F10x_CMSIS.html

     文件      15761  2013-09-13 12:17  92.4G无线通信\发送\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm\startup_stm32f10x_cl.s

     文件      15498  2013-09-13 12:17  92.4G无线通信\发送\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm\startup_stm32f10x_hd.s

     文件      12371  2013-09-13 12:17  92.4G无线通信\发送\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm\startup_stm32f10x_ld.s

     文件      13651  2013-09-13 12:17  92.4G无线通信\发送\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm\startup_stm32f10x_ld_vl.s

     文件      12760  2013-09-13 12:17  92.4G无线通信\发送\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm\startup_stm32f10x_md.s

     文件      14068  2013-09-13 12:17  92.4G无线通信\发送\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm\startup_stm32f10x_md_vl.s

     文件      15950  2013-09-13 12:17  92.4G无线通信\发送\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm\startup_stm32f10x_xl.s

     文件      12943  2013-09-13 12:17  92.4G无线通信\发送\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\gcc_ride7\startup_stm32f10x_cl.s

     文件      13042  2013-09-13 12:17  92.4G无线通信\发送\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\gcc_ride7\startup_stm32f10x_hd.s

     文件       9698  2013-09-13 12:17  92.4G无线通信\发送\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\gcc_ride7\startup_stm32f10x_ld.s

     文件      10445  2013-09-13 12:17  92.4G无线通信\发送\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\gcc_ride7\startup_stm32f10x_ld_vl.s

     文件      10154  2013-09-13 12:17  92.4G无线通信\发送\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\gcc_ride7\startup_stm32f10x_md.s

     文件      10941  2013-09-13 12:17  92.4G无线通信\发送\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\gcc_ride7\startup_stm32f10x_md_vl.s

     文件      13143  2013-09-13 12:17  92.4G无线通信\发送\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\gcc_ride7\startup_stm32f10x_xl.s

............此处省略446个文件信息

评论

共有 条评论