OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子全套STM32开发资料,上千讲STM32视频教程,RT1052教程免费下载啦...
12
返回列表 发新帖
楼主: fanghuiopenedv

分享:增量型AB相编码器检测

[复制链接]

  离线 

30

主题

104

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
244
金钱
244
注册时间
2015-8-9
在线时间
0 小时
发表于 2015-8-18 20:21:33 | 显示全部楼层
回复 支持 反对

使用道具 举报

  离线 

30

主题

707

帖子

1

精华

新手入门

积分
15
金钱
15
注册时间
2013-3-14
在线时间
52 小时
 楼主| 发表于 2015-8-21 13:35:42 | 显示全部楼层
回复【51楼】wolfcan:
---------------------------------
我没有F407的。
原子哥是不是又要出黑科技了呀。^_^...
回复 支持 反对

使用道具 举报

  离线 

30

主题

104

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
244
金钱
244
注册时间
2015-8-9
在线时间
0 小时
发表于 2015-8-21 17:31:34 | 显示全部楼层
回复【52楼】fanghuiopenedv:
---------------------------------
嗯嗯,没关系,也谢谢你;我是初学,以后多向大家请教
回复 支持 反对

使用道具 举报

  离线 

0

主题

3

帖子

0

精华

新手入门

积分
45
金钱
45
注册时间
2015-8-28
在线时间
2 小时
发表于 2015-8-30 08:45:22 | 显示全部楼层
回复【52楼】fanghuiopenedv:
---------------------------------
請問當使用STM32F072RB TIM3 Encoder interface mode, 
建構 Quadrature encoder (正交編碼器)時, A/B pins 是否需要 
額外加上上拉至3.3V 的電路呢 ? 還是選 Encoder Interface mode 
時, 會自動啟用IC 內部 pull-up resistor 呢?
qq: 1926956046email: boltnut168@gmail.com
回复 支持 反对

使用道具 举报

  离线 

30

主题

707

帖子

1

精华

新手入门

积分
15
金钱
15
注册时间
2013-3-14
在线时间
52 小时
 楼主| 发表于 2015-8-31 09:07:50 | 显示全部楼层
回复【54楼】boltnut:
---------------------------------
要注意到的是:stm32f0xx系列和stm32f10x系列配置是有不一样的地方的。一个是CM0,一个是CM3。
不需要上拉的。但是应该需要光耦隔离。我用的是高速光耦PC410进行隔离的。
编码器一般是12v-36v电压下工作,3.3v的好像驱动不了编码器内部的电路的。
用光耦隔离也相当于进行了电平的转换了。
原子哥是不是又要出黑科技了呀。^_^...
回复 支持 反对

使用道具 举报

  离线 

0

主题

3

帖子

0

精华

新手入门

积分
45
金钱
45
注册时间
2015-8-28
在线时间
2 小时
发表于 2015-8-31 18:48:00 | 显示全部楼层
感謝您的指點.
我使用收音機上的選臺旋鈕.
F11ET Series Rotary encoder.
不知除了 debounce 電路外, 是否仍需要上拉電阻電路 ?

qq: 1926956046email: boltnut168@gmail.com
回复 支持 反对

使用道具 举报

  离线 

30

主题

707

帖子

1

精华

新手入门

积分
15
金钱
15
注册时间
2013-3-14
在线时间
52 小时
 楼主| 发表于 2015-8-31 19:39:49 | 显示全部楼层
回复【56楼】boltnut:
---------------------------------
这个东东,我没有用过呀。不清楚里面的构造,不敢妄言。
你还是找找这个东东的规格书什么的吧。看看是什么信号输出的,
然后再考虑怎么检测这个信号。
原子哥是不是又要出黑科技了呀。^_^...
回复 支持 反对

使用道具 举报

  离线 

97

主题

273

帖子

0

精华

高级会员

Rank: 4

积分
691
金钱
691
注册时间
2014-11-13
在线时间
17 小时
发表于 2015-9-14 21:46:39 | 显示全部楼层
漂亮,给个赞乾贞治!
回复 支持 反对

使用道具 举报

  离线 

6

主题

42

帖子

0

精华

初级会员

Rank: 2

积分
153
金钱
153
注册时间
2015-6-20
在线时间
16 小时
发表于 2015-9-29 16:59:04 | 显示全部楼层
回复【22楼】吃咯:
---------------------------------
你的编码器最终搞定了吗?
回复 支持 反对

使用道具 举报

  离线 

30

主题

707

帖子

1

精华

新手入门

积分
15
金钱
15
注册时间
2013-3-14
在线时间
52 小时
 楼主| 发表于 2015-9-29 19:13:35 | 显示全部楼层
回复【59楼】Holmess:
---------------------------------
我的那个是可以用的,他的那个不行。在这个帖子上找v3.6版本的压缩包。v3.6的是编译通过可以用的。
每转4000个脉冲。如果你的不是4000的编码器,那么把初始化改成和你的编码器匹配就行了。
原子哥是不是又要出黑科技了呀。^_^...
回复 支持 反对

使用道具 举报

  离线 

6

主题

42

帖子

0

精华

初级会员

Rank: 2

积分
153
金钱
153
注册时间
2015-6-20
在线时间
16 小时
发表于 2015-9-30 09:25:11 | 显示全部楼层
回复【60楼】fanghuiopenedv:
---------------------------------
 。。。就是在您的上面编译通不过。
..\STM32F10x_FWLib\src\stm32f10x_encoder.c(19): error:  #5: cannot open source input file "stm32f10x_lib.h": No such file or directory


咋办呢,上面所有评论都看了  没能解决
回复 支持 反对

使用道具 举报

  离线 

30

主题

707

帖子

1

精华

新手入门

积分
15
金钱
15
注册时间
2013-3-14
在线时间
52 小时
 楼主| 发表于 2015-9-30 09:30:31 | 显示全部楼层
回复【61楼】Holmess:
---------------------------------
我回头整理下再上传上来。
原子哥是不是又要出黑科技了呀。^_^...
回复 支持 反对

使用道具 举报

  离线 

6

主题

42

帖子

0

精华

初级会员

Rank: 2

积分
153
金钱
153
注册时间
2015-6-20
在线时间
16 小时
发表于 2015-9-30 09:50:04 | 显示全部楼层
回复【62楼】fanghuiopenedv:
---------------------------------
对啊  可是我怎么都找不到这个头文件。。。我用的是MDK4.70A
回复 支持 反对

使用道具 举报

  离线 

30

主题

707

帖子

1

精华

新手入门

积分
15
金钱
15
注册时间
2013-3-14
在线时间
52 小时
 楼主| 发表于 2015-9-30 09:53:59 | 显示全部楼层
回复【63楼】Holmess:
---------------------------------
当时我编译的时候是keil v4.10版本的。编译通过了。
我晚上回去整理下发上来。
原子哥是不是又要出黑科技了呀。^_^...
回复 支持 反对

使用道具 举报

  离线 

6

主题

42

帖子

0

精华

初级会员

Rank: 2

积分
153
金钱
153
注册时间
2015-6-20
在线时间
16 小时
发表于 2015-9-30 09:55:24 | 显示全部楼层
赞!!!!!!!辛苦了。。。谢谢~~~
回复 支持 反对

使用道具 举报

  离线 

30

主题

707

帖子

1

精华

新手入门

积分
15
金钱
15
注册时间
2013-3-14
在线时间
52 小时
 楼主| 发表于 2015-9-30 10:56:47 | 显示全部楼层
这个v4.0是在keil v4.74下编译通过了的。之前发的v3.6是在v4.10下编译通过的。

//ENCODER_PPR--编码器线数,如果是1000线的,那么转动一圈就是4000个脉冲
//注意:硬件连接必须是PA6和PA7
//这次是在keil v4.74.0.22版本下编译通过的。抱歉暂时手上没有硬件,没有经过硬件测试。

编码器检测V4.0.rar

295.04 KB, 下载次数: 841

原子哥是不是又要出黑科技了呀。^_^...
回复 支持 反对

使用道具 举报

  离线 

1

主题

9

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2015-7-31
在线时间
1 小时
发表于 2015-10-7 10:01:21 | 显示全部楼层
回复【66楼】fanghuiopenedv:
---------------------------------
 /*硬件连接的是PA6和PA7 必须是这两个脚?
回复 支持 反对

使用道具 举报

  离线 

30

主题

707

帖子

1

精华

新手入门

积分
15
金钱
15
注册时间
2013-3-14
在线时间
52 小时
 楼主| 发表于 2015-10-8 11:43:10 | 显示全部楼层
回复【67楼】rowen800:
---------------------------------
是的。必须是这两个脚,因为用的是tim3的输入捕获。如果用别的timer,那么就可以换成别的指定管脚了。
原子哥是不是又要出黑科技了呀。^_^...
回复 支持 反对

使用道具 举报

  离线 

6

主题

42

帖子

0

精华

初级会员

Rank: 2

积分
153
金钱
153
注册时间
2015-6-20
在线时间
16 小时
发表于 2015-10-13 14:52:08 | 显示全部楼层
回复【64楼】fanghuiopenedv:
---------------------------------
编译通过了  谢谢   前段时间忙没看到
回复 支持 反对

使用道具 举报

  离线 

5

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
74
金钱
74
注册时间
2015-5-2
在线时间
5 小时
发表于 2016-1-16 13:53:14 | 显示全部楼层
Orz跪谢,楼主解决了我多日的烦恼,感激不尽
回复 支持 反对

使用道具 举报

  离线 

6

主题

38

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
411
金钱
411
注册时间
2016-1-26
在线时间
51 小时
发表于 2016-2-20 14:15:01 | 显示全部楼层
楼主,为什么只读编码器两相的上升沿ARR依然取编码器的线数乘4
回复 支持 反对

使用道具 举报

  离线 

3

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
111
金钱
111
注册时间
2016-1-26
在线时间
11 小时
发表于 2016-2-20 15:51:16 | 显示全部楼层
fanghuiopenedv 发表于 2015-1-15 10:47
回复【3楼】潜龙探渊:
---------------------------------
呜呜呜……还没火起来呢。

燥起来吧!
回复 支持 反对

使用道具 举报

  离线 

30

主题

707

帖子

1

精华

新手入门

积分
15
金钱
15
注册时间
2013-3-14
在线时间
52 小时
 楼主| 发表于 2016-2-22 10:17:31 | 显示全部楼层
望着你发槑 发表于 2016-2-20 14:15
楼主,为什么只读编码器两相的上升沿ARR依然取编码器的线数乘4

具体为什么乘以4,这个我也不太清楚。可能是编码器的内部构造吧。用了这么多年的编码器了好像都是乘以4才能得到脉冲数的。
原子哥是不是又要出黑科技了呀。^_^...
回复 支持 反对

使用道具 举报

  离线 

7

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
98
金钱
98
注册时间
2015-10-5
在线时间
15 小时
发表于 2016-3-16 11:09:26 | 显示全部楼层
拜谢。。。。
回复 支持 反对

使用道具 举报

  离线 

7

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
98
金钱
98
注册时间
2015-10-5
在线时间
15 小时
发表于 2016-3-16 11:11:21 | 显示全部楼层
楼主,做过倒立摆吗?平衡控制有点问题想请教
回复 支持 反对

使用道具 举报

  离线 

30

主题

707

帖子

1

精华

新手入门

积分
15
金钱
15
注册时间
2013-3-14
在线时间
52 小时
 楼主| 发表于 2016-3-16 11:34:29 | 显示全部楼层
见过倒立摆,但是没有做过。
原子哥是不是又要出黑科技了呀。^_^...
回复 支持 反对

使用道具 举报

  离线 

4

主题

49

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2015-12-4
在线时间
16 小时
发表于 2016-3-25 11:52:23 | 显示全部楼层
多谢!学习一下。
回复 支持 反对

使用道具 举报

  离线 

10

主题

49

帖子

0

精华

初级会员

Rank: 2

积分
152
金钱
152
注册时间
2016-4-25
在线时间
31 小时
发表于 2016-5-11 11:25:14 | 显示全部楼层
大神 V3.6通过串口看到的N=XXXX 那些数字是什么意思 我想采集到脉冲数 测出转速怎么做啊 大神求带。。。
回复 支持 反对

使用道具 举报

  离线 

30

主题

707

帖子

1

精华

新手入门

积分
15
金钱
15
注册时间
2013-3-14
在线时间
52 小时
 楼主| 发表于 2016-5-11 17:19:34 | 显示全部楼层
小牛试大刀 发表于 2016-5-11 11:25
大神 V3.6通过串口看到的N=XXXX 那些数字是什么意思 我想采集到脉冲数 测出转速怎么做啊 大神求带。。。

N=xxxx  这里的xxxx就是编码器的码值。可以理解成是脉冲数值。
如果你用的是1024线的编码器,那么转动一圈就是4096个脉冲,N的范围就是0---4095了。
转动一圈被分成4096份,根据脉冲数就可以算出转动的角度了。
至于你说的测试转速,这个你要做个续长处理。经过续长处理后N的值可以一直累加,可以超过4096(如果用uint32_t的变量续长的话N<4294967295,超过这个才会自动清零)。
开个定时器看N在单位时间内变化了多少个脉冲,然后脉冲数除以4096就是转速了。
原子哥是不是又要出黑科技了呀。^_^...
回复 支持 反对

使用道具 举报

  离线 

10

主题

49

帖子

0

精华

初级会员

Rank: 2

积分
152
金钱
152
注册时间
2016-4-25
在线时间
31 小时
发表于 2016-5-11 20:04:23 | 显示全部楼层
fanghuiopenedv 发表于 2016-5-11 17:19
N=xxxx  这里的xxxx就是编码器的码值。可以理解成是脉冲数值。
如果你用的是1024线的编码器,那么转动一 ...

大神再麻烦您下,(电机尾部自带了13 线的磁(霍尔)编码器,减速比30:1 的电机,车轮转一圈,电机可以输出390 个脉冲)这个是 电机的编码器说明,可是我在看N值都是在十几到一千多这样来回循环。能在给下详解吗,谢谢
回复 支持 2 反对 0

使用道具 举报

  离线 

7

主题

421

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2479
金钱
2479
注册时间
2016-5-13
在线时间
141 小时
发表于 2016-5-26 15:05:15 | 显示全部楼层
mark mark
回复 支持 反对

使用道具 举报

  离线 

8

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
120
金钱
120
注册时间
2016-5-7
在线时间
23 小时
发表于 2016-8-26 19:46:01 | 显示全部楼层
正在学习 !!!谢谢分享!!!
回复 支持 反对

使用道具 举报

  离线 

2

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
174
金钱
174
注册时间
2016-9-23
在线时间
52 小时
发表于 2016-9-28 15:04:52 | 显示全部楼层
我要做个ALPS的编码器  只要判断是左转还是右转就行了 !!大概怎么写~~~
回复 支持 反对

使用道具 举报

  离线 

5

主题

22

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
203
金钱
203
注册时间
2016-8-2
在线时间
61 小时
发表于 2016-9-30 11:16:20 | 显示全部楼层
楼主, 你这个例程的ENC_Calc_Average_Speed()函数都没跑起来
回复 支持 反对

使用道具 举报

  离线 

30

主题

707

帖子

1

精华

新手入门

积分
15
金钱
15
注册时间
2013-3-14
在线时间
52 小时
 楼主| 发表于 2016-10-12 09:20:43 | 显示全部楼层
491603829 发表于 2016-9-30 11:16
楼主, 你这个例程的ENC_Calc_Average_Speed()函数都没跑起来

ENC_Calc_Average_Speed()函数----我没有用到这个功能。so 这个函数我没有去调试。
原子哥是不是又要出黑科技了呀。^_^...
回复 支持 反对

使用道具 举报

  离线 

0

主题

1

帖子

0

精华

新手入门

积分
7
金钱
7
注册时间
2016-12-13
在线时间
0 小时
发表于 2016-12-13 20:43:43 | 显示全部楼层
谢谢楼主了,学习了
回复 支持 反对

使用道具 举报

  离线 

0

主题

16

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
254
金钱
254
注册时间
2016-6-2
在线时间
42 小时
发表于 2016-12-16 10:44:07 | 显示全部楼层
感谢楼主,作为参考!
回复 支持 反对

使用道具 举报

  离线 

0

主题

0

帖子

0

精华

新手入门

积分
1
金钱
1
注册时间
2018-9-6
在线时间
0 小时
发表于 2017-1-4 16:09:20 | 显示全部楼层

楼主能解释下 这个函数不

s16 ENC_Calc_Rot_Speed(void)
{   
  s32 wDelta_angle;
  u16 hEnc_Timer_Overflow_sample_one, hEnc_Timer_Overflow_sample_two;
  u16 hCurrent_angle_sample_one, hCurrent_angle_sample_two;
  signed long long temp;
  s16 haux;

  if (!bIs_First_Measurement)
  {
    // 1st reading of overflow counter   
    hEnc_Timer_Overflow_sample_one = hEncoder_Timer_Overflow;
    // 1st reading of encoder timer counter
    hCurrent_angle_sample_one = ENCODER_TIMER->CNT;
    // 2nd reading of overflow counter
    hEnc_Timer_Overflow_sample_two = hEncoder_Timer_Overflow;  
    // 2nd reading of encoder timer counter
    hCurrent_angle_sample_two = ENCODER_TIMER->CNT;      

    // Reset hEncoder_Timer_Overflow and read the counter value for the next
    // measurement
    hEncoder_Timer_Overflow = 0;
    haux = ENCODER_TIMER->CNT;   

    if (hEncoder_Timer_Overflow != 0)
    {
      haux = ENCODER_TIMER->CNT;
      hEncoder_Timer_Overflow = 0;            
    }

    if (hEnc_Timer_Overflow_sample_one != hEnc_Timer_Overflow_sample_two)
    { //Compare sample 1 & 2 and check if an overflow has been generated right
      //after the reading of encoder timer. If yes, copy sample 2 result in
      //sample 1 for next process
      hCurrent_angle_sample_one = hCurrent_angle_sample_two;
      hEnc_Timer_Overflow_sample_one = hEnc_Timer_Overflow_sample_two;
    }

    if ( (ENCODER_TIMER->CR1 & TIM_CounterMode_Down) == TIM_CounterMode_Down)  
    {// encoder timer down-counting
      wDelta_angle = (s32)(hCurrent_angle_sample_one - hPrevious_angle -
                    (hEnc_Timer_Overflow_sample_one) * (4*ENCODER_PPR));
    }
    else  
    {//encoder timer up-counting
      wDelta_angle = (s32)(hCurrent_angle_sample_one - hPrevious_angle +
                    (hEnc_Timer_Overflow_sample_one) * (4*ENCODER_PPR));
    }

    // speed computation as delta angle * 1/(speed sempling time)
    temp = (signed long long)(wDelta_angle * SPEED_SAMPLING_FREQ);
    temp *= 10;  // 0.1 Hz resolution
    temp /= (4*ENCODER_PPR);

  } //is first measurement, discard it
  else
  {
    bIs_First_Measurement = FALSE;
    temp = 0;
    hEncoder_Timer_Overflow = 0;
    haux = ENCODER_TIMER->CNT;      
    // Check if Encoder_Timer_Overflow is still zero. In case an overflow IT
    // occured it resets overflow counter and wPWM_Counter_Angular_Velocity
    if (hEncoder_Timer_Overflow != 0)
    {
      haux = ENCODER_TIMER->CNT;
      hEncoder_Timer_Overflow = 0;            
    }
  }

  hPrevious_angle = haux;  

  return((s16) temp);
}



回复 支持 反对

使用道具 举报

  离线 

7

主题

421

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2479
金钱
2479
注册时间
2016-5-13
在线时间
141 小时
发表于 2017-1-6 09:27:37 | 显示全部楼层
水流四方 发表于 2017-1-4 16:09
楼主能解释下 这个函数不

s16 ENC_Calc_Rot_Speed(void)

这个函数我没有调用,也就没有去分析它的正确性了。你自己可以研究下。
虽然不明白你们在说什么,但感觉很厉害的样子。
回复 支持 反对

使用道具 举报

  离线 

19

主题

85

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
200
金钱
200
注册时间
2014-9-16
在线时间
10 小时
发表于 2017-1-13 11:40:19 | 显示全部楼层
s16 ENC_Get_Electrical_Angle(void)
{
  s32 temp;
  
  temp = (s32)(TIM_GetCounter(ENCODER_TIMER)) * (s32)(U32_MAX / (4*ENCODER_PPR));
  return((s16)(temp/65536)); // s16 result
}
这个里面哪个数会是负数呢,为什么要S32?
#define U32_MAX    ((u32)4294967295uL)那么(U32_MAX / (4*ENCODER_PPR))什么意思啊?
return((s16)(temp/65536));什么意思
回复 支持 反对

使用道具 举报

  离线 

0

主题

0

帖子

0

精华

新手入门

积分
2
金钱
2
注册时间
2018-1-8
在线时间
0 小时
发表于 2017-3-23 23:11:48 | 显示全部楼层
水流四方 发表于 2017-1-4 16:09
楼主能解释下 这个函数不

s16 ENC_Calc_Rot_Speed(void)

有看明白吗?我也没看懂,不知什么原理,不用定时器也能测试??
回复 支持 反对

使用道具 举报

屁哥帅帅 该用户已被删除
发表于 2017-4-5 16:10:43 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

  离线 

0

主题

3

帖子

0

精华

新手入门

积分
10
金钱
10
注册时间
2017-8-5
在线时间
4 小时
发表于 2017-8-6 17:06:28 | 显示全部楼层
fanghuiopenedv 发表于 2015-5-27 08:39
回复【22楼】吃咯:
---------------------------------
编码器的函数你没有调用啊。就是没有调用:Enco ...

你好,我们用的是集电极开路输出的编码器,请问a、b相接入I/O口的时候要接一个上拉电阻嘛?

如果要接的话,可不可以直接把PA6和PA7设置为上拉输入?还是需要在硬件上连一个上拉电阻呢?

还是其实根本不需要接呢?我看你发的v3.6的程序设置的PA6、PA7是浮空输入。
回复 支持 反对

使用道具 举报

  离线 

0

主题

1

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2017-6-27
在线时间
5 小时
发表于 2017-8-8 15:48:02 | 显示全部楼层
楼主,你好!你这编程的思路是什么啊!能讲讲呗!程序半天没看懂!
回复 支持 反对

使用道具 举报

  离线 

5

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
71
金钱
71
注册时间
2017-1-7
在线时间
12 小时
发表于 2017-8-8 17:23:55 | 显示全部楼层
谢谢楼主分享
回复 支持 反对

使用道具 举报

  离线 

3

主题

8

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2017-8-14
在线时间
8 小时
发表于 2018-4-17 16:02:10 | 显示全部楼层
楼主你好,为什么我参照你的程序,输出的计数值不对呢。每次让电机转3S的计数值都不一样,16线AB相的霍尔编码器。初始化Encoder_Init()后,我直接取的Count = TIM_GetCounter(TIM3);串口打印出来是这种
D]_XE%0VZGQAZQHGJPK9UPV.png
回复 支持 反对

使用道具 举报

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

本版积分规则




关闭

必看,必学:"原子哥”力荐上一条 /1 下一条

正点原子公众号

QQ|联系我们|手机版|官方淘宝店|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2018-9-24 23:10

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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