搜索
bottom↓
回复: 145

STM32 tim3的输入捕获功能解码 电视红外遥控器。上原理图!!!上源码!!! 顺便是现

  [复制链接]

出0入0汤圆

发表于 2010-1-28 10:29:44 | 显示全部楼层 |阅读模式
原理图:


(原文件名:红外接收―stm32原理图.PNG)
根据红外遥控38K载波芯片的一般编码规则可知,一帧数据的开始是从一个Header开始的。间隔是9+4.5=13.5ms
发送0是一个0.56+0.565=1.125ms  ,
发送1是一个0.56+1.685=2.245ms  

利用TIM3的输入捕获功能,捕获下降沿。即可对遥控器发送的红外脉冲解码。
已经知道了红外脉冲的宽度了,接下来配置TIM的分频器,使其能捕获这三种脉冲。
内核时钟是72M。每一个毫秒是72M/1000 = 72000,
把TIM3的除数因子配置为29 , 那么TIM3的分辨率就是 1 / (72000 / (29+1))  =  1/ 2400 ms
TIM3的重加载寄存器配置为65535 , 那么可捕获的最大脉冲就是65535/2400 = 27.3 ms
经过如上的配置,我们的TIM3就可以满足我们的红外脉冲捕获的要求了。
原理图中使用的TIM3的引脚是重映射引脚。
        tim_base.TIM_ClockDivision = TIM_CKD_DIV1 ;
        tim_base.TIM_CounterMode = TIM_CounterMode_Up ;
        tim_base.TIM_Period = 65535 ;
        tim_base.TIM_Prescaler = 29 ;
        TIM_TimeBaseInit(TIM3, &tim_base ) ;

        tim_icinit.TIM_Channel = TIM_Channel_2 ;
        tim_icinit.TIM_ICFilter =0 ;
        tim_icinit.TIM_ICMode = TIM_ICMode_ICAP ;
        tim_icinit.TIM_ICPolarity = TIM_ICPolarity_Falling ;
        tim_icinit.TIM_ICPrescaler= 0 ;
        tim_icinit.TIM_ICSelection = TIM_ICSelection_DirectTI;
           TIM_ICInit( TIM3,  &tim_icinit );
        TIM_Cmd( TIM3, ENABLE );
        TIM_ITConfig( TIM3,  TIM_IT_CC2 , ENABLE );
         
           TIM3的Channel_2通道管脚重映射以后就是PC7了。


中断中的关键代码:
void TIM3_IRQHandler(void)
{
        extern vu16 ccd [80] ;
        static int id = 0 ;
       
        static vu16  cur = 0 ;
        static vu16  last  = 0 ;

        u16 step ;
        int   fh;
       
        if(TIM_GetITStatus( TIM3,  TIM_IT_CC2 ))
        {
                TIM_ClearITPendingBit(TIM3,  TIM_IT_CC2);

                //ccd[id ++ ] = TIM_GetCapture2(TIM3) ;
         
                cur = TIM_GetCapture2(TIM3) ;

        #if 1
                if(cur > last )
                {
                    step = cur - last ;
                }
                else
                {
                    step = 65535 - last + cur ;
                }
                   //step 为两次捕获的计数值的差,为了避免浮点数运算,此处,把浮点数放大十倍,转换成整数计算。
                fh = step *10 / (2400) ;

        // 同步开始头,13.5ms
        
                if( (fh > 130) && (fh <140) )
                {
                    id = 0 ;
                }
        // 1.125ms
        else if( (fh > 9 ) && (fh <13 ))
        {
            ccd[id ++ ] = 0 ;
        }
       // 2.245ms
        else if( (fh > 20 ) && (fh <24 ))
        {
            ccd[id ++ ] = 1 ;
        }
        
        #endif
        
                if(id >60)
                {
                        id = 0 ;

                        //TIM_Cmd(TIM3, DISABLE );
           // cur =
                        //TIM_ITConfig( TIM3,  TIM_IT_CC2 , DISABLE) ;
                }
               
        }

        last = cur ;
       
}


把捕获的二进制数据通过USART打印出来,然后分析遥控器的编码:

(原文件名:编码分析.PNG)

上面只是没有贴出最前面的16位,因为前面16位也是一样的。
经过上面的分析就可以解码了:
    k1 = 0 ;
    for(i= 0 ;i< 8 ; i++ )
    {
        //dprintf("%d  " , ccd[26+i]);
        k1 |= ccd[26+i]<<i ;
    }
  //  dprintf("\r\n") ;
    k2 = 0 ;
    for(i= 0 ;i< 8 ; i++ )
    {
       // dprintf("%d  " , ccd[34+i]);
        k2 |= ccd[34+i]<<i ;
    }
  //  dprintf("\r\n") ;
//校验一下,因为k1和k2为补码关系,所以相加为255.
    if(k1 + k2 == 255)
    {
        dprintf("get key intput %d   \r\n" , k1 ) ;
    }


源代码: 使用的是Code Sourcery GNU工具
点击此处下载 ourdev_529931.rar(文件大小:515K) (原文件名:STM32F103VHB6_RevZ_Demo1.rar)

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2010-1-28 11:08:40 | 显示全部楼层
请教楼主:

正在为STM32网络收音机做自学习型红外遥控:http://www.rt-thread.org/phpbb/viewtopic.php?f=17&t=454

但碰到一个问题:我想实现第一次捕获后把两个计数器全部清0了,但发现这时CCR*寄存器写不了,是只读的.
于是,出来的结果还要自己做减法.好麻烦.
不知道为什么,查RM没看到相关介绍

另外几点:
楼主貌似只捕获下降沿,不捕获上升沿?要是碰到某一区间的高电平和低电平的总合是一样长的,那就分不出来了.
VU16这类STM32的固件库的数据类型,我认为,只在  只能在STM32上面运行 的程序里面使用就好了,其它地方还是用C原生的.

可是,STM32库的DEMO竟然用 __IO 来代替 volatile ....

出0入0汤圆

发表于 2010-1-28 12:20:50 | 显示全部楼层
留个爪子

出0入0汤圆

发表于 2010-1-28 12:24:07 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-1-28 12:34:57 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-1-28 12:41:51 | 显示全部楼层
回复【1楼】aozima  
请教楼主:
正在为STM32网络收音机做自学习型红外遥控:http://www.rt-thread.org/phpbb/viewtopic.php?f=17&amp;t=454
但碰到一个问题:我想实现第一次捕获后把两个计数器全部清0了,但发现这时CCR*寄存器写不了,是只读的.
于是,出来的结果还要自己做减法.好麻烦.
不知道为什么,查RM没看到相关介绍
另外几点:
楼主貌似只捕获下降沿,不捕获上升沿?要是碰到某一区间的高电平和低电平的总合是一样长的,那就分不出来了.
VU16这类STM32的固件库的数据类型,我认为,只在  只能在STM32上面运行 的程序里面使用就好了,其它地方还是用C原生的.
可是,STM32库的DEMO竟然用 __IO 来代替 volatile ....
-----------------------------------------------------------------------

不是CCR*寄存器是只读的,而是库函数中没有做写的函数,按照库函数中读的函数自己写一个写CCR*寄存器的函数

出0入0汤圆

 楼主| 发表于 2010-1-28 12:46:39 | 显示全部楼层
回一楼:
请教楼主:

正在为STM32网络收音机做自学习型红外遥控:http://www.rt-thread.org/phpbb/viewtopic.php?f=17&t=454

但碰到一个问题:我想实现第一次捕获后把两个计数器全部清0了,但发现这时CCR*寄存器写不了,是只读的.
于是,出来的结果还要自己做减法.好麻烦.
不知道为什么,查RM没看到相关介绍

另外几点:
楼主貌似只捕获下降沿,不捕获上升沿?要是碰到某一区间的高电平和低电平的总合是一样长的,那就分不出来了.
VU16这类STM32的固件库的数据类型,我认为,只在  只能在STM32上面运行 的程序里面使用就好了,其它地方还是用C原生的.

可是,STM32库的DEMO竟然用 __IO 来代替 volatile .... 回复【1楼】aozima
-----------------------------------------------------------------------

回复【1楼】aozima
请教楼主:
正在为STM32网络收音机做自学习型红外遥控:http://www.rt-thread.org/phpbb/viewtopic.php?f=17&amp;t=454
但碰到一个问题:我想实现第一次捕获后把两个计数器全部清0了,但发现这时CCR*寄存器写不了,是只读的.
于是,出来的结果还要自己做减法.好麻烦.
不知道为什么,查RM没看到相关介绍
另外几点:
楼主貌似只捕获下降沿,不捕获上升沿?要是碰到某一区间的高电平和低电平的总合是一样长的,那就分不出来了.
VU16这类STM32的固件库的数据类型,我认为,只在  只能在STM32上面运行 的程序里面使用就好了,其它地方还是用C原生的.
可是,STM32库的DEMO竟然用 __IO 来代替 volatile ....
-----------------------------------------------------------------------

做减法还是比较简单的,只有两条指令而已,对于STM32 这种72M的处理器不算什么,至于你说的CCR*寄存器我基本上不会直接操作寄存器的,都是使用系统的库函数。
这里只是捕获了下降沿,主要是STM32的一个通道只能要么捕捉上升沿,要么捕捉下降沿。
这里对于一般的红外编码,只有三种脉冲,不会有相等长度的脉冲。如果作为其他的用途,可以把红外的OUT接TIM的两个通道,一个通道捕获上升沿,一个通道捕获下降沿。我这里为了简便,只是捕捉了下降沿。
呵呵,至于VU16 还是volatile 这个应该是随个人的意思吧 ,就算到了其他的平台不支持
,也可以自己typedef volatile unsigned  short   vu16 ,这样自己写程序就可以很方便了。

出0入0汤圆

发表于 2010-1-28 12:46:41 | 显示全部楼层
我是这样写的呀.

TIM5->CCR1 = 0;

出0入0汤圆

发表于 2010-1-28 12:48:48 | 显示全部楼层
"这里只是捕获了下降沿,主要是STM32的一个通道只能要么捕捉上升沿,要么捕捉下降沿"

原来也有和你一样的迷惑,不过在安哥的指点下,可以

        TIM_ICInitStructure.TIM_Channel     = TIM_Channel_3;//选择通道3
        TIM_ICInitStructure.TIM_ICPolarity  = TIM_ICPolarity_Falling;//下降沿
        TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;//通道方向选择
        TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;/* 每次检测到捕获输入就触发一次捕获 */
        TIM_ICInitStructure.TIM_ICFilter    = 8;/* 对分频率没有影响 */

        TIM_ICInit(TIM5, &TIM_ICInitStructure);

        TIM_ICInitStructure.TIM_Channel     = TIM_Channel_4;//选择通道4
        TIM_ICInitStructure.TIM_ICPolarity  = TIM_ICPolarity_Rising;//上升沿
        TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_IndirectTI;//通道方向选择
        TIM_ICInit(TIM5, &TIM_ICInitStructure);
这样就可以同时捕获两个边沿.

参见CCMR寄存器的CC*S位

出0入0汤圆

发表于 2010-1-28 12:49:45 | 显示全部楼层
帮顶,学习中

出0入0汤圆

 楼主| 发表于 2010-1-28 12:49:53 | 显示全部楼层
回楼上:
你如果不想做减法,应该用这个函数把计数器清零。

void TIM_SetCounter(TIM_TypeDef* TIMx, u16 Counter)
{
  /* Set the Counter Register value */
  TIMx->CNT = Counter;
}

出0入0汤圆

发表于 2010-1-28 12:55:46 | 显示全部楼层
哦,设置CNT寄存器了,不过,第一次依然出来一个比较大的值,继续去查
system startup!
CC2: 07389
CC1: 00084
CC2: 00124
CC2: 00221
CC1: 00282
CC2: 00378
CC1: 00429
CC2: 00510
..........

出0入0汤圆

发表于 2010-1-28 13:30:18 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-2-3 22:25:35 | 显示全部楼层
学习啦。。。。。。。。。。

出0入0汤圆

发表于 2010-2-4 09:00:24 | 显示全部楼层
LZ附件无法下载呢,顶一下!

出0入0汤圆

发表于 2010-2-4 14:42:35 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-2-4 16:42:52 | 显示全部楼层
看看

出0入0汤圆

发表于 2010-2-5 09:19:04 | 显示全部楼层
MARK

出10入10汤圆

发表于 2010-2-5 19:50:37 | 显示全部楼层
受教了

出0入0汤圆

发表于 2010-3-22 15:22:13 | 显示全部楼层
记号!

出0入0汤圆

发表于 2010-3-22 20:01:56 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-3-22 20:17:50 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-4-9 23:58:03 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-5-4 20:05:58 | 显示全部楼层
LZ,你用的是什么开发工具?KEIL C?

你的红外和STM32是怎么连接的?

出0入42汤圆

发表于 2010-5-4 21:41:36 | 显示全部楼层
mark。

出0入0汤圆

 楼主| 发表于 2010-5-4 22:23:57 | 显示全部楼层
回复【23楼】xmu_yj
lz,你用的是什么开发工具?keil c?
你的红外和stm32是怎么连接的?
-----------------------------------------------------------------------

我用的是GNU的开发工具,红外和STM32的链接在原理图中已经给出了,直接通过IO口给红外供电。从OUT读数据就行了 。

出0入0汤圆

发表于 2010-5-4 23:05:40 | 显示全部楼层
学习了

出0入0汤圆

发表于 2010-5-5 17:11:45 | 显示全部楼层
厉害,当年我是用示波器才摸清楚规律的。

出0入0汤圆

发表于 2010-5-5 17:26:49 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-9 13:12:43 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-9 17:37:39 | 显示全部楼层
留个印儿

楼主的办法应该只适合NEC的编码
如果是其他的编码就不可以了

对红外不太清楚 不知道家电里有多少用NEC的编码?

出0入0汤圆

发表于 2010-12-15 11:22:32 | 显示全部楼层

出0入0汤圆

发表于 2010-12-17 15:09:11 | 显示全部楼层
学习中,希望得到楼主的帮助。875680467

出0入0汤圆

发表于 2010-12-17 16:00:53 | 显示全部楼层
楼主,你的是哪款仿真器?open JTAG还是jlink啊?

出0入0汤圆

发表于 2010-12-19 17:13:22 | 显示全部楼层
那位能搞个万能遥控就好了 带接受发射

出0入0汤圆

发表于 2010-12-20 10:11:00 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-23 15:59:21 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-24 16:25:49 | 显示全部楼层
good

出0入0汤圆

发表于 2011-1-1 14:51:17 | 显示全部楼层
记号

出0入0汤圆

发表于 2011-1-1 16:36:52 | 显示全部楼层
学习了

出0入0汤圆

发表于 2011-1-2 20:43:05 | 显示全部楼层
学习学习

出0入0汤圆

发表于 2011-1-2 21:16:08 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-1-3 17:26:26 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-1-3 17:36:21 | 显示全部楼层

出0入0汤圆

发表于 2011-1-4 10:30:54 | 显示全部楼层
遥控了

出0入0汤圆

发表于 2011-1-4 12:02:10 | 显示全部楼层
mark!~

出0入0汤圆

发表于 2011-1-15 13:42:07 | 显示全部楼层
需要您的帮助,我QQ号是313419606,谢谢诶

出0入0汤圆

发表于 2011-1-22 15:11:50 | 显示全部楼层
怎么看到的是PA7的对应才是TIM3 CH2??而非PC7

出0入0汤圆

发表于 2011-1-22 17:01:09 | 显示全部楼层
mark一下!

出0入0汤圆

发表于 2011-4-28 15:10:36 | 显示全部楼层
對stm32的定時器不熟悉,想問一下:樓主的方法可否應對「連續的干擾脈衝引發連續的中斷,使CPU的利用率變得不可控」這個問題?
如果用systick定時中斷軟解的話,設置採樣時間多少合適呢?

出0入0汤圆

发表于 2011-5-4 10:04:07 | 显示全部楼层
cool!

出0入0汤圆

发表于 2011-5-6 19:15:38 | 显示全部楼层
好像STM32的串口可以工作在 红外模式的不知道是不是用来做红外收发的,待高人解答

出0入0汤圆

发表于 2011-5-6 20:53:34 | 显示全部楼层
cool!

出0入0汤圆

发表于 2011-5-6 21:58:34 | 显示全部楼层
mark,学习

出0入0汤圆

发表于 2011-5-7 10:51:18 | 显示全部楼层
不错的例子

出0入0汤圆

发表于 2011-6-2 17:23:59 | 显示全部楼层
红外 遥控

出0入0汤圆

发表于 2011-6-3 15:06:44 | 显示全部楼层
现在的遥控器编码方式已经五花八门了,很多厂家都自己定个标准。都按这个标准解码是不可能了。之前我也做过同样的红外接收解码功能(用的LPC1768),拿家里的电视遥控器和机顶盒遥控器做实验,发现都不是标准的协议。
于是,我改变思路,不对接收的红外信号解码,只保存它们高低电平各段的时间。这样,在需要发射这个遥控信号的时候用板子上的红外发射管按照保存的数据发射对应占空比的信号就可以实现所谓的学习功能了。

出0入0汤圆

发表于 2011-6-11 18:52:03 | 显示全部楼层
留待学习

出0入0汤圆

发表于 2011-6-12 11:17:16 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-7-11 21:28:20 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-7-11 21:33:25 | 显示全部楼层
mark~~~~~~

出0入0汤圆

发表于 2011-7-29 10:59:59 | 显示全部楼层
很好

出0入0汤圆

发表于 2011-7-29 23:20:17 | 显示全部楼层
mark!

出0入0汤圆

发表于 2011-8-25 20:10:04 | 显示全部楼层
及时雨

出0入0汤圆

发表于 2011-8-26 10:03:41 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-8-26 11:18:56 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-8-26 12:24:18 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-8-26 15:40:44 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-8-28 13:31:03 | 显示全部楼层
回复【56楼】htjgdw  
现在的遥控器编码方式已经五花八门了,很多厂家都自己定个标准。都按这个标准解码是不可能了。之前我也做过同样的红外接收解码功能(用的lpc1768),拿家里的电视遥控器和机顶盒遥控器做实验,发现都不是标准的协议。
于是,我改变思路,不对接收的红外信号解码,只保存它们高低电平各段的时间。这样,在需要发射这个遥控信号的时候用板子上的红外发射管按照保存的数据发射对应占空比的信号就可以实现所谓的学习功能了。
-----------------------------------------------------------------------

恩,有道理。。。赞一个。。

出0入0汤圆

发表于 2011-8-29 21:14:11 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-8-29 23:06:37 | 显示全部楼层
mark ,关键字,红外遥控

出0入0汤圆

发表于 2011-9-3 23:59:01 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-9-6 22:34:41 | 显示全部楼层
等待学习

出0入0汤圆

发表于 2011-9-21 10:56:09 | 显示全部楼层
厉害

出0入0汤圆

发表于 2011-9-21 13:50:26 | 显示全部楼层
我也来测试一下这个代码,你这个用是什么开发的

出0入0汤圆

发表于 2011-9-22 14:22:06 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-9-22 14:51:22 | 显示全部楼层
mark!

出0入0汤圆

发表于 2011-9-23 11:57:37 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-9-23 16:24:10 | 显示全部楼层
标记了。。。。

出0入0汤圆

发表于 2011-9-23 22:15:24 | 显示全部楼层
用的上

出0入0汤圆

发表于 2011-9-23 22:23:18 | 显示全部楼层
一定mark!

出0入0汤圆

发表于 2011-10-11 13:52:40 | 显示全部楼层
回复【8楼】aozima
"这里只是捕获了下降沿,主要是stm32的一个通道只能要么捕捉上升沿,要么捕捉下降沿"
原来也有和你一样的迷惑,不过在安哥的指点下,可以
        tim_icinitstructure.tim_channel     = tim_channel_3;//选择通道3
        tim_icinitstructure.tim_icpolarity  = tim_icpolarity_falling;//下降沿
        tim_icinitstructure.tim_icselection = tim_icselection_directti;//通道方向选择
        tim_icinitstructure.tim_icprescaler = tim_icpsc_div1;/* 每次检测到捕获输入就触发一次捕获 */
        tim_icinit......
-----------------------------------------------------------------------

请问这个TIM有没有设定其它的,比如主从控制之类的。能否把TIM定义部分的代码和中断代码贴全(中断函数是否也需定义两个通道)!!,我照这个代码试过不能达到要求(有设定两个中断等级)!! 谢谢!!

出0入0汤圆

发表于 2011-11-15 15:33:10 | 显示全部楼层
学习中,记下。

出0入0汤圆

发表于 2011-11-15 15:40:56 | 显示全部楼层
楼主可以教下小弟我吗,小弟跪求一师父教我。

出0入0汤圆

发表于 2011-11-15 16:01:02 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-11-15 16:26:46 | 显示全部楼层
学习了

出0入0汤圆

发表于 2011-11-15 16:47:29 | 显示全部楼层
mark

出0入30汤圆

发表于 2011-11-15 22:38:55 | 显示全部楼层
不错。有空试下。楼主很无私。大好人啊。

出0入0汤圆

发表于 2011-11-27 17:50:54 | 显示全部楼层
mark之……

出0入0汤圆

发表于 2011-11-28 08:51:38 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-11-28 09:13:07 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-12-1 17:29:09 | 显示全部楼层
留个爪子……

出0入0汤圆

发表于 2011-12-1 19:17:32 | 显示全部楼层
mark 学习了

出0入0汤圆

发表于 2011-12-1 19:44:31 | 显示全部楼层
学习了…

出0入0汤圆

发表于 2011-12-1 19:47:36 | 显示全部楼层
make一下

出0入0汤圆

发表于 2011-12-1 20:00:07 | 显示全部楼层
vgv

出0入0汤圆

发表于 2011-12-28 09:45:02 | 显示全部楼层
make

出0入0汤圆

发表于 2011-12-28 11:38:13 | 显示全部楼层
mark

出0入8汤圆

发表于 2011-12-28 13:43:26 | 显示全部楼层
不错!!!

出0入30汤圆

发表于 2011-12-28 14:11:00 | 显示全部楼层
这个,已经MARK
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-29 10:25

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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