اطلاعیه

Collapse
No announcement yet.

blinky led

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    blinky led

    من یک برنامه نوشتم اما هدر فایل رو lpc23xx میزارم error نمیده اما lpc17xx میزارم error میده

    #include <lpc17xx.h>
    void wait (void)
    {
    long int i;
    for(i=0;i<4000000;i++);
    }
    int main (void)
    {
    FIO0DIR=1;
    FIO0SET=1;
    wait();
    FIO0CLR=1;
    wait();
    }
    یکی از error ها هم اینه


    test2.c(9): error: #20: identifier "FIO0DIR" is undefined

    #2
    پاسخ : blinky led

    سلام دوست عزیز
    برای lpc17xx
    باید دستوراتو به شکل pointer to structure
    بنویسی
    اگه فایل lpc177xx.h
    رو با keil باز کنی خط 182 به بعد ببینی میبینی از union و struct استفاده شده و برای
    دسترسی به داخلشون از دستور LPC_GPIO استفاده می کنی و بعد شماره پورت رو می نویسی
    یعنی
    LPC_GPIO1
    وبعدش به رجیستر به این شکل دسترسی پیدا می کنی
    LPC_GPIO1->FIODIR
    همینو باید برای FIOCLR و FIOSET هم انجام بدی
    بعد از FIODIR اگر عددی نذاری کل پورت رو در نظر می گیره و اگر عدد بذاری میتونی 8 تا بیتی که با رجیسترش می خواهی کار کنی انتخاب کنی
    کلیه تجهیزاتش همین طوری برنامه نویسی می شوند
    فقط متغیر اولش فرق می کنه
    مثال:
    LPC_GPIO1->FIODIR |= 1 << 29
    LPC_TIM0->TCR |= 1 << 0
    LPC_GPIO1->FIOCLR2

    دیدگاه


      #3
      پاسخ : blinky led

      سلام
      منبع ای برای دستورات pointer to structure هست
      چطور میشه Sample هایی آسان برای LPC1768 گیر آورد
      sample ها cd ی کم سخت هستند

      دیدگاه


        #4
        پاسخ : blinky led


        سلام
        من تو این برنامه یک سری دستورات رو نمیدونم چیه جلوش نوشتم این یعنی چی
        #include "lpc17xx.h"
        #include "type.h" این دستور یعنی چی

        int main (void)
        {
        uint32_t i, j; این دستور یعنی چی

        SystemInit(); این دستور یعنی چی

        //LED = P2[0..7]
        LPC_PINCON->PINSEL4 &= ~(0xFFFF); // Reset P2[0..7] = GPIO
        LPC_GPIO2->FIODIR |= 0xFF; // P2[0..7] = Outputs
        LPC_GPIO2->FIOCLR = 0xFF; // Turn-OFF all LED

        //Loop LED Test
        while(1)
        {
        for(i = 0; i < 8; i++)
        {
        LPC_GPIO2->FIOSET = 1 << i;
        for(j = 1000000; j > 0; j--);
        }
        LPC_GPIO2->FIOCLR = 0x000000FF;
        for(j = 1000000; j > 0; j--);
        }
        }

        دیدگاه


          #5
          پاسخ : blinky led

          نوشته اصلی توسط ieee7
          سلام
          منبع ای برای دستورات pointer to structure هست
          چطور میشه Sample هایی آسان برای LPC1768 گیر آورد
          sample ها cd ی کم سخت هستند
          سلام
          دو تا سایت زیر تا حدودی دستورات LPC1768
          توضیح می دادند البته یه مدت که پدیت نشدند
          ولی باز هم مفیدند
          http://gvworks.blogspot.com/
          http://msys-mv.blogspot.com/
          ولی blogspot تو ایران قابل دسترس نیست
          من sample های خود nxp دیدم ولی برای cd نه
          برای nxp رو از اینجا دانلود کنید و لینک اول فکر کنم برای keil باشه
          http://ics.nxp.com/support/software/code.bundle.lpc17xx.keil/
          برای pointer to structure منبع خاصی نمی شناسم
          فقط یه ویدیو از شرکت vtc برای آموزش زبون c هستش
          اون قسمت مربوطش رو برات میزارم فقط زبونش انگلیسی هستش
          و هیچ ربطی به arm نداره و در مورد برنامه نویسی تحت ویندوز در رابطه با
          pointer to structure هستش
          http://ifile.it/ncmpl09

          دیدگاه


            #6
            پاسخ : blinky led

            نوشته اصلی توسط ieee7
            سلام
            من تو این برنامه یک سری دستورات رو نمیدونم چیه جلوش نوشتم این یعنی چی
            #include "lpc17xx.h"
            #include "type.h" این دستور یعنی چی

            int main (void)
            {
            uint32_t i, j; این دستور یعنی چی

            SystemInit(); این دستور یعنی چی

            //LED = P2[0..7]
            LPC_PINCON->PINSEL4 &= ~(0xFFFF); // Reset P2[0..7] = GPIO
            LPC_GPIO2->FIODIR |= 0xFF; // P2[0..7] = Outputs
            LPC_GPIO2->FIOCLR = 0xFF; // Turn-OFF all LED

            //Loop LED Test
            while(1)
            {
            for(i = 0; i < 8; i++)
            {
            LPC_GPIO2->FIOSET = 1 << i;
            for(j = 1000000; j > 0; j--);
            }
            LPC_GPIO2->FIOCLR = 0x000000FF;
            for(j = 1000000; j > 0; j--);
            }
            }
            سلام
            type.h
            نمی دونم کارش چی هستش ولی تو توضیحاتش نوشته
            Type definition Header file for NXP LPC17xx Family

            uint32_t توی فایل stdint.h تعریف شده و همون int هستش

            SystemInit
            این تابع توی فایل system_lpc17xx.c تعریف شده
            خط 413 به بعد و برای راه اندازی سیستم میکروکنترلر هستش

            دیدگاه


              #7
              پاسخ : blinky led

              توی این cd یک برنانه هست به اسم GPIO
              یک سوال برام وجود داره اونم اینکه چرا از GPIO0 هم استفاده کردند ولی تونقشه led به پورت 2 هست

              __INLINE static void LED_Config(void) {

              LPC_GPIO2->FIODIR = 0x000000ff; /* LEDs PORT2 are Output */
              LPC_GPIO0->FIODIR = 0x00200000;
              LPC_GPIO0->FIOPIN |= 0x00200000;
              }

              دیدگاه


                #8
                پاسخ : blinky led

                توی CD یک مثال برای GPIO هست
                اما موقعی که من شماتیک برد را دیدم فقط P2.0تا P2.7 به LED وصل هستند ولی توی برنامه P0 هم پیکر بندی کردن

                LPC_GPIO0->FIODIR = 0x00200000
                LPC_GPIO0->FIOPIN |= 0x00200000
                چراااااا؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

                دیدگاه


                  #9
                  پاسخ : blinky led

                  نوشته اصلی توسط ieee7
                  سلام
                  منبع ای برای دستورات pointer to structure هست
                  چطور میشه Sample هایی آسان برای LPC1768 گیر آورد
                  sample ها cd ی کم سخت هستند
                  سلام

                  اگه همون فایل LPC17xx.h رو باز کنی دقیقا از خط 182 یه توضیحاتی داده به صورت زیر :
                  /*------------- General Purpose Input/Output (GPIO) --------------------------*/
                  یا در خط 269 داریم :
                  /*------------- Timer (TIM) --------------------------------------------------*/
                  این عبارتی که در وسط این توضیحات اومده همون منبع برای دستورات pointer to structure هست که البته بعد از اونها باید شماره هم بزنی یعنی :
                  LPC_GPIO2->
                  یا برای تایمرها(مثلا تایمر صفر):
                  LPC_TIOM0->
                  با توجه به این که بعد از علامت > رجیستر مورد نظرت رو بنویس

                  با تشکر از ali.reza عزیز به خاطر راهنمایی شون. :nice:
                  انسان شکست نمی خورد بلکه ناامید می شود

                  دیدگاه


                    #10
                    پاسخ : blinky led

                    نوشته اصلی توسط میلاد فزونی
                    سلام

                    اگه همون فایل LPC17xx.h رو باز کنی دقیقا از خط 182 یه توضیحاتی داده به صورت زیر :
                    /*------------- General Purpose Input/Output (GPIO) --------------------------*/
                    یا در خط 269 داریم :
                    /*------------- Timer (TIM) --------------------------------------------------*/
                    این عبارتی که در وسط این توضیحات اومده همون منبع برای دستورات pointer to structure هست که البته بعد از اونها باید شماره هم بزنی یعنی :
                    LPC_GPIO2->
                    یا برای تایمرها(مثلا تایمر صفر):
                    LPC_TIOM0->
                    با توجه به این که بعد از علامت > رجیستر مورد نظرت رو بنویس

                    با تشکر از ali.reza عزیز به خاطر راهنمایی شون. :nice:
                    سلام دوستان
                    آقا ما یه مدتی از فضای ARM دور بودیم اما حالا اومدم کار کنم دیدم دقیقا همون مشکلی که دوستمون تو پست اول دارن رو دارم.
                    تو سایت سرچ کردم به این تایپیک رسیدم .

                    بعد دیدم آخرش خودم گفتم که چیکار کنه مشکلش حل شه. :mrgreen:

                    به موضوع تایپیک بی ربطه ولی :
                    تو دو سال چه اتفاقاتی که واسه آدم می افته و آدم نمی تونه حتی فکرشو بکنه !!!!!!!!!!!!!!!!!!!!!!!!!
                    انسان شکست نمی خورد بلکه ناامید می شود

                    دیدگاه

                    لطفا صبر کنید...
                    X