/*********此程序时基于STM32F103C8T6的NRF24L01 2.4G无线模块接收端程序,程序主题是在普中科技程序上进行修改。由于普中使用的STM32芯片型号为STM32F103ZET6,故对引脚部分进行了修改*****************/
/******发送端发送数组信号,接收端对接收的数组进行判断,不同数组值对应小灯(小系统板自带的PC13)的不同状态**********/
/******由于小系统板STM32F103C8T6没有LCD屏幕,将原有程序的LCD输出显示都改为了串口printf*****/
#include "system.h"
#include "SysTick.h"
#include "led.h"
#include "usart.h"
//#include "tftlcd.h"
#include "key.h"
#include "nrf24l01.h"
void data_pros() //数据处理函数
{
u8 key;
static u8 mode=2; //模式选择
u8 rx_buf[33]={1};
static u16 t=0;
rx_buf[3] = 2;
while(1) //等待按键按下进行选择发送还是接收
{
//key=KEY_Scan(0);
// if(key==KEY_UP) //接收模式
// {
mode=0;
//LCD_ShowString(10,140,tftlcd_data.width,tftlcd_data.height,16,"RX_Mode");
printf("输出字符串str=%s\r\n","RX_Mode");
//LCD_ShowString(10,160,tftlcd_data.width,tftlcd_data.height,16,"Received Data:");
printf("输出字符串str=%s\r\n","Received Data:");
//LCD_ShowString(120,160,tftlcd_data.width,tftlcd_data.height,16," ");
printf("输出字符串str=%s\r\n"," ");
break;
// if(key==KEY_DOWN) //发送模式
// {
// mode=1;
// //LCD_ShowString(10,140,tftlcd_data.width,tftlcd_data.height,16,"TX_Mode");
// printf("输出字符串str=%s\r\n","TX_Mode");
// //LCD_ShowString(10,160,tftlcd_data.width,tftlcd_data.height,16,"Send Data: ");
// printf("输出字符串str=%s\r\n","Send Data: ");
// //LCD_ShowString(120,160,tftlcd_data.width,tftlcd_data.height,16," ");
// printf("输出字符串str=%s\r\n"," ");
// break;
// }
}
if(mode==0) //接收模式
{
NRF24L01_RX_Mode();
while(1)
{
if(NRF24L01_RxPacket(rx_buf)==0) //接收到数据显示
{
rx_buf[32]='\0';
//LCD_ShowString(120,160,tftlcd_data.width,tftlcd_data.height,16,rx_buf);
if(rx_buf[3]==2)
{
led13=0;
}
if(rx_buf[3]==3)
{
led13=1;
}
if(rx_buf[3]==4)
{
led13=1;
delay_ms(250);
led13=0;
delay_ms(250);
}
if(rx_buf[3]==5)
{
led13=1;
delay_ms(1000);
led13=0;
delay_ms(1000);
}
printf("输出字符串str=%d\r\n",rx_buf[3]);
break;
}
else
{
delay_ms(1);
}
t++;
if(t==1000)
{
t=0;
led2=~led2; //一秒钟改变一次状态
}
}
}
// if(mode==1) //发送模式
// {
//
// NRF24L01_TX_Mode();
// while(1)
// {
// if(NRF24L01_TxPacket(rx_buf)==TX_OK)
// {
// //LCD_ShowString(120,160,tftlcd_data.width,tftlcd_data.height,16,rx_buf);
// printf("输出字符串data=%d\r\n",rx_buf[3]);
// break;
// }
// else
// {
// //LCD_ShowString(120,160,tftlcd_data.width,tftlcd_data.height,16,"Send Data Failed ");
// printf("输出字符串str=%s\r\n","Send Data Failed ");
// }
// }
// }
}
int main()
{
u8 i=0;
u16 rd=0;
SysTick_Init(72);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //中断优先级分组 分2组
LED_Init();
USART1_Init(9600);
//TFTLCD_Init(); //LCD初始化
KEY_Init();
NRF24L01_Init();
//FRONT_COLOR=BLACK;
//LCD_ShowString(10,10,tftlcd_data.width,tftlcd_data.height,16,"PRECHIN STM32F1");
printf("输出字符串str=%s\r\n","PRECHIN STM32F1");
//LCD_ShowString(10,30,tftlcd_data.width,tftlcd_data.height,16,"wwwnet");
printf("输出字符串str=%s\r\n","wwwnet");
//LCD_ShowString(10,50,tftlcd_data.width,tftlcd_data.height,16,"NRF24L01 Test");
printf("输出字符串str=%s\r\n","NRF24L01 Test");
//LCD_ShowString(10,70,tftlcd_data.width,tftlcd_data.height,16,"K_UP:RX_Mode K_DOWN:TX_Mode");
printf("输出字符串str=%s\r\n","K_UP:RX_Mode K_DOWN:TX_Mode");
//FRONT_COLOR=RED;
while(NRF24L01_Check()) //检测NRF24L01是否存在
{
// LCD_ShowString(140,50,tftlcd_data.width,tftlcd_data.height,16,"Error ");
printf("输出字符串str=%s\r\n","Error ");
}
//LCD_ShowString(140,50,tftlcd_data.width,tftlcd_data.height,16,"Success");
printf("输出字符串str=%s\r\n","Success");
while(1)
{
data_pros();
i++;
if(i%20==0)
{
led1=!led1;
}
delay_ms(10);
}
}
|