标题:
24L01在STM8上的源码
[打印本页]
作者:
你说的四月天
时间:
2018-9-15 20:33
标题:
24L01在STM8上的源码
收发一体,硬件SPI
单片机源程序如下:
/******************** (C) COPYRIGHT 2014青风电子********************************
* 文件名 :main.c
* 描述 :I2C 读写(AT24C02)测试。
*
* 实验平台:QF-STM8开发板
* 库版本 :ST3.0.0
*
* 作者 :青风
*
**********************************************************************************/
/***头文件调用****/
#include <stdio.h>
#include "stm8s.h"
#include "stm8s_clk.h"
#include "string.h"
#include "stm8s_spi.h"
#include "stm8s_gpio.h"
#include "stm8s_clk.h"
#include "rf24l01.h"
#include "uart.h"
#include "led.h"
extern volatile unsigned char touch_flag;
uchar rece_buf[32];
//接收串口数据
int recive(void)
{
uint i=0;uchar j=0;
if(((UART1->SR)&(1<<5)))//串口状态寄存器读数据寄存器非空判断是否接收数据
{
rece_buf[++j]=UART1->DR;//把接收的数据放入DR寄存器中
UART1->SR=(0<<5);
while(i<500) //设置接收长度
{
if(((UART1->SR)&(1<<5)))//再判断一次
{
rece_buf[++j]=UART1->DR;
i=0;
}
i++;//循环接收
}
rece_buf[0] =j;
return 0;
}
else
{
return 1;
}
}
int main(void)
{
uchar i=0;uint t=0;
SPI_RF_Init();//初始化无线nrf24l01底层驱动
USART_Configuration();//初始化串口底层驱动
while(NRF24L01_Check()); //自发送自接收检查是否无线设备完好
NRF24L01_RT_Mode();//设置模式
while(1)//循环判断
{
if(SPI_RF_IRQ()==0) //通过nrf的中断管脚判断是否是接收无线数据
{
if(NRF24L01_RxPacket(rece_buf)==0)
{
if((rece_buf[0])<32)
{
for(i=0;i<rece_buf[0];i++)
UART_send_byte(rece_buf[i+1]);
}
}
}
if(recive()==0) //发送无线数据
{
SPI_RF_CE_LOW();
NRF24L01_Write_Reg(WRITE_REG+CONFIG,0x0e);
SPI_RF_CE_HIGH();
NRF24L01_TxPacket(rece_buf);
SPI_RF_CE_LOW();
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
实验四十一:无线串口透传.zip
(1.15 MB, 下载次数: 10)
2018-9-15 20:33 上传
点击文件名下载附件
源码 24L01
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1