نمایش/عدم نمایش سایدبار
رفتن به بالای صفحه
آزادی حجاز از دست نااهلان
Avatar

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

سلااااااام 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 و تمام.

 

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

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

1) نظرات غیر فارسی به صورت خودکار حذف میشوند ( حداقل 5 حرف فارسی وارد کنید ).

2) به موارد درخواست پروژه/کد آماده و سوالاتی که بلد نباشم پاسخ داده نمیشه.

3) برای گزاشتن کدهاتون از این سایت استفاده کنید ( طبیعتا لینک کدتون رو باید برای من بفرستید! ) : debian

4) پسورد فایل های سایت : www.dmf313.ir

  1. Avatar

    مهمان

    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. Avatar

    مهمان

    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. Avatar

    مهمان

    رضا

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

    • Avatar

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

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

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