نمایش/عدم نمایش سایدبار
رفتن به بالای صفحه
أَللّهُمَّ ارْزُقْنی شَفاعَةَ الْحُسَیْنِ یَومَ الْوُرُودِ
عباس پورشبانی

آموزش میکروکنترلر های arm سری stm32f10x جلسه 7

449

سلااااااام hi ببخشید بنده رو بابت یک تاخیر کوچیک یکساله، درگیر فارغ التحصیلی و خدمتو کلا اینطور چیزا بودم dash و سعادت نداشتم کنار شما خوبان باشم؛ انشالله بعد این اموزش یدونه دیگه هم تو همین هفته میذارم و اگه زنده موندم بعدیشو دو ماه بعد میذارم crazy

آموزش میکروکنترلر های arm سری stm32f10x جلسه 7

آموزش میکروکنترلر های arm سری stm32f10x جلسه 7

جلسه قبل ( پارسال laugh ) ADC  رو توضیح دادام؛ قراره امروز adc رو راه بندازیم و تمام cool الان دیگه همتون حرفه ای شدین و میدونید که ما واسه راه اندازی adc اول باید یک پروژه مثل جلسات قبل درست کنیم و توش فایل های gpio ,adc,rcc رو اضافه کنید و  یک استراکچر برای rcc , gpio بسازین؛ منم دیگه در مورد اینها صحبت نمیکنم که جسارتی بهتون نشه give_rose

 

کد برنامه :

 

توضیح کدهای برنامه : 

خط 3 : استراکچر GPIO رو میسازیم.

خط 4 : و همچنینن استراکچر ADC رو.

خط 10 : کلاک ADC و پورت B، که پایه ADC  بهش وصله رو روشن میکنیم.

خط 11 : چون میخوایم از ADC استفاده کنیم باید مود GPIO رو، روی GPIO_Mode_AIN تنظیم کنیم.

خط 12 : میخوایم کانال هشت ADC1 رو فعال کنیم که میشه پایه B0؛ اینو میتونید توی کیوب خیلی راحت متوجه بشید.

خط 15 : میپرسه دیتا رو از چپ بچینه و بافر رو پرکنه یا از راست که اینجا ما از راست رو مشخص کردیم.

خط 16 : اینجا اگه ContinuousConvMode رو فعال کنید ADC پیوسته میاد مقدار رو میخونه و تبدیل میکنه اگه غیر فعالش کنید فقط یک مرتبه مقدار ADC رو تبدیل میکنه و غیر فعال میشه.

خط 17 : شما میتونید کلاک ADC رو از بیرون از واحد ADC  تامین کنید مثلا از تایمر بگیرید، که اینجا ما گفتیم کلاک خارجی نمیخوایم و از کلاک خود ADC  میخوایم استفاده کنیم.

خط 18 : اگه یادتون باشه جلسه پیش ( پارسال rofl ) در مورد مود های ADC گفتم که اینجا مود Independent رو ما انتخاب کردیم.

خط 19 : میگیم از یک کانال ADC1 فعلا میخوایم استفاده کنیم.

خط 20 : اگه بخوایم از چند کانال یک ADC استفاده کنیم باید ScanConvMode رو فعال کنیم که انشالله بعدا میریم سراغش و یدونه پروژه ازش میذارم.

خط 22 : با استفاده از این تابع کانال مورد استفادمون و همچنین رنک و سمپل تایم ADC رو مشخص میکنیم، که اینجا یدونه بیشتر نداریم و میگیم میخوایم از کانال هشت استفاده کنیم و چون یدونه کانال فقط داریم میگیم اول همون کانال رو کانورت کنه مثلا دوتا کانال 1 و 2 رو میخواستیم استفاده کنیم، میتونستیم بگیم اول کانال 2 رو مقدارش رو بده بعد 1 رو.

خط 23 و 24 : این دوتا فانکشن بالا کلا ADC رو فعلا و اماده کار میکنن.

خط 28 : اینجا میایم فلگ ADC رو چک میکنیم و میگیم هر وقت کانورت کردن مقدار ADC کامل شد از تو حلقه while خارج شو.

خط 29 : و توسط این تابع مقدار کانورت شده ADC رو میگیریم و میریزیم توی متغیر x و تمام.

 

ببخشید اگه من یکم خلاصه توضیح میدم اگه ابهامی بود بگید تا یکم بیشتر توضیح بدم ؛ التماس دعا؛ خدانگه دار.

تعداد مطالب : 8 تا
پيامبر خدا صلى الله عليه و آله : هر علمى در روز قيامت براى صاحب خود وبال است، مگر كسى كه به علمش عمل كند.
ارسال دیدگاه
4
نظرات این مطلب بسته شده است.
  1. mik

    مهمان

    mik

    سلام و خداقوت
    من پنج شنبه ای یه پست گذاشتم الان خبری ازش نیست!!

    در مورد تایمر و adc
    وقتی تو اینتراپت تایمر فرمان خواندن adc رو میزارم همونجا گیر میکنه !!!
    ولی وقتی همون خط خوندن adc رو تو حلقه while تابع main میزارم بدون هیچ اشکالی کار میکنه

    void TIM3_IRQHandler(void){
    if (TIM3->SR & (1<SR = (uint16_t)~(0x0001);
    Iout= readADC1(5);
    TIM3->SR &= ~(1UL << 0);}
    }

  2. mik

    مهمان

    mik

    سلام
    بسیار عالی
    بالاخره قسمت 7 هم اومد … دلمون برای آموزش های سایتتون تنگ شده بود …
    من می خواستم تو روتین اینتراپت تایمر یه نمونه adc بگیرم ولی همونجا گیر میکنه ادامه نمیده ؟؟!!
    در حالی که همون خط رو تو حلقه while تابع main میزارم مشکلی نداره و اجرا میشه
    void TIM3_IRQHandler(void){
    if (TIM3->SR & (1<SR = (uint16_t)~(0x0001);
    Iout= readADC1(5);
    TIM3->SR &= ~(1UL << 0);
    }}

  3. رضا

    مهمان

    رضا

    سلام من حدود یک هفته هس آرم رو با هدف انجام کارهای صنعتی شروع کردم و خوشحالم که آموزش هاتون رو آغاز کردید و امیدوارم ادامه پیدا کنه
    تو فکر خرید هدر برد هستم شما چه هدر بردی رو برای شروع پیشنهاد می کنید؟

    مشاهده پاسخ ها (1)
    • عباس پورشبانی

      نویسنده این مطلب

      عباس پورشبانی

      سلام.دوست عزیز مرسی ممنون.انشالله ادامه میدم 😅.بنظر من هدر برد stm32f103c8t6این مینی هاشون خوبه.هم‌ ارزون هم به هرچه دوست داشتی میتونی وصل کنی.