找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5238|回复: 7
打印 上一主题 下一主题
收起左侧

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

  [复制链接]
跳转到指定楼层
楼主
ID:683358 发表于 2020-2-17 11:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/*********此程序时基于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

评分

参与人数 1黑币 +5 收起 理由
王者不可阻挡 + 5 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏8 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:703806 发表于 2020-3-7 01:34 | 只看该作者
感谢感谢
回复

使用道具 举报

板凳
ID:230600 发表于 2020-4-7 14:40 | 只看该作者
你这不对啊 你程序选的芯片还是ZET6 不可能下载的到C8t6里面的
回复

使用道具 举报

地板
ID:683358 发表于 2020-4-23 10:18 | 只看该作者
bigsear 发表于 2020-4-7 14:40
你这不对啊 你程序选的芯片还是ZET6 不可能下载的到C8t6里面的

可以下载的亲测有效,可以用串口下载到zet6
回复

使用道具 举报

5#
ID:470227 发表于 2021-5-10 20:48 | 只看该作者
我的也是STM32F103 下载来试试 谢谢你的帮助
回复

使用道具 举报

6#
ID:470227 发表于 2021-5-11 16:43 | 只看该作者
测试过了有效 前来感谢!
回复

使用道具 举报

7#
ID:823740 发表于 2021-6-23 01:23 | 只看该作者
请问无法接收数据,您是怎么解决的
回复

使用道具 举报

8#
ID:836950 发表于 2021-8-4 21:59 | 只看该作者
在CSDN碰壁的我,在这里找到了福音
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表