OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 11663|回复: 30

nrf24l01+ 完结帖

[复制链接]

75

主题

458

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1633
金钱
1633
注册时间
2012-8-28
在线时间
71 小时
发表于 2018-2-11 19:23:08 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 750273008 于 2018-3-10 09:46 编辑

NRF24L01+的模块所有问题在这个帖子讨论吧。我为你们解答。
毕竟玩了有段时间了。
我重新修改了  C  文件和  H  文件,你们下载后,稍微移植下,就可以用了。不会有什么大的问题。
//这次加入了半双工模式
//24L01操作线
#define NRF24L01_GND    0           //24L01电源0v
#define NRF24L01_VCC    3.3         //24L01电源3.3v
#define NRF24L01_CE     CE         //24L01天线使能(高电平有效)
#define NRF24L01_CSN    CSN //spi传输使能(低电平有效)
#define NRF24L01_SCK    SCK //spi时钟(上升沿有效)
#define NRF24L01_MOSI   MOSI//spi输入脚(上位机MO输出,下位机SI输入)
#define NRF24L01_MISO   MISO//spi输出脚(上位机MI输入,下位机SO输出)
#define NRF24L01_IRQ    IRQ //中断脚输出(拉低电平)

//////////////////////////////////////////////////////////////////////////////////         
// 写一个字节,同时读出一个字节
u8 SPI_ReadWriteByte(u8 byte)//[D7:D0][D15:D8]
  {
   u8 i,data;//循环8次
//         SCK=0;//时钟准备
//         CSN=0;//使能spi传输
         data=byte;//数据准备
   for(i=0;i<8;i++)// output 8-bit
      {
        if(data & 0x80)MOSI = 1;// 输出高位逻辑值
                                          else MOSI = 0;
                                delay_us(1);//nrf24l01要>40ns;
        data = (data<<1);       // 丢弃高位,低位补0
        SCK = 1; // SCK 上升沿有效
                                delay_us(1);
                                if((MISO&0x01)==0x01)data|=0x01;
        SCK = 0; // ..then set SCK low again
       }
   return(data); // 输出读取的8位
}

//////////////////////////////////////////////////////////////////////#include "stm32f4xx.h"
#include "stm32f4xx_conf.h"
#include "delay.h"
#include "spi.h"
#include "nrf24l01plus.h"//nrf24L01+无线模块

void HardFault_Handler()
{


}//硬件故障

int main(void)
   {
                 static u8 rxbuf[32]={0};//接收包
                 static u8 txbuf[32]={0};//发送包
     static u8 P,i=0x0f;//P通道地址
                 static u8 temp;//0x07寄存器的值
//                 SystemInit();//时钟初始化
                 delay_init();
                 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);        //设置NVIC中断分组2:2位抢占优先级,2位响应优先级

////////////////////////////////////////////////////////////
//A.tx-B.p1    B.tx-A.p1
     NRF24L01_bilateral_A_Init();//初始化NRF24L01为上位机A,
//                 NRF24L01_bilateral_B_Init();//初始化NRF24L01 为下位机B
//////////////////////////////////////////////////

                 for(i=0;i<32;i++) txbuf=0x41+i;  //字母A开始//写数据包
                 i=0;
                 
                 while(1)//循环发送
                        {
                                
/////////////////////////
//写数据包
                                txbuf[0]=0x41+(i++);//写数据包//A.B.C.D....
                                if(txbuf[0]>0x41+26-1){txbuf[0]=0x41;i=0;}//Z->A
//       txbuf[0]=0x00;//没有数据要发送
////////////////////////////
                                
                                
//数据 发送成功一次就跳出一次
                                while(1)//发送成功一次跳出
                                {
                                        temp=NRF24L01_bilateral_Pack(rxbuf,txbuf);//接收包优先,后TX数据包
                                        if(temp&1<<6 )//收到数据
                                         {
                                                P=temp>>1;
                                                P=P&0x07;//取出接收通道的编号;
                                                switch(P)//通道
                                                {
                                                        case 0:             break;//通道P0
                                                        case 1:             break;//通道P1
                                                        case 2:             break;//通道P2
                                                        case 3:             break;//通道P3
                                                        case 4:             break;//通道P4
                                                        case 5:             break;//通道P5
                                                        default:            break;//无效
                                                }
                                   }        
                                 if(temp&1<<5)break;//发送成功才跳出;
                                
                        }
                }
}
         
        
        
        





temp.zip

2.66 MB, 下载次数: 397

最新

51的2401双通讯.zip

132.73 KB, 下载次数: 225

最新

最佳答案

查看完整内容[请看2#楼]

有需要帮助的留言。注意看下函数 NRF24L01_bilateral_A_Init();//初始化NRF24L01为上位机A,[/backcolor] // NRF24L01_bilateral_B_Init();//初始化NRF24L01 为下位机B[/backcolor] 写数据包函数是 j=NRF24L01_bilateral_Pack(rxbuf,txbuf);//接收包优先,后TX数据包
QQ750273008有好的资料记得发给我哦。。。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

75

主题

458

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1633
金钱
1633
注册时间
2012-8-28
在线时间
71 小时
 楼主| 发表于 2018-2-11 19:23:09 | 显示全部楼层
本帖最后由 750273008 于 2018-2-17 22:36 编辑

有需要帮助的留言。注意看下函数
NRF24L01_bilateral_A_Init();//初始化NRF24L01为上位机A,
//                 NRF24L01_bilateral_B_Init();//初始化NRF24L01 为下位机B
写数据包函数是
j=NRF24L01_bilateral_Pack(rxbuf,txbuf);//接收包优先,后TX数据包
回复

使用道具 举报

75

主题

458

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1633
金钱
1633
注册时间
2012-8-28
在线时间
71 小时
 楼主| 发表于 2018-2-12 22:17:29 | 显示全部楼层
//TX发送模式下,P0被占用,用来接收应答信号,
所以P0接收地址要和发送地址一样。P0的应答必须开启。
QQ750273008有好的资料记得发给我哦。。。
回复

使用道具 举报

6

主题

462

帖子

0

精华

高级会员

Rank: 4

积分
904
金钱
904
注册时间
2017-12-15
在线时间
111 小时
发表于 2018-2-12 23:00:41 | 显示全部楼层
刚刚完成nrf24l01的焊接。

请教一下,

这个芯片是否具备查询当前空中所有在线设备的功能?
这个芯片能够进行空中的全双工通讯(类似于全双工也可以)?
这个芯片是通过什么样的机制找到目标并建立通讯的呢,通道?频率?还是其他东西?
回复

使用道具 举报

75

主题

458

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1633
金钱
1633
注册时间
2012-8-28
在线时间
71 小时
 楼主| 发表于 2018-2-12 23:12:35 | 显示全部楼层
a496298685 发表于 2018-2-12 23:00
刚刚完成nrf24l01的焊接。

请教一下,

1无法准确查询所有设备,但可以扫描所有频率范围。通过载波检测大概知道当前有多少个设备。
2不能全双工,但可以半双工。A和B可以A发B收也可以B发A收
3通讯默认是使用前设置好帧的。地址频率速度等设置一样才可通讯。
QQ750273008有好的资料记得发给我哦。。。
回复

使用道具 举报

6

主题

462

帖子

0

精华

高级会员

Rank: 4

积分
904
金钱
904
注册时间
2017-12-15
在线时间
111 小时
发表于 2018-2-12 23:29:19 | 显示全部楼层
750273008 发表于 2018-2-12 23:12
1无法准确查询所有设备,但可以扫描所有频率范围。通过载波检测大概知道当前有多少个设备。
2不能全双工 ...

感谢回复,你的简单陈述给我了极其重要的一些信息。
那么请允许我继续问。

两个nRF24L01+必须要频率设置相同才可以通讯。(应该是这样吧)

那么同一个频率有三个设备会怎么样,芯片有相关的自动仲裁吗?
据说它的通讯在每个频点上还有若干个通道,这若干的通道可以相互独立使用吗,可以同时使用吗?
它的空中通讯是广播式的还是点对点通讯的?(它支持单播、多播、广播中的哪几种?)
回复

使用道具 举报

75

主题

458

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1633
金钱
1633
注册时间
2012-8-28
在线时间
71 小时
 楼主| 发表于 2018-2-14 19:44:59 | 显示全部楼层
a496298685 发表于 2018-2-12 23:29
感谢回复,你的简单陈述给我了极其重要的一些信息。
那么请允许我继续问。

影响的条件有1频率(2400~2525MHz)2速度(250kps,1M,2M)3地址4应答方式5地址长度(这个在协议帧里,还可以修改其他)6CRC校验方式7距离。有1个不同会导致接收不到。所以有重复干扰情况几乎不存在。就拿第7条距离来讲,一般45米,带PA的1000米,在1000米内别人的模块还必须知道你的地址,40个bit你看看有多少种可能性?0x0000000000到0xFFFFFFFFFF这得多少个模块啊!还有CRC。2字节。再说发送模式下,发送一个帧时间可能500us吧,其他时间都是静止的。可以忽略同模块干扰问题。比如别人想分析你的数据也非常困难,最多能找到你使用的频率,除非使用nordic的usb加密狗来分析。如果你传输的数据加密的话,可以说没发分析。真要这么简单,明天就把美国的卫星遥下来。
QQ750273008有好的资料记得发给我哦。。。
回复

使用道具 举报

75

主题

458

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1633
金钱
1633
注册时间
2012-8-28
在线时间
71 小时
 楼主| 发表于 2018-2-14 19:58:10 | 显示全部楼层
750273008 发表于 2018-2-14 19:44
影响的条件有1频率(2400~2525MHz)2速度(250kps,1M,2M)3地址4应答方式5地址长度(这个在协议帧里,还 ...

当然,如果你想把模块组成比较奇葩的配置也是可以的。1发送2接收转发给3或者1发送n多个模块接收。还可以1模块发送,2模块接收再修改内容,添加或减少数据,再转发给模块3.总之只有你想不到,没有做不到的。甚至玩跳频。模块的通讯是双向的,既可以接收也可以发送。只是同一时间只能选一种模式。你可以错开时间来实现双向通讯,要不等我改下函数,等我写好了再上传给你们。
QQ750273008有好的资料记得发给我哦。。。
回复

使用道具 举报

75

主题

458

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1633
金钱
1633
注册时间
2012-8-28
在线时间
71 小时
 楼主| 发表于 2018-2-14 20:39:20 | 显示全部楼层
本帖最后由 750273008 于 2018-2-25 21:39 编辑

//////////////////////////////////////////////////////////
//中断中函数
u8 NRF24L01_bilateral_Pack(u8 *rxbuf,u8 *txbuf)//双向一个包的数据
{
          u8 temp=0;//状态值
//    u8 look;
       
////////////////////////////////////////////////////////////////
//状态;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
           temp=NRF24L01_Read_Reg(STATUS);  //0x52, 0x42,0x02

//////////////////////////////////
//RX数据优先
                 if((temp&0x0e)!= 0x0e)//接收到数据
           {
//                        NRF24L01_Write_Reg(STATUS,temp); //清除中断   0x07应该0x0e

                        NRF24L01_Read_Buf(RD_RX_PLOAD,rxbuf,RX_PLOAD_WIDTH);//0x61 读取数据

                        return temp; //接收完成
                 }
                 
                 
///////////////////////////////////////
//TX模式//第一次发送3时接收机显示1(缓存了3组内容)或者发“A”发3次后,接收机显示A
                  if(*txbuf!=0x00)//数据非空
             {
                          NRF24L01_Write_Reg(STATUS,temp); //清除中断
                         //      0x00寄存器配置参数  
                                NRF24L01_Write_Reg(CONFIG, 0<<6 |    //IRQ中断脚使用   0开,1关
                                                                                                                                         0<<5 |    //发送完成中断    0开,1关
                                                                                                                                         0<<4 |    //重发超限中断    0开,1关
                                                                                                                                         1<<3 |    //CRC开关         0关,1开
                                                                                                                                         1<<2 |    //CRC字节         0八,1十六
                                                                                                                                         1<<1 |    //上电模式        0关,1开
                                                                                                                                         0<<0 ); //广播模式     0发送   1接收
                       
                                NRF24L01_CE=0;                         //关闭24L01天线
                                NRF24L01_Write_Buf(WR_TX_PLOAD,txbuf,TX_PLOAD_WIDTH);//0xa0写数据到TX BUF  max32个字节
                                NRF24L01_CE=1;//启动发送       
///////////////////////////////
//等中断
                                while((NRF24L01_IRQ&0x01)!=0);//等待中断脚输出
                                temp=NRF24L01_Read_Reg(STATUS);  //0x02下TX后  0x22
                                 NRF24L01_Write_Reg(STATUS,temp); //清除TX_DS或MAX_RT中断标志
                         
                                if(temp&1<<6)//发送过程中收到数据
                                {
                                        NRF24L01_Read_Buf(RD_RX_PLOAD,rxbuf,RX_PLOAD_WIDTH);//0x61 读取数据
                                        return temp;//接收优先
                                }
//////////////////////////////
                                if(temp&1<<4)//达到最大重发次数(发送失败0x1e)
                                {
                                        //清除缓存
                                        NRF24L01_Write_Reg(FLUSH_TX,0xff);//0xE1 清除TX FIFO寄存器
                                }
///////////////////////////////////////
//RX模式
     //0x00寄存器配置参数  
                                NRF24L01_Write_Reg(CONFIG, 0<<6 |    //IRQ中断脚使用   0开,1关
                                                                                                                                         0<<5 |    //发送完成中断    0开,1关
                                                                                                                                         0<<4 |    //重发超限中断    0开,1关
                                                                                                                                         1<<3 |    //CRC开关         0关,1开
                                                                                                                                         1<<2 |    //CRC字节         0八,1十六
                                                                                                                                         1<<1 |    //上电模式        0关,1开
                                                                                                                                         1<<0 ); //广播模式     0发送   1接收
                                ////////////////////
                                //准备接收
                                delay_us(250);//越小反而不好。
                                return temp;//0x07寄存器值
                        }
}



QQ750273008有好的资料记得发给我哦。。。
回复

使用道具 举报

75

主题

458

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1633
金钱
1633
注册时间
2012-8-28
在线时间
71 小时
 楼主| 发表于 2018-2-14 20:40:56 | 显示全部楼层
本帖最后由 750273008 于 2018-2-14 20:54 编辑
750273008 发表于 2018-2-14 19:58
当然,如果你想把模块组成比较奇葩的配置也是可以的。1发送2接收转发给3或者1发送n多个模块接收。还可以1 ...
垃圾,一直重复上传图片不了
QQ750273008有好的资料记得发给我哦。。。
回复

使用道具 举报

75

主题

458

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1633
金钱
1633
注册时间
2012-8-28
在线时间
71 小时
 楼主| 发表于 2018-2-14 20:41:54 | 显示全部楼层
本帖最后由 750273008 于 2018-2-14 20:55 编辑
750273008 发表于 2018-2-14 19:58
当然,如果你想把模块组成比较奇葩的配置也是可以的。1发送2接收转发给3或者1发送n多个模块接收。还可以1 ...

垃圾,一直重复上传图片不了
QQ750273008有好的资料记得发给我哦。。。
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2017-12-24
在线时间
3 小时
发表于 2018-3-4 21:30:00 | 显示全部楼层
有没有F407的资料
回复

使用道具 举报

17

主题

465

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2142
金钱
2142
注册时间
2013-1-11
在线时间
504 小时
发表于 2018-3-6 17:51:22 | 显示全部楼层
谢谢分享!!!!
知识是你最好的财富
回复

使用道具 举报

0

主题

11

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
215
金钱
215
注册时间
2016-11-18
在线时间
32 小时
发表于 2018-3-7 21:26:24 | 显示全部楼层
大佬   ,有没有STMS003F3P6的相关例程 。。搞不通啊
回复

使用道具 举报

8

主题

569

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2363
金钱
2363
注册时间
2015-5-8
在线时间
320 小时
发表于 2018-3-7 22:49:57 | 显示全部楼层
谢谢分享
回复

使用道具 举报

0

主题

7

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2017-1-24
在线时间
8 小时
发表于 2018-3-23 15:38:35 | 显示全部楼层
谢谢分享!!
回复

使用道具 举报

1

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2018-3-28
在线时间
7 小时
发表于 2018-3-28 17:49:19 | 显示全部楼层
请问传输大量数据时,如何通过接收端将数据保存到数组。为什么我保存的时候不能将接收的数据赋值给自定义的数组。
回复

使用道具 举报

75

主题

458

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1633
金钱
1633
注册时间
2012-8-28
在线时间
71 小时
 楼主| 发表于 2018-3-29 20:27:09 | 显示全部楼层
董想 发表于 2018-3-28 17:49
请问传输大量数据时,如何通过接收端将数据保存到数组。为什么我保存的时候不能将接收的数据赋值给自定义的 ...

仿真看过没?手动赋值看看,如果没问题看看是不是中断的原因,收到数据取出给数组,可能还没取完又中断了。
QQ750273008有好的资料记得发给我哦。。。
回复

使用道具 举报

1

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2018-3-28
在线时间
7 小时
发表于 2018-4-2 08:44:06 | 显示全部楼层
750273008 发表于 2018-3-29 20:27
仿真看过没?手动赋值看看,如果没问题看看是不是中断的原因,收到数据取出给数组,可能还没取完又中断了 ...

没有用中断吧
回复

使用道具 举报

75

主题

458

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1633
金钱
1633
注册时间
2012-8-28
在线时间
71 小时
 楼主| 发表于 2018-4-2 16:24:29 | 显示全部楼层
董想 发表于 2018-3-28 17:49
请问传输大量数据时,如何通过接收端将数据保存到数组。为什么我保存的时候不能将接收的数据赋值给自定义的 ...

全是0x00吗?还是乱码?
QQ750273008有好的资料记得发给我哦。。。
回复

使用道具 举报

75

主题

458

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1633
金钱
1633
注册时间
2012-8-28
在线时间
71 小时
 楼主| 发表于 2018-4-2 16:29:24 | 显示全部楼层

收发数据ce使能之前必须保证0x07寄存器的值是0x0e。如果上次为重发最大次数,这个状态没清除,会导致故障。
QQ750273008有好的资料记得发给我哦。。。
回复

使用道具 举报

1

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2018-3-28
在线时间
7 小时
发表于 2018-4-3 17:23:55 | 显示全部楼层
750273008 发表于 2018-4-2 16:29
收发数据ce使能之前必须保证0x07寄存器的值是0x0e。如果上次为重发最大次数,这个状态没清除,会导致故障 ...

方不方便发份代码。邮箱:dongxianghd@qq.com
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
24
金钱
24
注册时间
2017-9-22
在线时间
4 小时
发表于 2018-4-19 10:45:19 | 显示全部楼层
您好,有没有F7的一对多的nrf24l01通讯代码,我这边做一个项目,可以付费的
回复

使用道具 举报

2

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2018-4-22
在线时间
17 小时
发表于 2018-4-28 09:25:09 | 显示全部楼层
请问如果想用nrf发送一个浮点型的数组 该如何操作
回复

使用道具 举报

4

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2018-4-8
在线时间
9 小时
发表于 2018-5-1 11:37:17 | 显示全部楼层
请教一下,如果想实现发送端不停的发送数据,以下的代能够实现吗? 芯片设置为,关闭了自动应答功能,自动重发,允许接收地址零
        while(1)
        {
                        nRF24L01_TxPacket(Tx_Buf1);        // 发送命令数据
                        LED=0;
                        delay_ms(2000);
                        LED=1;
        }
目前能实现按51发和stm32收,但是stm32似乎只能收到一次数据
回复

使用道具 举报

20

主题

450

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4638
金钱
4638
注册时间
2017-7-6
在线时间
705 小时
发表于 2018-6-1 15:30:31 | 显示全部楼层
大佬 可以加个好友吗?
我是小白,很白很白的小白!!!
回复

使用道具 举报

2

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
122
金钱
122
注册时间
2018-10-15
在线时间
32 小时
发表于 2018-11-17 16:03:38 | 显示全部楼层
你好,问一下我的自动应答一直不成功,请指导一下,谢谢,用的stm32f103 与 407通信我的贴子是:http://www.openedv.com/forum.php ... d=282971&extra=
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2022-1-15
在线时间
8 小时
发表于 2022-3-27 23:14:35 | 显示全部楼层
大佬,请问有没有实现:实现电脑与战舰V3无线通信的程序(电脑端是USB无线串口模块+nrf24l01),非常感谢!
回复

使用道具 举报

4

主题

62

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
497
金钱
497
注册时间
2022-4-4
在线时间
66 小时
发表于 2022-4-5 20:06:56 来自手机 | 显示全部楼层
我问一下,我这个能检测到这个模块但是传输数据的时候一直传输不过去显示的是失败的那个程序效果
回复

使用道具 举报

75

主题

458

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1633
金钱
1633
注册时间
2012-8-28
在线时间
71 小时
 楼主| 发表于 2022-4-16 02:32:02 | 显示全部楼层
vbgh 发表于 2022-4-5 20:06
我问一下,我这个能检测到这个模块但是传输数据的时候一直传输不过去显示的是失败的那个程序效果

你是不是应答模式的发送?应答模式需要另一个接收模块配合使用
QQ750273008有好的资料记得发给我哦。。。
回复

使用道具 举报

0

主题

6

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2020-7-24
在线时间
2 小时
发表于 2022-12-13 13:49:58 | 显示全部楼层
楼主,是否做过2.4g跳频算法相关的内容
回复

使用道具 举报

75

主题

458

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1633
金钱
1633
注册时间
2012-8-28
在线时间
71 小时
 楼主| 发表于 2022-12-22 05:25:51 | 显示全部楼层
Mrli666 发表于 2022-12-13 13:49
楼主,是否做过2.4g跳频算法相关的内容

好久不玩了,现在玩以太网 socket,这个才是主流
QQ750273008有好的资料记得发给我哦。。。
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 16:10

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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