اطلاعیه

Collapse
No announcement yet.

کد نویسی برای رجیسترهای پایه stm32f103x در IAR

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

    کد نویسی برای رجیسترهای پایه stm32f103x در IAR

    سلام.دوستان من میخوام برای نوشتن برنامه واسه میکرو stm و برد اموزشیش که از همین فروشگاه خریدم کد بزنم تو IAR اما نمیخوام از کتابخونه استفاده کنم و میخوام خودم با رجیسترها مستقیم کار کنم.فعلا هدف راه اندازی LED های برده تا نحوه تنظیم رجیسترهای کلاک و I/O و پیکربندیشون رو بفهمیم.اینارو انجام بدیم دیگه بقیه کارها رو رواله.
    تا این جا رو میدونم که نقطه شروع از هدر iostm32f10xxE.h هست و استراکچرهای رجیسترها تو این هدر اومده.حالا سوال اینه چطور از این استراکچرها استفاده کنیم.من که هر کار کردم نشد :angry:
    به طور خلاصه میخوایم به هر رجیستر و هر بیت اون برای خوندن و نوشتن دسترسی پیدا کنیم.
    خواهش میکنم اگه بلدین بگین. :agree:
    من سعی کردم شبیه مال میکرو اتمل که کداش زیاده انجام بدم اما نشد.هر کی بلده بسم الله.
    میخوام از این تاپیک یه اموزش از پایه بزاریم بر مبنای فقط IAR
    رجیسترهارو که راه افتادیم با کتابخونه نویسی و هدر نویسی ادامه میدیم :job:
    خطاب به داعش:
    ای وای اگر پا به حرم بگذاری/یک تکه ز دیوار حرم برداری/شیعه به بین الحرمین حساس است/گفتم که به گوش سگیت بسپاری
    ما از سبوی شاه دین مجنون و مستیم/برگرد تا سربند یا زهرا(س) نبستیم

    #2
    پاسخ : کد نویسی برای رجیسترهای پایه stm32f103x در IAR

    دوستان این کد رو نوشتم اما سر این خط ارور میگیره
    if(__rcc_cr_bits->HSERDY ==0x1)

    به نظرتون چطور میتونم بیت HSERDY رو بخونم و توی HSEON بنویسم؟؟

    کد:
    #include <iostm32f10xxE.h>
    #include <stdio.h>
    #include <stdlib.h>
    
    
    void delay(void)
    {
     int b=0,a=1;
     while(a)
     {
     b++;
     if(b>1000000)
      a=0;
     }
    }
    
    
    void clk_confg(void)
    {
     int a=0;
     while(a!=1)
     {
      if(__rcc_cr_bits->HSERDY ==0x1)
      {
      
       RCC_CR=0x01010080;
       RCC_CFGR=0x06510402;
       RCC_APB2ENR=0x0000001fe;
       a=1;
      }
     }
    }
    
    void io_reg(void)
    {
    GPIOF_CRL=0x77777777;
    GPIOF_CRH=0x77777777;
    }
    
    
    void main()
    {
     clk_confg();
     io_reg();
    while(1)
    {
     GPIOF_ODR=0x0000ffff;
    //delay();
    //GPIOF_ODR=0x00000000;
    }
    }
    خطاب به داعش:
    ای وای اگر پا به حرم بگذاری/یک تکه ز دیوار حرم برداری/شیعه به بین الحرمین حساس است/گفتم که به گوش سگیت بسپاری
    ما از سبوی شاه دین مجنون و مستیم/برگرد تا سربند یا زهرا(س) نبستیم

    دیدگاه


      #3
      پاسخ : کد نویسی برای رجیسترهای پایه stm32f103x در IAR

      سلام
      سمپل در محل خود نصب نرم افزار نداره IAR ؟
      فيلم آموزشي ميکروکنترلر LPC1768
      فيلم آموزشي تکميلي و پيشرفته ميکروکنترلر LPC1768
      فيلم آموزش کاربردی زبان سی در میکروکنترلر ARM
      فیلم آموزش مقدماتی میکروکنترلر LPC1788 به زودی ...

      دیدگاه


        #4
        پاسخ : کد نویسی برای رجیسترهای پایه stm32f103x در IAR

        برای stm32f103zet6 نداره.اگرم باشه تا توابع هست معلوم نی کجا رجیسترارو دست زده :angry:
        خطاب به داعش:
        ای وای اگر پا به حرم بگذاری/یک تکه ز دیوار حرم برداری/شیعه به بین الحرمین حساس است/گفتم که به گوش سگیت بسپاری
        ما از سبوی شاه دین مجنون و مستیم/برگرد تا سربند یا زهرا(س) نبستیم

        دیدگاه


          #5
          پاسخ : کد نویسی برای رجیسترهای پایه stm32f103x در IAR

          آقا یه جوانمرد پیدا نمیشه زکات علمشو بده و به ما بگه چطور اینکارو بکنیم؟؟؟ :cry:
          اصلا یه کار دیگه بکنیم.یکی بگه چطور واسه یه پورت GPIO ساده قسمتای مورد نیازی که تو هدر stm32f10x هست رو تو خودبرنامه اصلی بنویسیم.منظورم نوشتن پوینتر واسه رجیسترهای مورد نیاز! :applause:
          خطاب به داعش:
          ای وای اگر پا به حرم بگذاری/یک تکه ز دیوار حرم برداری/شیعه به بین الحرمین حساس است/گفتم که به گوش سگیت بسپاری
          ما از سبوی شاه دین مجنون و مستیم/برگرد تا سربند یا زهرا(س) نبستیم

          دیدگاه


            #6
            پاسخ : کد نویسی برای رجیسترهای پایه stm32f103x در IAR

            دوستان کد های زیر در فایل هدر اصلی میکروstm32f10xxE.h من اینجا آوردم.سوال اینه که چطور به استراکچر بیتی رجیستر مثلا کلاک به هر عنصرش که همون تک بیت های ما هستن دسترسی پیدا کنیم؟؟چطور بنویسیم مثلا بیت HSEON یک بشه؟؟؟کدش چیه تو برنامه main.c ؟؟؟؟
            سوال دوم اینه که اون کدهای قسمت اخر به چه معناست؟؟
            کد:
            /* Clock control register (RCC_CR) */
            typedef struct {
             __REG32 HSION     : 1;
             __REG32 HSIRDY     : 1;
             __REG32         : 1;
             __REG32 HSI_TRIM    : 5;
             __REG32 HSI_CAL    : 8;
             __REG32 HSEON     : 1;
             __REG32 HSERDY     : 1;
             __REG32 HSEBYP     : 1;
             __REG32 CSSON     : 1;
             __REG32         : 4;
             __REG32 PLLON     : 1;
             __REG32 PLLRDY     : 1;
             __REG32         : 6;
            } __rcc_cr_bits;
            
            /* Clock configuration register (RCC_CFGR) */
            typedef struct {
             __REG32 SW       : 2;
             __REG32 SWS      : 2;
             __REG32 HPRE      : 4;
             __REG32 PPRE1     : 3;
             __REG32 PPRE2     : 3;
             __REG32 ADC_PRE    : 2;
             __REG32 PLLSRC     : 1;
             __REG32 PLLXTPRE    : 1;
             __REG32 PLLMUL     : 4;
             __REG32 USBPRE     : 1;
             __REG32         : 1;
             __REG32 MCO      : 3;
             __REG32         : 5;
            } __rcc_cfgr_bits;
            و این:
            کد:
            ***************************************************************************/
            __IO_REG32_BIT(GPIOF_CRL,     0x40011C00,__READ_WRITE ,__gpio_crl_bits);
            __IO_REG32_BIT(GPIOF_CRH,     0x40011C04,__READ_WRITE ,__gpio_crh_bits);
            __IO_REG32_BIT(GPIOF_IDR,     0x40011C08,__READ    ,__gpio_idr_bits);
            __IO_REG32_BIT(GPIOF_ODR,     0x40011C0C,__READ_WRITE ,__gpio_odr_bits);
            __IO_REG32_BIT(GPIOF_BSRR,    0x40011C10,__WRITE   ,__gpio_bsrr_bits);
            __IO_REG32_BIT(GPIOF_BRR,     0x40011C14,__WRITE   ,__gpio_brr_bits);
            __IO_REG32_BIT(GPIOF_LCKR,    0x40011C18,__READ_WRITE ,__gpio_lckr_bits);
            
            /***************************************************************************
            خطاب به داعش:
            ای وای اگر پا به حرم بگذاری/یک تکه ز دیوار حرم برداری/شیعه به بین الحرمین حساس است/گفتم که به گوش سگیت بسپاری
            ما از سبوی شاه دین مجنون و مستیم/برگرد تا سربند یا زهرا(س) نبستیم

            دیدگاه


              #7
              پاسخ : کد نویسی برای رجیسترهای پایه stm32f103x در IAR

              اقا یعنی هیچکس نمیدونه چطور میشه مستقیما و بدون استاده از فایل و هدر اضافی به رجیسترها دسترسی بیتی داشت؟؟؟!!!! :angry:
              خطاب به داعش:
              ای وای اگر پا به حرم بگذاری/یک تکه ز دیوار حرم برداری/شیعه به بین الحرمین حساس است/گفتم که به گوش سگیت بسپاری
              ما از سبوی شاه دین مجنون و مستیم/برگرد تا سربند یا زهرا(س) نبستیم

              دیدگاه


                #8
                پاسخ : کد نویسی برای رجیسترهای پایه stm32f103x در IAR

                نوشته اصلی توسط yma-313
                اقا یعنی هیچکس نمیدونه چطور میشه مستقیما و بدون استاده از فایل و هدر اضافی به رجیسترها دسترسی بیتی داشت؟؟؟!!!! :angry:
                سلام
                برای استفاده از رجیستر برای برنامه نویسی منبع شما رفرنس منوآل است و سمپل های همراه
                البته در فروم ایران میکرو آقای رضا شریفیان کار با رجیسترها برای GPIO را شرح داده اند که چون مفصله خودتون اونجا مراجعه کنید:
                انجمن->میکرو کنترلر ها و میکرو پروسسور ها ->میکرو کنترلر های 32 بیتیarm)stm32)->شروع آموزش stm32 بر پایه برد سفارشی
                و اینکه می خواهید با IAR باشه حتما خوب رجیسترها ثابته و فرقی نداره ولی اگر با نحوه کار با کامپایلر IAR مورد دارید اول با کیل کارتون را انجام بدهید و تا کار جواب داد و دستتان روی رجیسترها راه افتاد برید با IAR که قلق بیشتری داره
                فيلم آموزشي ميکروکنترلر LPC1768
                فيلم آموزشي تکميلي و پيشرفته ميکروکنترلر LPC1768
                فيلم آموزش کاربردی زبان سی در میکروکنترلر ARM
                فیلم آموزش مقدماتی میکروکنترلر LPC1788 به زودی ...

                دیدگاه


                  #9
                  پاسخ : کد نویسی برای رجیسترهای پایه stm32f103x در IAR

                  سلااام دوستان
                  از قدیم گفتن "جوینده یابنده است"
                  بالاخره بعد تلاش فراوان و کمک نکردن دوستان در باره دسترسی بیتی به رجیسترهای stm32 در IAR رفتم و هدر های مختلف رو زیرو رو کردم تا اینکه فهمیدم در هدر های iostm32f10xE.h و io_macros.h یکسری تعاریف هست که میگه باید برای خواندن و نوشتن یک بیت به این صورت عمل کرد(مثلا برای یک کردن بیت HSEON در رجیستر RCC_CR !):
                  کد:
                  RCC_CR_bit.HSEON=1;
                  در واقع باید نام رجیستر رو با _bit پشت سرش بنویسیم و سپس نقطه و بعد نام بیت مورد نظر
                  این ساختار برای میکروهای دیگه ممکنه فرق کنه که باید به هدرهای خودشون مراجعه بشه :job:
                  در ضمن من تونستم واسه بار اولم ال ای دی هارو روشن خاموش کنم اونم فقط با دسترسی به رجیستر که البته سادست اما خب واسه من کمی سخت بود تا کداشو پیدا کردم :wow:
                  خطاب به داعش:
                  ای وای اگر پا به حرم بگذاری/یک تکه ز دیوار حرم برداری/شیعه به بین الحرمین حساس است/گفتم که به گوش سگیت بسپاری
                  ما از سبوی شاه دین مجنون و مستیم/برگرد تا سربند یا زهرا(س) نبستیم

                  دیدگاه


                    #10
                    پاسخ : کد نویسی برای رجیسترهای پایه stm32f103x در IAR

                    نوشته اصلی توسط yma-313
                    ... و کمک نکردن دوستان در باره دسترسی بیتی به رجیسترهای stm32 در IAR
                    :eek: ای بابا الان یعنی این پاسخی که دادم کمک نبود! :cry:
                    فيلم آموزشي ميکروکنترلر LPC1768
                    فيلم آموزشي تکميلي و پيشرفته ميکروکنترلر LPC1768
                    فيلم آموزش کاربردی زبان سی در میکروکنترلر ARM
                    فیلم آموزش مقدماتی میکروکنترلر LPC1788 به زودی ...

                    دیدگاه


                      #11
                      پاسخ : کد نویسی برای رجیسترهای پایه stm32f103x در IAR

                      ای بابا الان یعنی این پاسخی که دادم کمک نبود!
                      نه داداش کمک بود.من اشتباه کردم.بازم دم شما گرم که جواب پستو دادی :icon_razz:
                      خطاب به داعش:
                      ای وای اگر پا به حرم بگذاری/یک تکه ز دیوار حرم برداری/شیعه به بین الحرمین حساس است/گفتم که به گوش سگیت بسپاری
                      ما از سبوی شاه دین مجنون و مستیم/برگرد تا سربند یا زهرا(س) نبستیم

                      دیدگاه

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