搜索
bottom↓
回复: 181

Stm32中断优先级相关概念与使用笔记

[复制链接]

出0入0汤圆

发表于 2009-9-6 01:06:27 | 显示全部楼层 |阅读模式
另开个贴,听听各位的意见。

中断系统、中断优先级、中断嵌套、中断处理等与中断相关的寄存器,对与设计编写许多实时系统、工业控制、精密测量等系统是非常重要的,但是在STM32的手册中,目前国内与STM32相关的书中,以及我手上ST公司培训的PPT资料中基本上就没有这方面的详细说明和解释。

ST公司可能认为,使用STM32的人都已经是非常了解和熟悉 ARM 或 ARM Cortex™-M3的高手了,所以在它的手册中就给出下面短短的一段:

9.1 Nested vectored interrupt controller (NVIC)
Features
● 68 maskable interrupt channels (not including the 16 interrupt lines of Cortex™-M3)
● 16 programmable priority levels (4 bits of interrupt priority are used)
● Low-latency exception and interrupt handling
● Power management control
● Implementation of System Control Registers
The NVIC and the processor core interface are closely coupled, which enables low latency interrupt processing and efficient processing of late arriving interrupts.

All interrupts including the core exceptions are managed by the NVIC. For more information on exceptions and NVIC programming see Chap 5 Exceptions & Chap 8 Nested Vectored Interrupt Controller of the ARM Cortex™-M3 Technical Reference Manual.

没办法,自己找相关的资料学习吧。下面是我根据资料,整理的东西:

点击此处下载 ourdev_478463.pdf(文件大小:139K) (原文件名:Stm32中断优先级相关概念与使用笔记.pdf)

下面是几个参考资料,供参考。

点击此处下载 ourdev_478157.pdf(文件大小:2.35M) (原文件名:cortex_m3_r2p0_trm.pdf)
点击此处下载 ourdev_478158.pdf(文件大小:915K) (原文件名:stm32的NVIC优先级.pdf)
点击此处下载 ourdev_478159.pdf(文件大小:597K) (原文件名:LM3S 系列微控制器中断优先级应用笔记.pdf)

出0入0汤圆

发表于 2009-9-6 02:16:40 | 显示全部楼层
mARK
头像被屏蔽

出0入0汤圆

发表于 2009-9-6 02:19:13 | 显示全部楼层
哈哈,马老师看来是要将STM32引入到教学中了。

期待马老师的STM32学习板啊 :)

出0入0汤圆

发表于 2009-9-6 02:29:30 | 显示全部楼层
马老师和阿莫这么晚都没睡 看来牛人就是这样练成的 我也加油!

出0入0汤圆

发表于 2009-9-6 12:02:36 | 显示全部楼层
马老师 写的太棒了,拜读中。。。。。

期待马老师的更多学习笔记哈。我也一直在学校STM32中

出0入0汤圆

发表于 2009-9-6 12:52:32 | 显示全部楼层
MARK

出0入0汤圆

发表于 2009-9-6 13:03:39 | 显示全部楼层
ST的FAE应该也过来听听课吧。

出0入0汤圆

发表于 2009-9-6 13:09:41 | 显示全部楼层
这个要顶.STM32就差这个我还要用库.再过段时间吧这个也去了,我就和ST的库完全说拜拜了...

出0入0汤圆

发表于 2009-9-6 15:09:53 | 显示全部楼层
感谢马老师。

出0入0汤圆

 楼主| 发表于 2009-9-6 17:14:57 | 显示全部楼层
修改了不通顺的语句,和一些错别字,转换成PDF的。

出0入0汤圆

发表于 2009-9-6 17:34:15 | 显示全部楼层
马克.

出0入0汤圆

发表于 2009-9-7 08:26:47 | 显示全部楼层
Ho hO

出0入4汤圆

发表于 2009-9-7 09:01:54 | 显示全部楼层
谢谢!马老师,辛苦了

出0入0汤圆

发表于 2009-9-7 09:55:08 | 显示全部楼层
mark

出10入120汤圆

发表于 2009-9-7 13:30:14 | 显示全部楼层
很好,应该出一本STM32的教材

说实话,ST出的DATASHEET不是给人看的。

出0入0汤圆

 楼主| 发表于 2009-9-7 19:18:59 | 显示全部楼层
楼上这句话说的不好,把自己也骂了。我想你也一定多多少少看过的吧。

应该是:不是x写的^_^。

牢骚归牢骚,看还的看,这就是学习。如果有看懂这样文献的能力垫底,还有什么样的文献看不懂吗。

出0入0汤圆

发表于 2009-9-7 19:35:02 | 显示全部楼层
固件库一定要能全部仔细看一遍然后再碰着手册直接写寄存器.
V3.0版本core_cm3.h提供了关于中断操作的内联函数,非常省力也高效.
NVIC_SetPriority(TIM2_IRQn, 0xF);//设置中断优先级(最低)
NVIC_EnableIRQ(TIM2_IRQn);//中断使能

出0入0汤圆

发表于 2009-9-8 08:48:35 | 显示全部楼层
请教马老师:

有个问题到现在还比较模糊。

1 STM32的中断优先级分组完成后,同一个组下的外设中断优先级别(子优先级),仅仅是依靠该外设连接的IP[X],来确定其优先级别么?

2 您附件所描述“在STM32中最多有68个外部中断通道,每个IP[]的1个字节中只使用高4位(见前面介绍)”,高4位岂不是只有16个?

  子优先级是不是分组之后再分配的?

出0入0汤圆

 楼主| 发表于 2009-9-8 16:17:15 | 显示全部楼层
每个外部中断通道都有一个独立的中断优先级控制字IP[x],它是8位的,但在STM32中,只使用高4位,所以优先级的定义只有16个,这16个实际就是抢先和子优先级的总个数。

至于到底那几位是定义抢先的,那几位是定义子优先级的,是根据PRIGROUP中的设置值决定的。一旦设置PRIGROUP后,系统中可以有几个抢先和子优先级也就确定了,总的个数就是16个。这里不是指只能有16个中断,是指所有系统中中断的优先级只能在这16种中选择配置。

不明白你所指的分组是什么意思。

在我的应用笔记中有说明:

1。首先要设置PRIGROUP,就是确定4个bits中,那几个用于定义抢先的,那几个定义子的。实际上一旦定义了,也就决定了系统中有几个抢先,有几个子。(是否你理解这个是分组?)

2。然后分别定义每个外部通道的优先级,抢先和子的可以一起定义。

下面给再给个例子:

假定设置了PRIGROUP为0x04,那么就是说高3位用于定义抢先,后面1位定义子。这样实际就是确定你的系统中可以使用8个抢先,每个抢先还可以有2个子,数字越小,优先级越高:

     抢先:       子(2个)
     000          0/1
     001          0/1
     010          0/1
     011          0/1
     100          0/1
     101          0/1
     110          0/1
     111          0/1

此时,你系统中如果使用了TIME2、TIME4:

如果TIME4比TIME2重要,那么应该设置TIME4的抢先比TIME2高:
     
    IP[TIME2] = 0b10000000;//4号抢先
    IP[TIME4] = 0b01100000;//3号抢先  
   
    此时TIME4中断肯定会打断TIME2的中断,构成中断嵌套(不管他们的子优先是多少)

如果TIME4与TIME2在系统中总的地位相等,只是TIME4比TIME2稍微重要一点:

    IP[TIME2] = 0b01110000;//3号抢先,1号子优先
    IP[TIME4] = 0b01100000;//3号抢先,0号子优先

    因为2个设备的抢先级相同,所以此时谁也不能打断谁,只是当TIME2和TIME4同时申请中断时,先响应TIME4(子优先级此时起作用了)。

出0入0汤圆

发表于 2009-9-8 20:58:40 | 显示全部楼层
马老师:

我所描述的“分组”
就是系统复位后,确定了如下:
//*******************
#define NVIC_PriorityGroup_0         ((uint32_t)0x700) /*!< 0 bits for pre-emption priority
                                                            4 bits for subpriority */
#define NVIC_PriorityGroup_1         ((uint32_t)0x600) /*!< 1 bits for pre-emption priority
                                                            3 bits for subpriority */
#define NVIC_PriorityGroup_2         ((uint32_t)0x500) /*!< 2 bits for pre-emption priority
                                                            2 bits for subpriority */
#define NVIC_PriorityGroup_3         ((uint32_t)0x400) /*!< 3 bits for pre-emption priority
                                                            1 bits for subpriority */
#define NVIC_PriorityGroup_4         ((uint32_t)0x300) /*!< 4 bits for pre-emption priority
                                                            0 bits for subpriority */

//*******************

之后,也就是我理解的分组

在这之后,就是要对IP[X]进行配置的地方不太明了,一共68个外设中断

而您楼上所述:

“假定设置了PRIGROUP为0x04,那么就是说高3位用于定义抢先,后面1位定义子。这样实际就是确定你的系统中可以使用8个抢先,每个抢先还可以有2个子,数字越小,优先级越高”

我的理解“只能配置16个级别的中断优先级”,不知道这里的理解对否?

假定系统使用超过了16个以上的中断,那么是不是起码有2个外设的中断优先级别是一样的,他们直接是不能相互打断的,必须等待中断
完成。

看到这里,基本上已经理解了。

问题的实质还是我没仔细看马老师的笔记这个地方:


上电RESET后,AIRC中PRIGROUP[10:8],因此此时系统使用16个抢先优先级,无子优先级。另外由于所有外部中断通道的优先级控制字PRI_n也都是0,所以根据上面的定义可以得出,此时68个外部中断通道的抢先优先级都是0号,没有子优先级的区分。故此时不会发生任何的中断嵌套行为,谁也不能打断当前正在执行的中断服务。当多个中断出现后,则看它们的中断向量地址:地址越低,中断级别越高,STM32优先响应。注意:此时内部中断的抢先优先级也都是0号,由于它们的中断向量地址比外部中断向量地址都低,所以它们的优先级比外部中断高,但如果此时正在执行一个外部中断服务,它们也必须排队等待,只是可以插队,当正在执行的中断完成后,它们可以优先得到执行。


现在的理解应该OK了。


至于理解是否正确,也没有个标准答案来对比,搞的程序是跑,输出也正常,就是不知道为何这样跑。。。

出0入0汤圆

发表于 2009-9-8 21:18:41 | 显示全部楼层
哈哈,高手一出手,就非同反响呐。

俺也献献丑,这是去年写的一篇简单博客:STM32(Cortex-M3)中的优先级概念

出0入0汤圆

发表于 2009-9-8 22:19:14 | 显示全部楼层
machao老师的帖子是一定要顶的。

出0入0汤圆

发表于 2009-9-8 22:56:34 | 显示全部楼层
其实香版的东西,看了很多遍了,但是当时是不是用的ST的库,也没用ST的头文件。。。所以在应用的时候,碰到了这些个问题。

本人比较愚钝,后来实在搞不定,只好用库匆忙解决了问题。

这里要提一下21IC了,其实很多STM32的答案在21IC里面有的,香版在21IC可是呕心沥血滴。

出0入0汤圆

发表于 2009-9-8 23:21:49 | 显示全部楼层
谢谢马老师

出0入0汤圆

发表于 2009-9-8 23:38:44 | 显示全部楼层
mark

出10入95汤圆

发表于 2009-9-12 16:13:24 | 显示全部楼层
不是ST认为大家都是高手,我想他是自己都没有搞明白,
看看他们的库函数吧,哪些位是给抢占用的,哪些位是给响应用的,注释都是错的!!

出0入0汤圆

发表于 2009-9-16 19:25:33 | 显示全部楼层
mark 感谢

出0入0汤圆

发表于 2009-9-17 14:35:16 | 显示全部楼层
学习中

出0入0汤圆

发表于 2009-9-17 16:22:07 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-9-22 17:49:34 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-9-25 16:56:48 | 显示全部楼层
OOK!!

出0入0汤圆

发表于 2009-9-25 17:20:59 | 显示全部楼层
记号,谢谢马老师

出0入0汤圆

发表于 2009-9-25 21:45:23 | 显示全部楼层
看下

出0入0汤圆

发表于 2009-11-4 23:49:25 | 显示全部楼层
xuexi le

出0入0汤圆

发表于 2009-11-5 23:54:44 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-12-25 13:43:42 | 显示全部楼层
ji

出0入0汤圆

发表于 2009-12-25 13:52:23 | 显示全部楼层
谢谢 正准备学STM32

出0入0汤圆

发表于 2010-1-24 19:53:02 | 显示全部楼层
好帖子!

学习中!

出0入0汤圆

发表于 2010-1-24 20:09:38 | 显示全部楼层
这个要顶

出0入0汤圆

发表于 2010-1-26 12:49:02 | 显示全部楼层
马超老师应该 出一本关于STM32的书。。。。

出0入0汤圆

发表于 2010-1-28 20:46:29 | 显示全部楼层
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
请问大家 中断分组 中断可分到不同的组之中吗  几个中断可以在一个组中 组和组之间有优先级

一个组中的中断又有优先级这个就是SubPriority吗

出0入0汤圆

发表于 2010-1-30 00:43:45 | 显示全部楼层
回复【40楼】sunmake 夏天的风
-----------------------------------------------------------------------

楼上理解的正确 。抢占优先级用于可以抢占低优先级的中断。同一个抢占优先级的时候,不允许抢占,先来先处理,同时来的话,看谁的子优先级高,就处理谁。如果两个优先级都一样,而且同时到来,那么谁的中断号靠前,就处理谁。

出0入0汤圆

发表于 2010-3-4 21:31:29 | 显示全部楼层
精彩

出0入0汤圆

发表于 2010-3-6 18:30:04 | 显示全部楼层
回复【20楼】__STM32__
-----------------------------------------------------------------------

逛了老兄的博客空间,转走了很多文章。。。在此谢过了。。。

出0入0汤圆

发表于 2010-3-6 19:58:09 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-3-6 21:40:18 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-3-29 14:43:55 | 显示全部楼层
我还是一点不明白:
当PRIGROUP中的设置值决定为
#define NVIC_PriorityGroup_0         ((uint32_t)0x700) /*!< 0 bits for pre-emption priority  
                                                            4 bits for subpriority */  
#define NVIC_PriorityGroup_4         ((uint32_t)0x300) /*!< 4 bits for pre-emption priority  
                                                            0 bits for subpriority */  
中的一种时,即都是抢占优先级,或都是子优先级(副优先级)时,它两_会有什么区别呢?
还是拿马老师的例子来说:
PRIGROUP都是抢占优先级或子优先级时,TIM2 和TM2优先级一样且一起来时,接谁的呢?

就是都是抢占或都是子优先时不明白

出0入0汤圆

发表于 2010-3-29 15:04:15 | 显示全部楼层
如果都是抢占优先级,则优先级高的中断源可以打断正在接受服务的优先级低的中断。

如果都是子优先级时,则优先级高的中断源不可以打断正在接受服务的优先级低的中断。当2个中断同时发生时,CPU首先响应优先级高的中断。

出0入0汤圆

发表于 2010-3-29 15:14:37 | 显示全部楼层
非常感谢 __STM32__

如果TIM2 和TM2优先级一样且一起来时,看它两接到NVIC里谁的号(异常号)小就执行谁的ISR

出0入0汤圆

发表于 2010-3-29 15:38:31 | 显示全部楼层
另外关于stm32的各个中断号都在手册上规定好了,在起启动汇编文件里(相量表)也存了对应号的handler指针,在产生中断时自动跳转到handler执行ISR,但是:

1、在汇编文件已经存了全部的handler的指针

2、在stm32f10x_it.c里只声明了部分的handler

但编译时并没有报错,这两点有点冲突了吧,这是为什么呢?

出0入0汤圆

发表于 2010-3-29 17:00:19 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-3-30 09:10:41 | 显示全部楼层
感谢马老师。。。

出0入0汤圆

发表于 2010-5-31 17:24:47 | 显示全部楼层
马老师辛苦了,看了您写的,对于中断优先级是恍然大悟,感谢。。。

出0入0汤圆

发表于 2010-5-31 20:08:55 | 显示全部楼层
感谢马老师

出0入0汤圆

发表于 2010-6-3 17:10:53 | 显示全部楼层
mrak

出0入0汤圆

发表于 2010-6-3 21:48:45 | 显示全部楼层
谢谢马老师

出0入0汤圆

发表于 2010-6-4 10:07:59 | 显示全部楼层
mark

出0入24汤圆

发表于 2010-6-5 01:50:27 | 显示全部楼层
好贴,讲的很详细,很透彻,我已开始也弄不懂STM32的中断,后来是看的【Cortex-M3权威指南】才弄清楚的,但是那个讲的太专业了

出0入0汤圆

发表于 2010-6-5 01:56:06 | 显示全部楼层
回复【49楼】langley
另外关于stm32的各个中断号都在手册上规定好了,在起启动汇编文件里(相量表)也存了对应号的handler指针,在产生中断时自动跳转到handler执行isr,但是:
1、在汇编文件已经存了全部的handler的指针
2、在stm32f10x_it.c里只声明了部分的handler
但编译时并没有报错,这两点有点冲突了吧,这是为什么呢?
-----------------------------------------------------------------------


          PUBWEAK NMI_Handler               
          PUBWEAK HardFault_Handler         
          PUBWEAK MemManage_Handler         
          PUBWEAK BusFault_Handler         
          ... ...

PUBWEAK 可能定义默认的Handler, 能被用户定义Handler所覆盖.

如果用户没有定_Handler, 默_Handler被使用.

NMI_Handler               
HardFault_Handler         
MemManage_Handler         
BusFault_Handler         
... ...
Default_Handler
        B Default_Handler

仅供参考, 不一定正确

出0入0汤圆

发表于 2010-6-5 21:26:58 | 显示全部楼层
STM32的优先级的确有点绕

出0入0汤圆

发表于 2010-7-15 11:41:35 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-7-15 14:57:31 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-7-15 14:59:16 | 显示全部楼层
这个还是要仔细的产看参考手册和函数参考手册,我记得我看了一下函数参考手册上面有一个例子我就明白了啊。

出0入0汤圆

发表于 2010-7-24 15:38:00 | 显示全部楼层
很好,祝您一生幸福!!

出0入0汤圆

发表于 2010-7-26 17:40:56 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-8-5 12:04:43 | 显示全部楼层
关注马老师下一个作品!

出0入0汤圆

发表于 2010-8-6 17:41:17 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-8-7 15:39:02 | 显示全部楼层
俺也顶顶!

出0入0汤圆

发表于 2010-8-10 20:31:19 | 显示全部楼层
谢谢马老师的资料,虽然不是很懂

出0入0汤圆

发表于 2010-8-17 14:39:59 | 显示全部楼层
我倒是明白怎么回事,但是不知道 每个中断通道优先级控制字的地址(也就是大家说的PRI_2)和描述在哪里,郁闷啊!
也不知道AIRC中PRIGROUP的地址,这叫我怎么赋值啊?
哪位兄弟指点一下

出0入0汤圆

发表于 2010-8-20 11:21:05 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-8-23 23:48:16 | 显示全部楼层
记号

出0入0汤圆

发表于 2010-9-6 17:03:19 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-9-19 08:19:04 | 显示全部楼层
NB!

出0入0汤圆

发表于 2010-11-15 11:33:36 | 显示全部楼层
Mark一下 慢慢看

出0入0汤圆

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

出0入0汤圆

发表于 2010-11-17 20:46:39 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-11-17 21:20:40 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-11-17 21:43:15 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-11-22 08:34:16 | 显示全部楼层
记认,做

出0入0汤圆

发表于 2010-11-24 20:46:49 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-11-25 19:14:02 | 显示全部楼层
感谢马老师!

出0入0汤圆

发表于 2010-12-1 17:31:15 | 显示全部楼层
mark```

出0入0汤圆

发表于 2010-12-14 09:41:03 | 显示全部楼层
论坛里面还有老师光顾?好人一生平安

出0入0汤圆

发表于 2011-3-9 10:34:17 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-3-10 10:28:07 | 显示全部楼层
先标记一下,再下载!

出0入0汤圆

发表于 2011-3-29 18:53:29 | 显示全部楼层
mark

出110入109汤圆

发表于 2011-3-29 19:25:47 | 显示全部楼层
在PM0056-STM32F10xxx Cortex-M3 programming manual里头,解析了NVIC有关的寄存器的。
PM0056-STM32F10xxx Cortex-M3 programming manualourdev_626579PHLWP4.rar(文件大小:752K) (原文件名:PM0056-STM32F10xxx Cortex-M3 programming manual.rar)

出110入109汤圆

发表于 2011-3-29 21:11:33 | 显示全部楼层
回复【15楼】machao  
如果有看懂这样文献的能力垫底,还有什么样的文献看不懂吗。
-----------------------------------------------------------------------
让想起上学时,英语课本上一篇讽刺科幻文,说N多年后,从外星球返回被污染的地球。而这个项目的价值,仅在于“能在地球生存,就能在其它星球活下来”~

ST的文档组织得确实累人,这个月来,我边看边做项目,才逐渐感觉寻到了点门路。
分享阅读了的几个重量级文档名称,基本按阅读顺序及重要性排列
A  RM0008_CN(2010年1月10日)+RM0008 Ver11(GPIO-RCC-...)
B  STM32F103xC/D/E(September 2009 Doc ID 14611 Rev 7),管脚分布等
C  互联性的datasheet,则看STM32F105/107(May 2010 Doc ID 15274 Rev 5)
D  stm32f10x_stdperiph_lib_um.chm,即标准库的V3.4 help手册。
边编程时,边按Modules模块查阅,也挺便捷的(主要看对应的Exported_Types及Private_Functions )
E  标准库提供的例程,挺详尽,位于..\Project\STM32F10x_StdPeriph_Examples。我们买的山寨开发板提供的例程,还没它全面及代码清晰~
F  再有就是宋老师的《Cortex-M3权威指南》,理论性很强,且跟STM32不是很对应,不适合入门阅读。(可怜2010年公司还没上STM32平台,业余时,我竟然啃它“入门”...)
既然说到这,就打包上传吧(无线网络不稳定,传了3次均失败,郁闷~)
在马老师这儿“掉斧子”了,:)


附带罗列几个可能对应用有帮助的官方文档索引:
AN2606描述了非互联型的Bootloader,通过USART1
AN2662描述了互联型的Bootloader DFU,通过USART1/2,CAN2,USB-OTG
AN14598为How to use the high-density STM32F103xx microcontroller to play audio files with an external IIS audio codec,描述了I2S_CODEC固件的使用
AN14910描述了一种开源Speex音频压缩/解压音频的
AN14988描述了DSP Library,而DSP库文件在um0585压缩包内
AN15118描述了4种IDE
AN15067描述了如何让ADC更准确
um0424中是STM32_USB-FS-Device_Lib_V3.2.1
um0412里是DfuSe,Device firmware upgrade STMicroelectronics Extension,可以通过USB接口在线编程STM32
um0424里是STM32F10xUSBLib
um0427里是FWL,即固件库。从V3.3版后,说明文档改为chm而不再是pdf格式
um0462里是另一种Flash Loader,估计是串口ISP软件吧
TN0132里描述了SWV,ETM,且还有个名为TN0132的压缩文件里有对应范例代码
TN0072里宏观描述了STM32及工具链
TN0072/15118里第6章"Debug support for timers,watchdog, CAN and I2C",描述了如何在各IDE调试状态时,按需要操作上述几个外设。估计得用上FWL里的debugMCU里头定义的系列函数

出0入0汤圆

发表于 2011-3-29 21:34:18 | 显示全部楼层
mark!!!!

出0入0汤圆

发表于 2011-3-31 16:40:27 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-3-31 17:22:16 | 显示全部楼层
好人一身平安

出0入0汤圆

发表于 2011-3-31 19:54:18 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-4-1 22:08:15 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-4-1 23:08:17 | 显示全部楼层
都是夜猫子啊!

出0入0汤圆

发表于 2011-4-2 10:36:02 | 显示全部楼层
学习

出0入0汤圆

发表于 2011-4-10 16:39:11 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-4-10 17:31:46 | 显示全部楼层
mark先

出0入0汤圆

发表于 2011-4-10 18:02:21 | 显示全部楼层
mark

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-5-5 11:15

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

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