NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 4254 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
صفحه 1 از 2 12 آخرینآخرین
نمایش نتایج: از 1 به 20 از 32

موضوع: برنامه نویسی کرتکس ها بدون توابع cmsis

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

    Thumbs up برنامه نویسی کرتکس ها بدون توابع cmsis

    سلام.

    اگر بخواهیم میکروهای cortex m3 رو بدون استفاده از این توابع اماده ی CMSIS برنامه بنویسیم چطوری هست؟ در واقع یه جورایی مستقیم با رجیستر ها سر و کار داشته باشیم.
    یاد گیری و به خاطر سپردن این این همه توابع سخت تر از کارکردن با رجیسترها به طور مستقیم تر هست. ( اگر سرعت اجرای برنامه رو صرف نظر کنیم)

    یعنی ودر واقع دنبال یه رفرنسی، منبعی هستم. چون مثل خود میکروهای سری 2000 در کیل دیگه دیگه نمیشه مستقیما اسم رجیستر رو نوشت و برابر مقدار خاص قرار داد و برای مثال برای قسمت GPIO داریم همچین چیزی:
    LPC_GPIO0->FIOPIN;
    یعنی این اسم LPC_GPIO0 رو برای سایر قسمت ها چطور سریعا میشه یافت.

    منوالی، رفرنسی برای این موارد وجود نداره یا مستقیما بشه از منوال خود میکرو خوند.

    البته من تجربه ام توی 1768 خیلی کمه شاید خیلی موارد رو جواب سوالم باشه هنوز توی خود منوال هم ندیدم. ممنون میشم راهنمایی کنید.


    ما در انتظار رویت خورشیدیم ...

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

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


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

  4. #2
    کاربر فعال
    تاریخ عضویت
    Jul 2009
    نام
    مجید بهرامیان
    نوشته ها
    108
    تشکر
    137
    تشکر شده 99 بار در 47 پست

    پیش فرض

    توی لینک زیر برای هر بخش مثالهایی زده شده و لایبرری هایی قرار داده شده بدون استفاده از cmsis
    ( به صورت اختصاصی برای mcb1700 مثال ها زده شده )
    http://ics.nxp.com/support/documents...c17xx.keil.zip

    موفق باشید

  5. کاربران : 3 تشکر کرده اند از شما ma-bah برای ارسال این پست سودمند:


  6. #3
    مدیر باز نشسته shayanmelody آواتار ها
    تاریخ عضویت
    Jan 2011
    نام
    شایان نیکزاد
    نوشته ها
    576
    تشکر
    283
    تشکر شده 1,038 بار در 473 پست

    پیش فرض

    سلام
    تو هدر اصلی میکرو که اول برنامه ادد میکنید تمام رجیستر ها قرار داره.فقط برای نحوه مقدار دهی یک رجیستر قسمت مربوطه تو یوزر منوال رو ببینید



    بعد از چند وقت برگشتم



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


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

    پیش فرض

    نقل قول نوشته اصلی توسط shayanmelody نمایش پست ها
    سلام
    تو هدر اصلی میکرو که اول برنامه ادد میکنید تمام رجیستر ها قرار داره.فقط برای نحوه مقدار دهی یک رجیستر قسمت مربوطه تو یوزر منوال رو ببینید
    خوب منم منظورم همین هست که دقیقا به اسم رجیستر نیست که بخواهیم مستقیم از یوزرمنوال اسمش رو استخراج کنیم! باید یا برای هر بخش برم توی هدر فایل بگردم ببینم مثلا برای رجیستر فلان بخش adc باید چه نمادی رو بکار ببرم در برنامه! نمونش هم در همین پست اول نوشتم.

    اگه اشتباه می کنم ممنون میشم یکی گوشزد کنه
    ما در انتظار رویت خورشیدیم ...

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

  9. #5
    مدیر باز نشسته alireza9900 آواتار ها
    تاریخ عضویت
    Jun 2011
    نام
    علیرضا اینانلو
    نوشته ها
    379
    تشکر
    285
    تشکر شده 792 بار در 246 پست

    پیش فرض

    سلام
    من یه توضیحاتی اضافه می کنم به توضیحات دوستان:
    خب اول یه قسمت از فایل مثلا هدر 1768 رو می ذارم(LPC17xx.h)
    کد:
    /******************************************************************************/
    /*                         Peripheral declaration                             */
    /******************************************************************************/
    #define LPC_SC                ((LPC_SC_TypeDef        *) LPC_SC_BASE       )
    #define LPC_GPIO0             ((LPC_GPIO_TypeDef      *) LPC_GPIO0_BASE    )
    #define LPC_GPIO1             ((LPC_GPIO_TypeDef      *) LPC_GPIO1_BASE    )
    #define LPC_GPIO2             ((LPC_GPIO_TypeDef      *) LPC_GPIO2_BASE    )
    #define LPC_GPIO3             ((LPC_GPIO_TypeDef      *) LPC_GPIO3_BASE    )
    #define LPC_GPIO4             ((LPC_GPIO_TypeDef      *) LPC_GPIO4_BASE    )
    #define LPC_WDT               ((LPC_WDT_TypeDef       *) LPC_WDT_BASE      )
    #define LPC_TIM0              ((LPC_TIM_TypeDef       *) LPC_TIM0_BASE     )
    #define LPC_TIM1              ((LPC_TIM_TypeDef       *) LPC_TIM1_BASE     )
    #define LPC_TIM2              ((LPC_TIM_TypeDef       *) LPC_TIM2_BASE     )
    #define LPC_TIM3              ((LPC_TIM_TypeDef       *) LPC_TIM3_BASE     )
    #define LPC_RIT               ((LPC_RIT_TypeDef       *) LPC_RIT_BASE      )
    #define LPC_UART0             ((LPC_UART_TypeDef      *) LPC_UART0_BASE    )
    #define LPC_UART1             ((LPC_UART1_TypeDef     *) LPC_UART1_BASE    )
    #define LPC_UART2             ((LPC_UART_TypeDef      *) LPC_UART2_BASE    )
    #define LPC_UART3             ((LPC_UART_TypeDef      *) LPC_UART3_BASE    )
    #define LPC_PWM1              ((LPC_PWM_TypeDef       *) LPC_PWM1_BASE     )
    #define LPC_I2C0              ((LPC_I2C_TypeDef       *) LPC_I2C0_BASE     )
    #define LPC_I2C1              ((LPC_I2C_TypeDef       *) LPC_I2C1_BASE     )
    #define LPC_I2C2              ((LPC_I2C_TypeDef       *) LPC_I2C2_BASE     )
    #define LPC_I2S               ((LPC_I2S_TypeDef       *) LPC_I2S_BASE      )
    #define LPC_SPI               ((LPC_SPI_TypeDef       *) LPC_SPI_BASE      )


    اولین نکته اینکه کورتکس ها چون پیاده سازی رابط های برنامه نویسیشون بر پایه cmsis هست همشون از یه استاندارد پیروی می کنن. (مثلا الان توضیحاتی در مورد LPC می دم رو در ادامه یه بخش هایی از stm هارو هم می ذارم و می بینید که ساختار کار یکیه)
    خب اینجا مثلا داریم LPC_GPIO0 که دیفاین شده به جای یه عبارت دیگه:
    کد:
    ((LPC_GPIO_TypeDef      *) LPC_GPIO0_BASE    )
    حالا اگه توی همون فایل به محل تعریف LPC_GPIO_TypeDef بریم داریم:
    کد:
    /*------------- General Purpose Input/Output (GPIO) --------------------------*/
    /** @brief General Purpose Input/Output (GPIO) register structure definition */
    typedef struct
    {
      union {
        __IO uint32_t FIODIR;
        struct {
          __IO uint16_t FIODIRL;
          __IO uint16_t FIODIRH;
        };
        struct {
          __IO uint8_t  FIODIR0;
          __IO uint8_t  FIODIR1;
          __IO uint8_t  FIODIR2;
          __IO uint8_t  FIODIR3;
        };
      };
      uint32_t RESERVED0[3];
      union {
        __IO uint32_t FIOMASK;
        struct {
          __IO uint16_t FIOMASKL;
          __IO uint16_t FIOMASKH;
        };
        struct {
          __IO uint8_t  FIOMASK0;
          __IO uint8_t  FIOMASK1;
          __IO uint8_t  FIOMASK2;
          __IO uint8_t  FIOMASK3;
        };
      };
      union {
        __IO uint32_t FIOPIN;
        struct {
          __IO uint16_t FIOPINL;
          __IO uint16_t FIOPINH;
        };
        struct {
          __IO uint8_t  FIOPIN0;
          __IO uint8_t  FIOPIN1;
          __IO uint8_t  FIOPIN2;
          __IO uint8_t  FIOPIN3;
        };
      };
      union {
        __IO uint32_t FIOSET;
        struct {
          __IO uint16_t FIOSETL;
          __IO uint16_t FIOSETH;
        };
        struct {
          __IO uint8_t  FIOSET0;
          __IO uint8_t  FIOSET1;
          __IO uint8_t  FIOSET2;
          __IO uint8_t  FIOSET3;
        };
      };
      union {
        __O  uint32_t FIOCLR;
        struct {
          __O  uint16_t FIOCLRL;
          __O  uint16_t FIOCLRH;
        };
        struct {
          __O  uint8_t  FIOCLR0;
          __O  uint8_t  FIOCLR1;
          __O  uint8_t  FIOCLR2;
          __O  uint8_t  FIOCLR3;
        };
      };
    } LPC_GPIO_TypeDef;


    خب همون طور که پیداست این استراکچر شامل تمام رجیستر هایی هست که توی یوزر منوال گفته شده.
    و برای دسترسی به اونا هم که مثلا می زنیم GPIO0->FIOPIN . همین طور توی استراکچر اومده بعضی از رجیستر هارو از اونجایی که 4 بایت هستن به 2 بایت ریزتر هم خورد کرده مثلا FIOPINH و FIOPINL
    پس عملا فقط نیازه ببینیم توی قسمت Peripheral declaration کد هدر هر میکرو چه چیزایی تعریف شده و با PreiphName->RegisterName به رجیستر بخش مورد نظر دسترسی داشته باشیم.

    حالا یه بخشی از کد stm32f4xx رو هم می ذارم:
    کد:
    #define GPIOA               ((GPIO_TypeDef *) GPIOA_BASE)
    #define GPIOB               ((GPIO_TypeDef *) GPIOB_BASE)
    #define GPIOC               ((GPIO_TypeDef *) GPIOC_BASE)
    #define GPIOD               ((GPIO_TypeDef *) GPIOD_BASE)
    #define GPIOE               ((GPIO_TypeDef *) GPIOE_BASE)
    #define GPIOF               ((GPIO_TypeDef *) GPIOF_BASE)


    و کد مربوط به استراکت GPIO_TypeDef :
    کد:
    typedef struct
    {
      __IO uint32_t MODER;    /*!< GPIO port mode register,               Address offset: 0x00      */
      __IO uint32_t OTYPER;   /*!< GPIO port output type register,        Address offset: 0x04      */
      __IO uint32_t OSPEEDR;  /*!< GPIO port output speed register,       Address offset: 0x08      */
      __IO uint32_t PUPDR;    /*!< GPIO port pull-up/pull-down register,  Address offset: 0x0C      */
      __IO uint32_t IDR;      /*!< GPIO port input data register,         Address offset: 0x10      */
      __IO uint32_t ODR;      /*!< GPIO port output data register,        Address offset: 0x14      */
      __IO uint16_t BSRRL;    /*!< GPIO port bit set/reset low register,  Address offset: 0x18      */
      __IO uint16_t BSRRH;    /*!< GPIO port bit set/reset high register, Address offset: 0x1A      */
      __IO uint32_t LCKR;     /*!< GPIO port configuration lock register, Address offset: 0x1C      */
      __IO uint32_t AFR[2];   /*!< GPIO alternate function registers,     Address offset: 0x24-0x28 */
    } GPIO_TypeDef;


    بازم ساختار به همون صورت هست و اینجا هم با ترکیب PriphName->RegisterName به رجیستر ها دسترسی داریم مثلا GPIOA->ODR

    حالا اگه ide قابلیت code assistant یا همون code completion داشته باشه که دیگه کار خیلی راحت و بهتر میشه.
    ویرایش توسط alireza9900 : 18-05-2012 در ساعت 11:36

  10. کاربران : 12 تشکر کرده اند از شما alireza9900 برای ارسال این پست سودمند:


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

    پیش فرض

    دستت درد نکنه علی رضا، بسیار عالی و شیوا گفتی و ساده حل کردی.

    یه سوال: الان در مورد خود رجیستری مثل FIOSET0، خود همین رجیستر ادرس در کجا تعریف شده؟ مثلا در مورد lpc2148 توی هدر فایل ادرس هر رجیستر این شکلی تعریف شده بود
    [PHP]#define IO0DIR (*((volatile unsigned long *) 0xE0028008))[/PHP]


    در مورد این حرفت:
    حالا اگه ide قابلیت code assistant یا همون code completion داشته باشه که دیگه کار خیلی راحت و بهتر میشه.
    برای کامپایلر های کرتکس همچین موردی هست؟ من توی ویژوال استادیو وقتی کار می کردم همچین چیزی دیده بودم توی کیل نسخه جدید که ادیتورش رو بهتر کرده بود نبود.
    ویرایش توسط Aghaeifar : 18-05-2012 در ساعت 11:47
    ما در انتظار رویت خورشیدیم ...

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

  12. #7
    مدیر باز نشسته alireza9900 آواتار ها
    تاریخ عضویت
    Jun 2011
    نام
    علیرضا اینانلو
    نوشته ها
    379
    تشکر
    285
    تشکر شده 792 بار در 246 پست

    پیش فرض

    نقل قول نوشته اصلی توسط ali.aghayifar نمایش پست ها
    دستت درد نکنه علی رضا، بسیار عالی و شیوا گفتی و ساده حل کردی.
    در مورد این حرفت:


    برای کامپایلر های کرتکس همچین موردی هست؟ من توی ویژوال استادیو وقتی کار می کردم همچین چیزی دیده بودم توی کیل نسخه جدید که ادیتورش رو بهتر کرده بود نبود.
    خواهش می کنم علی جون.
    آره کیل هنوز نداره این قابلیت رو ولی امیدوارم هرچه زودتر بذاره. eclipse این قابلیت رو داره. البته اکلیپس فقط ادیتوره و باید یه کامپایلر بهش وصل کرد(مثلا gcc یا حتی خود کامپایلر کیل هم میشه)

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


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

    پیش فرض

    نقل قول نوشته اصلی توسط alireza9900 نمایش پست ها
    خواهش می کنم علی جون.
    آره کیل هنوز نداره این قابلیت رو ولی امیدوارم هرچه زودتر بذاره. eclipse این قابلیت رو داره. البته اکلیپس فقط ادیتوره و باید یه کامپایلر بهش وصل کرد(مثلا gcc یا حتی خود کامپایلر کیل هم میشه)
    من سوال قبلی ام رو وقتی تو در حال نوشتن این پست بودی ویرایش کردم، ممنون میشم اگه اطلاعی در موردش داری راهنمایی کنی

    در کیل نسخه جدید یعنی 4.5 ظاهرن ادیتورش بر مبنای Eclipseهست از اونجایی که در فولدر نصب کیل یه فولدر به اسم Eclipse وجود داره که پلاگین های مربوطه در اون قرار داره- البته اگه اشتباه نکنم. شاید بشه این ها رو بهتر از این به هم integrate کرد.

    این تاپیک رو در سایت خود کیل در ارتباط با همین مبحث است
    http://www.keil.com/forum/15179/
    ویرایش توسط Aghaeifar : 18-05-2012 در ساعت 12:14
    ما در انتظار رویت خورشیدیم ...

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

  15. #9
    مدیر باز نشسته alireza9900 آواتار ها
    تاریخ عضویت
    Jun 2011
    نام
    علیرضا اینانلو
    نوشته ها
    379
    تشکر
    285
    تشکر شده 792 بار در 246 پست

    پیش فرض

    یه سوال: الان در مورد خود رجیستری مثل FIOSET0، خود همین رجیستر ادرس در کجا تعریف شده؟ مثلا در مورد lpc2148 توی هدر فایل ادرس هر رجیستر این شکلی تعریف شده بود

    #define IO0DIR (*((volatile unsigned long *) 0xE0028008))
    خب توی غیر کرتکس ها که ممکنه هر میکرو و هر شرکت یه چیزی زده باشه. ولی توی کرتکس ها که استاندارد هست توی چند مرحله هر رجیستر تعریف میشه. مثلا برای GPIO0 داریم:
    کد:
    #define LPC_GPIO0             ((LPC_GPIO_TypeDef      *) LPC_GPIO0_BASE    )
    خب اینجا اومده LPC_GPIO0_BASE رو به LPC_GPIO_TypeDef کست(cast) کرده. حالا داریم:
    کد:
    #define LPC_GPIO0_BASE        (LPC_GPIO_BASE + 0x00000)
    خب از اینجا اون روند چند مرحله ای شروع میشه. اینجا اومده LPC_GPIO0_BASE رو تعریف کرده که آدرسش هست 0x00000 به اضافه LPC_GPIO_BASE.

    کد:
    #define LPC_GPIO_BASE         (0x2009C000UL)
    خب حالا اینجا در واقع شروع آدرس مربوط به GPIO هاست.
    پس اگه مراحل رو به عقب بریم برای GPIO0 آدرسش میشه: 0x2009C000UL + 0x00000
    حالا می ریم سراغ رجیستر ها. رجیستر ها توی یه استراکت تعریف شده بودن دیگه. خب الان طبق کد زیر استراکت GPIO0 آدرس شروعش میشه 0x2009C000UL + 0x00000. حالا توی استراکت اومده به ترتیب رجیستر هارو تعریف کرده. مثلا:
    کد:
    __IO uint32_t FIODIR;
    بعدش هم مثلا هست:
    کد:
    __IO uint32_t FIOMASK;
    از اونجایی که هر رجیستر 4 بایته پس در واقع الان FIODIR میشه از 0x2009C000UL تا 0x2009C080UL + 0x
    حالا باز دوباره FIODIR0 ~ FIODIR4 رو تعریف کرده هر کدوم از نوع uint8_t هست که میشه یک بایت. حالا اصل مطلب توی اون union هست. اگه اینا با هم union نمی شدن هر کدوم از FIODIRL و FIODIR0 و... برای خودشون حافظه اشغال می کردن و کلا آدرس رجیستر از محدودش خارج می شد. ولی دستور union به کامپایلر می گه که آقا اینایی که اینجا تعریف شدن همه یه آدرس دارن و همه با هم هستن و فقط اسماشون فرق داره.

    یه نکته دیگه هم که الان یوزر منوال رو ببینی ترتیبی که برای رجیستر ها هست با ترتیب این کد یکیه. چون کد خط به خط اجرا میشه. اولین رجیستر که FIODIR باشه اول از آدرس 0x2009C000UL (که مربوط به GPIO0 هست) 4 بایت رو می گیره. بعد FIOMASK میاد 4 بایت بعدی رو می گیری و الا آخر. پس ترتیب تعریف اینا هم توی استراکت GPIO_TypeDef مهمه و اگه جاشون عوض آدرساشون هم عوض شده پس مثلا اگه جای FIODIR و FIOMASK رو عوض کنی وقتی توی LPC_GPIO0->FIODIR می نویسی در واقع توی آدرس FIOMASK می نویسه.
    ویرایش توسط alireza9900 : 18-05-2012 در ساعت 12:23

  16. کاربران : 8 تشکر کرده اند از شما alireza9900 برای ارسال این پست سودمند:


  17. #10
    مدیر باز نشسته alireza9900 آواتار ها
    تاریخ عضویت
    Jun 2011
    نام
    علیرضا اینانلو
    نوشته ها
    379
    تشکر
    285
    تشکر شده 792 بار در 246 پست

    پیش فرض

    در کیل نسخه جدید یعنی 4.5 ظاهرن ادیتورش بر مبنای eclipseهست از اونجایی که در فولدر نصب کیل یه فولدر به اسم eclipse وجود داره که پلاگین های مربوطه در اون قرار داره- البته اگه اشتباه نکنم. شاید بشه این ها رو بهتر از این به هم integrate کرد.
    آره همون طور که گفتم میشه کیل رو به اکلیپس وصل کرد(حتی بدون این پلاگینی که توی این نسخه جدید داده). و البته این پلاگین اکلیپسی که داده رسما نکته خاصی نداره و زیاد به درد نمی خوره. من خودم یکی دو باز خواستم باهش کار کنم ولی هر کار کردم نتونستم باهاش کنار بیام!
    ویرایش توسط alireza9900 : 18-05-2012 در ساعت 13:28

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


  19. #11
    مدیر باز نشسته alireza9900 آواتار ها
    تاریخ عضویت
    Jun 2011
    نام
    علیرضا اینانلو
    نوشته ها
    379
    تشکر
    285
    تشکر شده 792 بار در 246 پست

    پیش فرض

    الان من خودم فعلا از این روش استفاده می کنم:
    اول یه پروژه کیل درست می کنم و یه سری فایل ها و تنظیمات اولیه رو توی خود کیل انجام می دم.
    بعد یه پروژه c توی اکلیپس درست می کنم و بعد تمام فایل پروژه کیل رو توی فولدر پروژه اکلیپس کپی می کنم.
    حالا اگه توی اکلیپس f5 بزنیم تمام فایل به workspace پروژه اضافه شده. کار بعدی اینه که include directories رو برای پروژه اکلیپس تعریف کنیم که میشه فولدر:

    کد:
    C:\Keil\ARM\RV31\INC
    و هر دایرکتوری دیگه ای که ازش include میشه توی پروژه.حالا خیلی راحت میشه توی اکلیپس کد زد و همزمان کیل هم باز باشه و باهاش بیلد و پروگرم و دیباگ کرد.

    الان یه مدل پروژه که خودم الان باهاش روی stm32f407 کار می کنم رو ضمیمه کردم.
    برای پروژه کیل که فایل stm32f4xx.uvproj مشخصه.
    برای باز کردن پروژه با اکلیپس هم باید از طریق عمل کرد:
    کد:
    File->Import->General->Existing Projects Into Workspace
    و فولدر پروژه رو وارد کنید.
    حالا توی اکلیپس میشه با قابلیت code completion کد رو ویرایش کرد و بقیه کار ها هم توی کیل انجام میشه.
    خیلی هم بهتر از پلاگین خوده کیله
    فايل هاي پيوست شده فايل هاي پيوست شده
    ویرایش توسط alireza9900 : 18-05-2012 در ساعت 14:29

  20. کاربران : 5 تشکر کرده اند از شما alireza9900 برای ارسال این پست سودمند:


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

    پیش فرض

    توی خود اکلیپس نمیشه کامپایل کرد؟
    چون اکلیپس قابلیت اتوکامپایل داره و همینطور در هین کد زدن پیوسته کامپایل می تونه کنه و خطاها رو نشون بده.
    من هم تست می کنم.

    ممنون از راهنماییت.
    ما در انتظار رویت خورشیدیم ...

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

  22. #13
    مدیر باز نشسته alireza9900 آواتار ها
    تاریخ عضویت
    Jun 2011
    نام
    علیرضا اینانلو
    نوشته ها
    379
    تشکر
    285
    تشکر شده 792 بار در 246 پست

    پیش فرض

    نقل قول نوشته اصلی توسط ali.aghayifar نمایش پست ها
    توی خود اکلیپس نمیشه کامپایل کرد؟
    چون اکلیپس قابلیت اتوکامپایل داره و همینطور در هین کد زدن پیوسته کامپایل می تونه کنه و خطاها رو نشون بده.
    من هم تست می کنم.

    ممنون از راهنماییت.
    چرا میشه ولی دردسرش خیلی زیاده و اصلا نمی صرفه.
    من یه تاپیک جدا زدم اونجا ریزتر در مورد این روش توضیح دادم و آخرش در مورد سوالت هم یه اشاره ای کردم.
    Keil و قابلیت Code Completion - ایـــــــــران میـــــــکرو ™

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


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

    پیش فرض

    بياييم تك تك نامه بزنيم به كيل بگيم اين قابليت رو به برنامه اضافه كنه كه كد رو پيشنهاد بده و مثل avr studio - eclipse - mikro c و تمام برنامه هاي درست حسابي رفتار كنه

    MIKROC PRO ARM رو كسي از دوستان تجربه داره .. ؟

  25. #15
    کاربر فعال
    تاریخ عضویت
    Mar 2010
    نوشته ها
    236
    تشکر
    101
    تشکر شده 246 بار در 163 پست

    پیش فرض

    سلام
    به دوستان پیشنهاد میکنم برای اینکه از شر این همه دردسر برای استفاده از ide های مختلف و همچنین
    برای ارم که struct زیادی داخلش هست که همچین کاری کنند ( من خودم با eclipse و کیل و چند تا ide دیگه هم کار کردم ولی تنها روشی که الان استفاده میکنم همین هست چون یه روز فقط به خاطر یه شرط ساده داخل کدویژن چیزی حدود یک ساعت یا بیشتر داشتم دنبال خطا داخل کد میگشتم ) بگذریم :
    پیشنهاد من اینه که نسخه visual studio 2010 یا 2008 رودانلود کنید و یه نسخه از visual assist رو هم روش نصب کنید .بعد دایرکتوری های کدویژن ، پیک ، کیل و .. رو بهش اضافه کنید و از برنامه نویسی لذت ببرید.اینطوری کد مربوطه رو داخل ویژوال استودیو مینویسید و ctrl+s ذخیره میکنید و بعدش کیل رو باز میکنید و کامپایل . همین.
    تصاوير کوچک فايل پيوست تصاوير کوچک فايل پيوست برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: code.jpg
مشاهده: 60
حجم: 134.3 کیلو بایت  

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


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

    پیش فرض

    اين راهكارها وجود داره ولي خب همه ميدونيم كه دور زدن كار هست

    من موندم اين همه شركت توي دنيا با چه محيطهايي كار ميكنن

    من هم با qt يا eclips يا هر محيط برنامه نويسي حرفه اي ديگه استفاده ميكنم وقتي لازم باشه

    اما بايد راه اصلي رو بفهمم چيه اخر

  28. #17
    مدیر باز نشسته behnam6500 آواتار ها
    تاریخ عضویت
    Jan 2009
    نوشته ها
    801
    تشکر
    311
    تشکر شده 899 بار در 390 پست

    پیش فرض

    نقل قول نوشته اصلی توسط esi_52000 نمایش پست ها
    دوستان چرا شما ها اینقده گیج میزنین آخه.cortex بدون cmsis اشتباهه.کامژایلر هم بدون coide اشتباهه.حالا هی من بگم شما بگید نه.البته ببخشید با دمپایی اومدم تو بحثتونا.ولی از من پیرمرد این نصیحت رو بپزیرین
    پیرمرد! ادب هم رعایت کنی بد نیست!

    هر انجمن اینترنتی، برای بحث و تبادل نظر پیرامون موضوع یا موضوعاتی بنا شده است.

    و در هر انجمنی، همه اشخاص با هر سطح معلومات، ایده، خلاقیت و... به فعالیت و بحث میپردازند.

    اینکه مطلبی از نظر شما اشتباه باشه، دلیل بر این نیست که حرمت ها رو نادیده بگیرید و حتا به منزله شوخی، چنین جملاتی رو در یک انجمن به زبان بیارید!
    ویرایش توسط behnam6500 : 03-06-2012 در ساعت 00:41

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

    KHM

  30. #18
    مدیرکل انجمنها
    تاریخ عضویت
    May 2011
    نام
    احسان صفامنش
    نوشته ها
    1,763
    تشکر
    919
    تشکر شده 2,261 بار در 1,056 پست

    پیش فرض

    سلام به همه ی دوستان
    یک سوال میپرسم و جوابش با خودتون.
    شما همه از کدهای ساده در codevision راضی هستین؟

    اگه هستین: که فقط یک بار وقت بزارین و یک هدر به اسم میکرویی که کار میکنین به سادگی دستورات کدویژن بسازین و تا آخر عمر خودتون رو راحت کنین.
    اگه نیستین که برید و از همون دستورات طولانی خود کیل استفاده کنید.

    ببینید مثلا چه دلیلی هست که وقتی ما میدونیم داریم از LPC استفاده میکنیم باز هر وقت بخوایم یک رجیستر رو مقدار بدیم از حروف lpc_ استفاده کنیم و اگه دقت کنیم خیلی چیزها در همه ی دستورات تکراری هست و خیلی چیزها هم لازم نیست.
    باید اسم هر رجیستر رو در فایل هدر جدید خودمون یا ساده کرد یا به فرمت شبیه کدویژن تبدیل کرد.

    در کدویژن شما یکبار اسم میکرو رو اینکلود میکنید و از دستور مثلا PORTA در همه ی میکرو ها استفاده میکنید. و دیگه نمینویسید atmega16_porta یا atmega8_porta
    ویرایش توسط esisafa : 03-06-2012 در ساعت 11:07

  31. کاربران : 4 تشکر کرده اند از شما esisafa برای ارسال این پست سودمند:


  32. #19
    تازه وارد
    تاریخ عضویت
    Feb 2012
    نوشته ها
    1
    تشکر
    1
    تشکر شده 0 بار در 0 پست

    پیش فرض

    سلام به مهندسین محترم.من تازه شروع به یادگیری arm کردم و باید اعتراف کنم با خیلی سردرگم بودم تا اینکه با شما آشنا شدم.این آشنایی خیلی برام جالب و البته مفید بوده.از مطالبی که دوستان نوشتن خیلی استفاده کردم.از زحمات همه عزیزان تشکر میکنم.

  33. #20
    کاربر علاقه مند sapiens110 آواتار ها
    تاریخ عضویت
    Jul 2011
    نوشته ها
    32
    تشکر
    22
    تشکر شده 36 بار در 18 پست

    پیش فرض

    نقل قول نوشته اصلی توسط alireza9900 نمایش پست ها
    الان من خودم فعلا از این روش استفاده می کنم:
    اول یه پروژه کیل درست می کنم و یه سری فایل ها و تنظیمات اولیه رو توی خود کیل انجام می دم.
    بعد یه پروژه c توی اکلیپس درست می کنم و بعد تمام فایل پروژه کیل رو توی فولدر پروژه اکلیپس کپی می کنم.
    حالا اگه توی اکلیپس f5 بزنیم تمام فایل به workspace پروژه اضافه شده. کار بعدی اینه که include directories رو برای پروژه اکلیپس تعریف کنیم که میشه فولدر:

    کد:
    C:\Keil\ARM\RV31\INC
    و هر دایرکتوری دیگه ای که ازش include میشه توی پروژه.حالا خیلی راحت میشه توی اکلیپس کد زد و همزمان کیل هم باز باشه و باهاش بیلد و پروگرم و دیباگ کرد.

    الان یه مدل پروژه که خودم الان باهاش روی stm32f407 کار می کنم رو ضمیمه کردم.
    برای پروژه کیل که فایل stm32f4xx.uvproj مشخصه.
    برای باز کردن پروژه با اکلیپس هم باید از طریق عمل کرد:
    کد:
    File->Import->General->Existing Projects Into Workspace
    و فولدر پروژه رو وارد کنید.
    حالا توی اکلیپس میشه با قابلیت code completion کد رو ویرایش کرد و بقیه کار ها هم توی کیل انجام میشه.
    خیلی هم بهتر از پلاگین خوده کیله
    سلام
    من include ها رو هم اضافه کردم به eclipse ولی کد که میزنم هینت نمیده.همه این کارارو کردم.مشکل از کجا می تونه باشه؟؟

صفحه 1 از 2 12 آخرینآخرین

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

  1. [خبر] فیلم آموزش lpc1768 (مقدماتی و متوسط)
    توسط kavir در انجمن LPC series (NXP)
    پاسخ: 521
    آخرين نوشته: 17-12-2018, 02:25
  2. آموزش ساخت پروژه با توابع cmsis
    توسط Doloop در انجمن stm32
    پاسخ: 28
    آخرين نوشته: 19-07-2016, 19:17
  3. Dac در lpc1768(توابع cmsis)
    توسط ramin_kent در انجمن LPC series (NXP)
    پاسخ: 1
    آخرين نوشته: 25-02-2013, 00:27
  4. پاسخ: 7
    آخرين نوشته: 13-11-2012, 01:54
  5. توضیح دستورات cmsis
    توسط esi_52000 در انجمن LPC series (NXP)
    پاسخ: 8
    آخرين نوشته: 27-01-2012, 00:05

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

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