资源简介
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个文件信息
- 上一篇:汉王高拍仪开发包
- 下一篇:模式匹配—BF算法和KMP算法
相关资源
- 基于stm32f103ve的程序——跑马灯实验
- 基于STM32RCT6的步进电机驱动程序
- stm32f407上的两个can发送和接收例程
- STM32 led 时钟
- STM32 2.4G通信例程
- 直流无刷电机方波驱动 stm32 例程代码
- STM32中文资料
- STM32蓝牙和串口程序
- STM32f103超声波模块例程
- stm32f103c8t6 4 oled.rar
- stm32f030 IAP Demo(原创)
- 飞思卡尔单片机MC9S12XS12G128驱动(硬件
- STM32基于rt_thread操作系统的SDHC卡文件
- NRF24L01实现51与STM32双向通讯
- STM32F103 串口程序(完整版)
- stm32 ds18b20 温度传感器 测试通过
- stm32官方例程
- STM32F103定时器中断程序
- [免费]基于stm32f103ze 的OLED驱动代码
- STM32F103RBT6驱动UC1698控制芯片的160160黑
- STM32F103 DS18B20 V3.5.0固件库驱动程序工
- STM32定时器使用入门。看了这个程序会
- SIM908 SDIO FSMC STM32 FIFO
- STM32F103 CC2500完整驱动(模拟SPI)
- AD7606采集程序
- stm32 用SPI 方式读写 SDHC
- stm32通过DMA方式采集ADC数据
- 意法半导体STM全系列微控制器STM32ST
- 基于STM32芯片的SX1278 驱动 LORA.rar
- STM32的PCB封装库,以及原理图库,48
评论
共有 条评论