标题: 基于STM32F103C8T6的NRF24L01 2.4G无线模块接收端程序 [打印本页]

作者: 绽放中的青春    时间: 2020-2-17 11:08
标题: 基于STM32F103C8T6的NRF24L01 2.4G无线模块接收端程序
/*********此程序时基于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);
            
    }
}



基于STM32F103C8T6的NRF24L01 2.4G无线模块接收端程序.7z

214.12 KB, 下载次数: 259, 下载积分: 黑币 -5


作者: 殷相鑫    时间: 2020-3-7 01:34
感谢感谢
作者: bigsear    时间: 2020-4-7 14:40
你这不对啊 你程序选的芯片还是ZET6 不可能下载的到C8t6里面的

作者: 绽放中的青春    时间: 2020-4-23 10:18
bigsear 发表于 2020-4-7 14:40
你这不对啊 你程序选的芯片还是ZET6 不可能下载的到C8t6里面的

可以下载的亲测有效,可以用串口下载到zet6
作者: 鱼缸没有鱼    时间: 2021-5-10 20:48
我的也是STM32F103 下载来试试 谢谢你的帮助

作者: 鱼缸没有鱼    时间: 2021-5-11 16:43
测试过了有效 前来感谢!
作者: 15615151    时间: 2021-6-23 01:23
请问无法接收数据,您是怎么解决的
作者: 王者不可阻挡    时间: 2021-8-4 21:59
在CSDN碰壁的我,在这里找到了福音




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1