NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 2728 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید

نمایش نتیجه های نظرسنجی ها: چگونه STM32 را ياد بگيريم؟

رأی دهندگان
263. شما نمی توانید در این نظرسنجی رای دهید.
  • سطحي و كار راه انداز

    20 7.60%
  • دقيق و حرفه اي

    243 92.40%
صفحه 13 از 58 نخستنخست 1234567891011121314151617181920212223242526272829303132 ... آخرینآخرین
نمایش نتایج: از 241 به 260 از 1155

موضوع: شروع آموزش stm32 بر پایه برد سفارشی

  1. #241
    مدیر بخش STM32 sigma-mx آواتار ها
    تاریخ عضویت
    Nov 2009
    نام
    سعید شریفیان
    نوشته ها
    1,421
    تشکر
    804
    تشکر شده 2,520 بار در 978 پست

    پیش فرض

    سلام بر همه .
    اولا CMSIS کاملا رایگانه و شرکتهای سازنده جهت ساپورت هر چه بهتر برنامه نویس باتوجه به قواعد و استاندارد های مشترک بین کتابخانه های CMSIS اونها رو مینویسن و برای دانلود در صفحه میکروی مربوطه قرار میدن .
    ضمنا تمام کتابخونه همونی بود که همراه مثال آپ کردم . اگه پوشه حدود 20 مگی اصلی رو دانلود کنید از شرکت خودش ، میبینید بقیش مثال روی برد های معروف خود شرکت هست . اصل موضوع همینی هست که گذاشتم . البته یه help هم همراهشون میزارن معمولا .
    روش یادگیری CMSIS بسیار آسونه . شما مثلا می خوای با GPIO کار کنی . میری کتابخونه GPIO رو باز می کنی بالای هر تابع توضیح عملکرد تابع رو نوشته . پارامتر های مورد نیاز و خروجی اگه داشته باشه هم تو ضیح داده . من تو فایل text که قبلا درباره RCC گذاشتم تمام توابع RCC با توضیحاتشو به همراه یه مثال گذاشته بودم .

  2. کاربران : 8 تشکر کرده اند از شما sigma-mx برای ارسال این پست سودمند:


  3. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نام
    Advertising world
    نوشته ها
    Many
     

  4. #242
    مدیرکل انجمنها Doloop آواتار ها
    تاریخ عضویت
    Aug 2011
    نام
    حسين
    نوشته ها
    1,964
    تشکر
    3,312
    تشکر شده 3,086 بار در 1,371 پست

    پیش فرض

    سلام دادا
    توی پروژت میشه بگی این خط چیکار میکنه
    کد:
    #ifdef  USE_FULL_ASSERT
    void assert_failed(uint8_t* file, uint32_t line)
    { 
      while(1);
    }
    #endif
    *** اللّهم عجّل لولیک الفرج ***

  5. #243
    مدیر بخش STM32 sigma-mx آواتار ها
    تاریخ عضویت
    Nov 2009
    نام
    سعید شریفیان
    نوشته ها
    1,421
    تشکر
    804
    تشکر شده 2,520 بار در 978 پست

    پیش فرض

    من هنوز باهاش کار نکردم . ولی باید حتما نوشته بشه . بنظر میاد برای اشکال یابی حین برنامه نوشتن باشه . اگه داخل توابع رو نگاه کنید میبینید که یسری کد برای تصدیق پارامتر های تابع نوشته شده . مثلا چک میکنه اگه نوشتی GPIOK مچت رو بگیره . این به همون ربط داره . یسری فایل آموزشی تصویری مهندس شکرریز آپ کرده بود چند رو پیش . یکی از اونا درباره این assert توضیح داده . یه نگاهی بهش بنداز .

  6. #244
    مدیرکل انجمنها Doloop آواتار ها
    تاریخ عضویت
    Aug 2011
    نام
    حسين
    نوشته ها
    1,964
    تشکر
    3,312
    تشکر شده 3,086 بار در 1,371 پست

    پیش فرض

    راستی مهندس قضیه این افست چیه که برای هر رجیستر نوشته شده صفحه 119 manual تو جدول
    یکم هم شبیه به گفته شماست

    مثلا آدرس مطلق دسترسی به این هفت رجیستر برای GPIOA به ترتیب برابر :
    0X40010818 - 0X40010814-0X40010810-0X4001080C-0X40010808-0X40010804-0X40010800
    *** اللّهم عجّل لولیک الفرج ***

  7. #245
    کاربر دائمی
    تاریخ عضویت
    Jul 2009
    نوشته ها
    415
    تشکر
    218
    تشکر شده 531 بار در 212 پست

    پیش فرض

    Bit banding
    The Cortex™-M3 memory map includes two bit-band regions. These regions map each
    word in an alias region of memory to a bit in a bit-band region of memory. Writing to a word
    in the alias region has the same effect as a read-modify-write operation on the targeted bit in
    the bit-band region.
    In the STM32F10xxx both peripheral registers and SRAM are mapped in a bit-band region.
    This allows single bit-band write and read operations to be performed. The operations are
    only available for Cortex-M3 accesses, not from other bus masters (e.g. DMA).
    A mapping formula shows how to reference each word in the alias region to a corresponding
    bit in the bit-band region. The mapping formula is:
    bit_word_addr = bit_band_base + (byte_offset x 32) + (bit_number × 4)
    where:
    bit_word_addr is the address of the word in the alias memory region that maps to the
    targeted bit.
    bit_band_base is the starting address of the alias region
    byte_offset is the number of the byte in the bit-band region that contains the targeted bit
    bit_number is the bit position (0-7) of the targeted bit.
    Example:
    The following example shows how to map bit 2 of the byte located at SRAM address
    0x20000300 in the alias region:
    0x22006008 = 0x22000000 + (0x300*32) + (2*4).
    Writing to address 0x22006008 has the same effect as a read-modify-write operation on bit
    2 of the byte at SRAM address 0x20000300.
    Reading address 0x22006008 returns the value (0x01 or 0x00) of bit 2 of the byte at SRAM
    address 0x20000300 (0x01: bit set; 0x00: bit reset).
    For more information on Bit-Banding, please refer to the Cortex™-M3 Technical Reference
    Manual.

  8. #246
    کاربر فعال pooriya آواتار ها
    تاریخ عضویت
    Nov 2008
    نام
    پوریا علیزاده
    نوشته ها
    316
    تشکر
    163
    تشکر شده 676 بار در 217 پست

    پیش فرض

    نقل قول نوشته اصلی توسط do...loop نمایش پست ها
    سلام دادا
    توی پروژت میشه بگی این خط چیکار میکنه
    کد:
    #ifdef  USE_FULL_ASSERT
    void assert_failed(uint8_t* file, uint32_t line)
    { 
      while(1);
    }
    #endif
    سلام
    استفاده کردن یا نکردنش دست خودتون هست و اخلاللی تو برنامه ایجاد نمی کنه.ولی بهتره استفاده بشه و مربوط به خطا یابی هست و یه سری پارا متر ها داره و نام فایل سورس مورد نظر و خطی که خطا تو اون ایجاد شده را گزارش می ده.

    توضیهات . پارا متر هاشو می تونیین تو stm32f10x_conf.h پیدا کنید که هلو توضیح داده.
    [PHP]The assert_param macro is implemented in stm32f10x_conf.h as follows:

    #ifdef USE_FULL_ASSERT
    /**
    * @brief The assert_param macro is used for function's parameters check.
    * @param expr: If expr is false, it calls assert_failed function
    * which reports the name of the source file and the source
    * line number of the call that failed.
    * If expr is true, it returns no value.
    * @retval : None
    */
    #define assert_param(expr) ((expr) ? (void)0 : assert_failed((uint8_t *)__FILE__, __LINE__))
    /* Exported functions ------------------------------------------------------- */
    void assert_failed(uint8_t* file, uint32_t line);
    #else
    #define assert_param(expr) ((void)0)
    #endif /* USE_FULL_ASSERT */



    The assert_failed function is implemented in the main.c file or in any other user C files and can be modified by the user in order to take action when an error occurs.

    #ifdef USE_FULL_ASSERT
    /**
    * @brief Reports the name of the source file and the source line number
    * where the assert_param error has occurred.
    * @param file: pointer to the source file name
    * @param line: assert_param error line source number
    * @retval : None
    */
    void assert_failed(uint8_t* file, uint32_t line)
    {
    /* User can add his own implementation to report the file name and line number,
    ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */

    /* Infinite loop */
    while (1)
    {
    }
    }
    #endif
    [/PHP]

    مثلا برای قسمت وقفه های خارجی(که دیگه اونقدر قشنگ گفته من توضیح نمی دم) :
    [PHP]stm32f10x_exti.c
    void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct)
    {
    /* Check the parameters */
    assert_param(IS_EXTI_MODE(EXTI_InitStruct->EXTI_Mode));
    assert_param(IS_EXTI_TRIGGER(EXTI_InitStruct->EXTI_Trigger));
    assert_param(IS_EXTI_LINE(EXTI_InitStruct->EXTI_Line));
    assert_param(IS_FUNCTIONAL_STATE(EXTI_InitStruct->EXTI_LineCmd));
    ...
    }



    stm32f10x_exti.h
    #define IS_EXTI_MODE(MODE) (((MODE) == EXTI_Mode_Interrupt) || ((MODE) == EXTI_Mode_Event))
    #define IS_EXTI_TRIGGER(TRIGGER) (((TRIGGER) == EXTI_Trigger_Rising) || \
    ((TRIGGER) == EXTI_Trigger_Falling) || \
    ((TRIGGER) == EXTI_Trigger_Rising_Falling))

    #define IS_EXTI_LINE(LINE) ((((LINE) & (uint32_t)0xFFF00000) == 0x00) && ((LINE) != (uint16_t)0x00))


    If the expression passed to the assert_param macro is false, the assert_failed function is called, otherwise nothing happens.
    [/PHP]
    ویرایش توسط pooriya : 14-03-2012 در ساعت 19:46

  9. کاربران : 6 تشکر کرده اند از شما pooriya برای ارسال این پست سودمند:


  10. #247
    مدیر بخش STM32 sigma-mx آواتار ها
    تاریخ عضویت
    Nov 2009
    نام
    سعید شریفیان
    نوشته ها
    1,421
    تشکر
    804
    تشکر شده 2,520 بار در 978 پست

    پیش فرض

    نقل قول نوشته اصلی توسط do...loop نمایش پست ها
    راستی مهندس قضیه این افست چیه که برای هر رجیستر نوشته شده صفحه 119 manual تو جدول
    یکم هم شبیه به گفته شماست
    آدرس اصلی بود 0x40010800 حالا برای اولین رجیستر نوشته 0x00 تا جلوتر ( آفست)یعنی همون آدرس. برای بعدی نوشته 0x04 یعنی 4 تا جلوتر یعنی : 0x40010804 و ....

  11. تشکرها از این نوشته :


  12. #248
    مدیرکل انجمنها Doloop آواتار ها
    تاریخ عضویت
    Aug 2011
    نام
    حسين
    نوشته ها
    1,964
    تشکر
    3,312
    تشکر شده 3,086 بار در 1,371 پست

    پیش فرض

    مهندس درک این CMSIS سخته من که چیزی متوجه نشدم.!!!

    کد:
      GPIO_Initx.GPIO_Pin = GPIO_Pin_1;
      GPIO_Initx.GPIO_Mode = GPIO_Mode_Out_PP;
      GPIO_Initx.GPIO_Speed = GPIO_Speed_50MHz;
      GPIO_Init(GPIOA, &GPIO_Initx);
      GPIO_Initx.GPIO_Pin = GPIO_Pin_2;
      GPIO_Initx.GPIO_Mode = GPIO_Mode_Out_PP;
      GPIO_Initx.GPIO_Speed = GPIO_Speed_50MHz;
      GPIO_Init(GPIOA, &GPIO_Initx);
      GPIO_Initx.GPIO_Pin = GPIO_Pin_3;
      GPIO_Initx.GPIO_Mode = GPIO_Mode_Out_PP;
      GPIO_Initx.GPIO_Speed = GPIO_Speed_50MHz;
      GPIO_Init(GPIOA, &GPIO_Initx);
    مهندس اول همه اینا یه جمله مشترک هست اون برای چیه؟؟
    من هدر GPIO رو دیدم ولی اینو توش پیدا نکردم؟؟؟
    *** اللّهم عجّل لولیک الفرج ***

  13. #249
    کاربر دائمی
    تاریخ عضویت
    Jul 2009
    نوشته ها
    415
    تشکر
    218
    تشکر شده 531 بار در 212 پست

    پیش فرض

    سلام

    اساتيد .. من اين برنامه رو نوشتم و براي اينكه يه تاخير بزارم تا كاليبره انجام بشه حلقه گذاشتم بشماره

    بعد از روشن كردن هم يه دستور شرط گذاشتم تا پرچم اماده به كار روشن نشده ادامه نده

    اما اين برنامه وقتي استپ به استپ جرا ميشه كار ميكنه ولي وقتي يك ضرب اجرا ميكنم سر اون شرط گير ميكنه يعني فلگ روشن نميشه

    کد:
    #include <stm32f10x_lib.h>         
    #include "STM32_Init.h"     
    //#include<stm32f10x.h>
    
    int main (void)
    {
     int i,j,a,b,c;
     stm32_Init();
    
        RCC->APB2ENR=0x0000020C;
        ADC1->CR2=1;
        ADC1->CR2=0;
        GPIOA->ODR = 10;
        ADC1->CR2=4;
        for(i=0;i<10;i++)
        {}
        ADC1->CR2=3;
    
     while(1)
     {
       ADC1->CR2=3;
       while(ADC1->SR < 11)
       {
       }
    
        a=ADC1->DR;
        ADC1->SR=10;
        b=a*0.8;
        c=a*0.2;
    
      for(j=1;j<a;j++)
      {
          for(i=b;i<j;i++)
           GPIOA->ODR = 5;
          for(i=c;i>j;i--)
           GPIOA->ODR = 10;
      }
     }
    }
    يك سوال .. من در اين برنامه نگفتم كه كدوم پايه مبدل كار كنه .. اما تغييرات پتانسيومتر روي سيستم تاثير درست داره !!
    ویرایش توسط alishekarriz : 15-03-2012 در ساعت 17:46

  14. تشکرها از این نوشته :


  15. #250
    مدیرکل انجمنها Doloop آواتار ها
    تاریخ عضویت
    Aug 2011
    نام
    حسين
    نوشته ها
    1,964
    تشکر
    3,312
    تشکر شده 3,086 بار در 1,371 پست

    پیش فرض

    سلام
    مهندس من یه سوال دارم شما متغیرهات همه اینت تعریف شدن ولی مقدار بی و سی میتونه اعشار باشه درسته
    برنامت ارور نداد
    *** اللّهم عجّل لولیک الفرج ***

  16. #251
    کاربر علاقه مند
    تاریخ عضویت
    Aug 2011
    نوشته ها
    81
    تشکر
    1
    تشکر شده 27 بار در 18 پست

    پیش فرض

    این keil او ولش کنین
    Free and open ARM Cortex M3 and Cortex M0 embedded development tools یه کامپایلر مجانی و باحاله برای CM3

  17. #252
    مدیرکل انجمنها Doloop آواتار ها
    تاریخ عضویت
    Aug 2011
    نام
    حسين
    نوشته ها
    1,964
    تشکر
    3,312
    تشکر شده 3,086 بار در 1,371 پست

    پیش فرض

    مهندس با تشکر
    ما خیلی وقته که سر کامپایلر به نتیجه رسیدیم
    کیل هم جامع تره هم یه نرم افزار فراگیره پس عاقلانه هست که با این کار کنیم
    من خودم چون با ارم ۷ هم کار میکنم این برام بهتره بقیه هم فکر نکنم به کورتکس محدود باشن و حتما با سری های دیگه ارم کار میکنن
    *** اللّهم عجّل لولیک الفرج ***

  18. #253
    کاربر دائمی
    تاریخ عضویت
    Jul 2009
    نوشته ها
    415
    تشکر
    218
    تشکر شده 531 بار در 212 پست

    پیش فرض

    حاج حسين .. اين كيل بچه خوبيه خودش ميگيره من چي ميخوام اعشارشو حذف ميكنه .. توي سي هم همينطور هست فكر كنم .. وقتي يك عدد اعشاري در يك متغيير صحيح گذاشته ميشه قسمت اعشار حذف ميشه

    شما بگو من چطوري بگم كدوم پايه بايد ولتاژ رو بخونه ؟ اين خودش داره ميخونه و كار ميكنه !
    بعدش اون انتظار براي روشن شدن پرچم پايان تبديل چرا كار نميكنه يعني وقتي منتظر نميموني پرچم ميزنه وقتي منتظر ميموني پرچم نميزينه !!



    لطفا پارازيت نفرستيد

  19. #254
    مدیرکل انجمنها Doloop آواتار ها
    تاریخ عضویت
    Aug 2011
    نام
    حسين
    نوشته ها
    1,964
    تشکر
    3,312
    تشکر شده 3,086 بار در 1,371 پست

    پیش فرض

    کد:
        ADC1->CR2=1;     ADC1->CR2=0;
    سلام مهندس اقا اینجا چرا اول ADC رو فعال کردی بعد دوباره غیر فعال کردی

    کد:
    while(ADC1->SR < 11)
    در مورد این سه تا بیتی که باید فعال بشه یه توضیحی میدی؟؟؟

    a=ADC1->DR;

    بعد در مورد این قسمت و دلیل ضرب 0.2 و 0.8 چیه؟

    اون for های آخر برنامه چیکار میکنه؟
    ببخشید که همش سوال شد.
    *** اللّهم عجّل لولیک الفرج ***

  20. تشکرها از این نوشته :


  21. #255
    کاربر دائمی
    تاریخ عضویت
    Jul 2009
    نوشته ها
    415
    تشکر
    218
    تشکر شده 531 بار در 212 پست

    پیش فرض

    سلام .. گفتم همه رفتن مسافرت .. هيچ كسي نيست گير بده

    خب درباره فعال كردن وغير فعال كردن .. راستش توي ديتاشيت نوشته بود كه قبل از كاليبره ADC رو خاموش كنيد منم يه بار روشن و خاموش كردم كه راضي بشه
    ADC_CR2
    بيت صفر روشن كردن هست (براي بار اول) و فرمان شروع تبديل هست (براي بار دوم)
    بيت اول وقتي روشن باشه ميگه كه تبديل پشت سر هم ادامه داشته باشه ..
    بيت سوم هم دستور كاليبره ميده

    بعدشم سه تا بيت ADC1->SR
    من نميخوام سه تا بيت فعال بشن !!
    در هنگام ديباگ ديدم دوتا بيت EOC (پايان تبديل ) و STRT: Regular channel Start flag فعال ميشن يعني 18 دسيمال يا 12 هگز .. منم گذاشتم كه بالاي 11 (يه اشتباه كه تاثير نداشت)
    ولي اين قسمت اجرا رو متوقف ميكنه ..ولي وقتي استپ به استپ ميريم جلو اين قسمت درست عمل ميكنه

    اون تقسيمها هم براي قشنگ تر شدن زمان خاموش شدن و روشن شدن LEDهست و كاملا شخصي

    حلقه اخر برنامه هم كه هفته پيش گفتم .. باعث ميشه نورها آرام روشن بشوند و آرام خاموش بشوند ..
    البته فكر كنم b - c رو جابجا نوشتم
    اينطوري بايدباشه
    کد:
      for(j=1;j<a;j++)
      {
          for(i=c;i<j;i++)
           GPIOA->ODR = 5;
          for(i=b;i>j;i--)
           GPIOA->ODR = 10;
      }

  22. کاربران : 2 تشکر کرده اند از شما alishekarriz برای ارسال این پست سودمند:


  23. #256
    مدیرکل انجمنها Doloop آواتار ها
    تاریخ عضویت
    Aug 2011
    نام
    حسين
    نوشته ها
    1,964
    تشکر
    3,312
    تشکر شده 3,086 بار در 1,371 پست

    پیش فرض

    شما بگو من چطوري بگم كدوم پايه بايد ولتاژ رو بخونه ؟ اين خودش داره ميخونه و كار ميكنه !
    سلام
    اقا شما این قسمت رو ببین فکر کنم جوابت این باشه انتخاب کانال
    رجیستر ADC_SQR1
    بیت های 20 تا 23
    درسته یا....
    *** اللّهم عجّل لولیک الفرج ***

  24. تشکرها از این نوشته :


  25. #257
    مدیرکل انجمنها Doloop آواتار ها
    تاریخ عضویت
    Aug 2011
    نام
    حسين
    نوشته ها
    1,964
    تشکر
    3,312
    تشکر شده 3,086 بار در 1,371 پست

    پیش فرض

    سلام مهندس چرا اینجا خوابید؟!!!
    راستی درمورد فرق:
    injected
    regular
    یه توضیح میدی؟
    تشکر
    *** اللّهم عجّل لولیک الفرج ***

  26. #258
    مدیر بخش STM32 sigma-mx آواتار ها
    تاریخ عضویت
    Nov 2009
    نام
    سعید شریفیان
    نوشته ها
    1,421
    تشکر
    804
    تشکر شده 2,520 بار در 978 پست

    پیش فرض

    سلام بر اساتید گرامی
    آقا چه خبرا ؟ من که چند روز حسابی گرفتار بودم . فقط چند بار تونستم سایت رو باز کنم . اونم دیدم تاپیک تو لیست نیست !!!! دمتون گرم ، بی خیال شدین !!!؟؟؟

  27. #259
    کاربر دائمی
    تاریخ عضویت
    Jul 2009
    نوشته ها
    415
    تشکر
    218
    تشکر شده 531 بار در 212 پست

    پیش فرض

    فكر كنم عيد رو تعطيل اعلام كنيم خيال خودمون راحتتر هست . منم روزي چند بار سر ميزنم ولي خب كسي نيست ..

    حقيقت سواد رگولار و اينجكتيد و چندين مد ديگه رو ندارم . كدومش كي به كار مياد .. بايد قشنگ تست كنيم بببينم چي به چيه .

    ADC_SQR3-sq1
    نفهميدم چي ميگه ولي وقتي از صفر بيشترش ميكنم .. جواب مبدل ADCكاملا بي ثبات ميشه و تغييرات زياد ميشه

  28. #260
    مدیرکل انجمنها Doloop آواتار ها
    تاریخ عضویت
    Aug 2011
    نام
    حسين
    نوشته ها
    1,964
    تشکر
    3,312
    تشکر شده 3,086 بار در 1,371 پست

    پیش فرض

    سلام به مهندسین گلم...
    اقا این کالیبره چرا اصلا کار نمیکنه
    وقتی بیت کالیبره یک میشه بعد از انجام کالیبراسیون خودش باید صفر بشه!!!
    ولی این برنامه که نشون میده اصلا صفر نمیشه!!!
    مهندس شما به کجا رسیدی؟؟؟

    این برنامه منه

    کد:
    #include <stm32f10x_lib.h>         
    #include "STM32_Init.h"
    
    int main (void)
    {
     int i,c;
     stm32_Init();
     GPIOA->ODR = 0;
     RCC->APB2ENR = 524;
     ADC1->CR2 = 1;
     ADC1->CR2 = 0;
     ADC1->CR2 = 4;
     c = 4 & ADC1->CR2; 
     while (c==0)
      { 
       c = 4 & ADC1->CR2;
       for(i=0;i<500000;i++)
       GPIOA->ODR = 2;
      }
      while (1)
      {
       for(i=0;i<1000000;i++)
       GPIOA->ODR = 4;
      }
    }
    *** اللّهم عجّل لولیک الفرج ***

صفحه 13 از 58 نخستنخست 1234567891011121314151617181920212223242526272829303132 ... آخرینآخرین

موضوعات مشابه

  1. پاسخ: 515
    آخرين نوشته: 09-12-2018, 12:45
  2. پاسخ: 105
    آخرين نوشته: 02-12-2015, 17:33
  3. Stm32 رو چطوری شروع کنم دوستان ...!
    توسط sarab1 در انجمن stm32
    پاسخ: 18
    آخرين نوشته: 11-10-2013, 18:54
  4. پاسخ: 9
    آخرين نوشته: 01-08-2010, 12:53
  5. انتشار قريب‌الوقوع نخستين به‌روزرساني بزرگ ويندوز سون
    توسط arsalan681 در انجمن اخبار کامپیوتر و IT و مسابقات رباتیک
    پاسخ: 0
    آخرين نوشته: 08-06-2010, 12:43

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •