资源简介
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算法
相关资源
- 基于STM32F103C8T6的双柄遥控板DMA采样工
- STM32 CUBE空闲中断+DMA双串口透传
- stm32f407增量式编码器测速程序
- STM32F107官方开发板电路包括原理图和
- uCOSII移植STM32F103C8T6范例工程
- STM32F103 串口DMA+空闲中断接收
- STM32F407VGT6 原理图(pdf)
- 基于STM32F767驱动 LTDC LCDRGB屏
- stm32f1+sim800c全部代码GPRS短信电话等
- STM32+FSMC+R61509V驱动程序 16位亲测可用
- 基于STM32、SIM900A、UCOSII的GPRS DTU
- STM32F4链表实现
- STM32F4 7针0.96寸oled驱动.rar
- STM32F030F4P6输入捕获计算频率代码工程
- STM32单片机嵌入式实战教程四章讲义
- STM32F407ZET6最小系统板
- stm32芯片控制ds8b20在1602上显示
- stm32esp8266连web服务器.rar
- stm32 cubemx hal库 串口收发 中断接收 项
- 基于STM32的高速大容量数据采集存储系
- stm32驱动rc522程序
- STM32F407OV7725实时显示.rar
- STM32F103开发板的原理图及PCB
- stm32-ADC实验
- STM32使用IAP升级内部程序源码.rar
- 野火STM32F10X例程源码_超声波.rar
- zw_STM32-modbusmaster.zip
- STM32F103ZET6+FreeRTOS V8.2.3+kfifo巧夺天工
- STM32F103C8T6_FreeRTOS_V10.0_RTC作为FreeRTOS时
- STM32F103RCT6资料
评论
共有 条评论