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

موضوع: ایجاد تاخیر در کامپایلر keil

  1. #1
    کاربر فعال
    تاریخ عضویت
    Nov 2013
    نوشته ها
    140
    تشکر
    0
    تشکر شده 3 بار در 3 پست

    پیش فرض ایجاد تاخیر در کامپایلر keil

    سلام.
    من دارم با میکروکنترلر LPC1768 و کامپایلر keil کار میکنم و میخوام که در برنامه تاخیر ایجاد کنم. در کامپایلر keil کتابخانه ای به نام delay برای این کار وجود نداره پس باید چه جوری تاخیر رو ایجاد کنم. توی انجمن که جستجو کردم بعضی ها گفته بودن که باید با ایجاد یک حلقه در برنامه این تاخیر رو ایجاد کنی و به عبارتی دیگر باید خود برنامه نویس با نوشتن یک تابع این کار رو انجام بده. میخواستم ببینم که کتابخانه استانداردی برای این کار وجود نداره یا روش دیگه ای نیست که توسط اون بتونیم در برنامه تاخیر ایجاد کنیم.
    خیلی ممنون.

  2. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نوشته ها
    Many
     

  3. #2
    کاربر فعال
    تاریخ عضویت
    Jul 2011
    نوشته ها
    130
    تشکر
    65
    تشکر شده 204 بار در 77 پست

    پیش فرض

    سلام

    مشخص اصلا درست نگشتی! برای ایجاد تاخیر معمولا از تایمر استفاده میشه. البته میتونی میکرو رو توی یک حلقه منتظر بزاری ولی به نظر من اصلا کار اصولی نیست. پیشنهاد میکنم از تایمر Systick استفاده کنی. یک تابع بنویس که Systick رو روی فرکانس مورد نظر تنظیم کنه. با استفاده از Systick handler و یک تابع ساده میتونی تاخیر مورد نظر رو ایجاد کنی. برای مثال این شکل کلی تابع main.c میشه:
    کد:
    //--------------------------------------------------------------------------------
    // File name: main.c
    //----------------------------------------------------------------------------
    #include "LPC17XX.h"
    #include "delay.h"
    
    void main(){
        pll_init(); // Configuration function for PLL
        SysTick_Config(SystemCoreClock/1000000); /* Generate interrupt each 1uS */
        while(1){
            // do sth
            delay();
            // do sth        
        }
    
        return 0;
    }
    حالا توی فایل delay.c باید systick handler و تابع delay رو تعریف کنی. مثلا اینطوری:

    کد:
    //--------------------------------------------------------------------------------
    // File name: delay.c
    //----------------------------------------------------------------------------
    #include "delay.h"
    
    /*----------------------------------------------------------------------------
      SysTick_Handler
     *----------------------------------------------------------------------------*/
    void SysTick_Handler(void) {
            msTicks++;                        /* increment counter necessary in Delay() */    
    }
    
    /*------------------------------------------------------------------------------
      delays number of tick Systicks (happens every 1 ms)
     *------------------------------------------------------------------------------*/
    void Delay (uint32 dlyTicks) {
      uint32 curTicks;
    
      curTicks = msTicks;
      while ((msTicks - curTicks) < dlyTicks);
    }
    حواست باشه که یک جایی توی فایل delay.h متغییر msTicks رو به صورت volatile static uint32 msTicks تعریف کنی.
    ویرایش توسط hossein1387 : 15-06-2014 در ساعت 09:22

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


  5. #3
    کاربر علاقه مند
    تاریخ عضویت
    Sep 2007
    نوشته ها
    32
    تشکر
    10
    تشکر شده 0 بار در 0 پست

    پیش فرض

    تعریف یک متغیر به شکل volatile چه کار میکنه و اصلا volatile یعنی چی ؟

  6. #4
    مدیر انجمن Aghaeifar آواتار ها
    تاریخ عضویت
    Feb 2010
    نام
    علی آقائی فر
    نوشته ها
    751
    تشکر
    552
    تشکر شده 975 بار در 440 پست

    پیش فرض

    نقل قول نوشته اصلی توسط hd_uni_pro نمایش پست ها
    تعریف یک متغیر به شکل volatile چه کار میکنه و اصلا volatile یعنی چی ؟
    یک جستجوی ساده در گوگل :
    Volatile variable - Wikipedia, the free encyclopedia

    جلوگیری از Optimize کرده یک متغیر توسط کامپایلر توسط این کلمه کلیدی مشخص میشه
    ما در انتظار رویت خورشیدیم ...

    اللهم عجل لولیک الفرج

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


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

  1. مشکل با کامپایلر keil
    توسط rezapop در انجمن AT91 series (ATMEL)
    پاسخ: 11
    آخرين نوشته: 26-04-2015, 08:21
  2. دانلود Keil MDK-ARM Ver 4.5
    توسط Aghaeifar در انجمن پرسش و پاسخ (نرم افزارهای تخصصی)
    پاسخ: 30
    آخرين نوشته: 10-02-2013, 03:45
  3. مشکل کار با رشته ها در keil
    توسط chroo در انجمن میکرو کنترلر های 32 بیتی(arm)
    پاسخ: 2
    آخرين نوشته: 21-08-2012, 18:32
  4. keil 4.23
    توسط lpln852 در انجمن stm32
    پاسخ: 1
    آخرين نوشته: 18-03-2012, 11:26
  5. مشکل با کامپایل keil
    توسط imported_pmf در انجمن سایر موارد مرتبط با میکرو کنترلرها
    پاسخ: 13
    آخرين نوشته: 17-03-2012, 01:17

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

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