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

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

428

سلام دوستان hi در دومین آموزشمون میخوایم باهم GPIO میکرو STM32F10X رو باهم ست کنیم؛ در اموزش قبل یاد گرفتیم که چطور میشه یک پروژه ساخت و فایل های CMSIS رو بهش اضافه کرد، پس باهم ادامه راه رو میریم.
آموزش میکروکنترلر های arm سری stm32f10x جلسه 2

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


جلسه قبل : آموزش میکروکنترلر های arm سری stm32f10x جلسه 1

واسه ی ست کردن GPIO یا به قولی روشن کردن یک LED ما باید دوتا کار انجام بدیم اول اینکه باید RCC رو تنظیم کنیم و دوم اینکه باید GPIO رو تنظیم کنیم؛ برای تنظیم کردنشون باید لایبراری هاشون رو به پروژه اضافه کنیم؛ خب برای اضافه کردن لایبراری ها مثل قبل یک گروه جدید ایجاد کنیم تا پروژمون منظم تر بشه اسمشو هم بهتره بذارین CMSIS Driver؛ برای اضافه کردن لایبراری ها دوبار روی همون گروه جدیدی که ساختین کلیک میکنید و مسیر CMSIS_Liberary\STM32F10x_StdPeriph_Driver\src رو میرین و فایل های stm32f10x_gpio.c و stm32f10x_rcc.c رو با دابل کلیک روی فایل به پروژه اضافه میکنید :
آموزش میکروکنترلر های arm
پروژه رو که کامپایل کنیم دوتا ارور داره؛ که واسه حل اونها باید کار های زیر رو انجام داد :
1) به کامپایلر بگیم ما داریم از کتابخانه CMSIS استفاده میکنیم، که عبارت USE_STDPERIPH_DRIVER رو باید دیفاین کنیم، برای جدا کردن دو دیفاین از هم از ویرگول استفاده میکنیم.
کتابخانه CMSIS
حالا پروژه رو کامپایل میکنیم میبینیم، چهار تا ارور میده rofl …. اصلا نترسید.
2) ما فایل های C. رو به پروژه اضافه کردیم اما h. رو نه؛ خب باید مسیر فایل h. رو هم به پروژه بدیم برای این کار مانند تصویر زیر عمل میکنیم :
STM32F10X
و مسیر CMSIS_Liberary\STM32F10x_StdPeriph_Driver\inc رو میریم و پوشه inc رو انتخاب میکنیم و روی گزینه select folder کلیک میکنیم؛ حالا یه کار دیگه هم باید بکنیم که ارورا تمام بشن باید یک هدر فایل با نام conf.h رو توی پوشه پروژه اضافه کنیم ( انتهای اموزش میذارمش )؛ چون این فایل h. هست و ما اونو توی پوشه پروژه کپی کردیم باید دقیقا مثل بالا مسیر پروژه رو هم به کامپایلر بگیم؛ حالا فایل conf.h چی هست؟ در واقع این فایل میاد لایبراری cmsis رو راه اندازی میکنه.
خب حالا دیگه ارور هامون تمام شد و میریم سراغ کد نویسی؛ البته وقتی از cmsis استفاده میکنیم نیازی به کدنویسی نیست و فقط کپی میکنیم؛ ابتدا باید کلاک پورتی رو که میخوایم استفاده کنیم رو فعال کنیم. مثلا میخوایم پورت c پین 5 رو فعال کنیم؛ خب نگاهی میکنیم به دیتاشیت :
آموزش آرم
همینطور که میبینید پورت c کلاکش متصل هست به باس APB2 پس ما باید مثل زیر عمل کنیم :
آموزش arm
اگه کشوی function خالی بود کیل رو ببندید و باز کنید درست میشه؛ حالا تابع :

رو داخل تابع مین کپی کنید تا پرش کنیم؛ قسمت اولش میگه کدوم پورت یا پریفرال رو میخوایی فعال کنید؟ که تمامی پورت ها یا پری فرال هایی که به این باس وصل هستش رو با خط سبز بالاش نوشه ما میخوایم پورت c رو فعال کنیم پس عبارت RCC_APB2Periph_GPIOC رو از داخل سبز ها کپی میکنیم و در قسمت اول قرار میدیم؛ قسمت دوم هم باید بنویسید ENABLE یعنی فعال باشه یا غیر فعال که ENABLE رو هم میتونید از زیر همونا کپی کنید.
خب rcc تنظیم شد مونده تنظیمات gpio برای تنظیمات gpio باید یک استراکچر یا ساختار رو پر کنید که شامل یک سری متغیر هاست و این متغیر ها تنظیمات gpio ما رو در برمیگره.
آموزش stm32
برای این استراکچره باید عبارت GPIO_InitTypeDef رو از مسیر نشون داده شده در بالای تابع مین قرار بدین، به این صورت :

حالا باید تک تک استراچر بالا رو پر کنیم، به صورت زیر :
 GPIO میکرو STM32F10X
اسراکچر رو میزنیم و بعد دات یک نوار مانند زیر باز میشه که ما باید بر اساس نیازمون پرشون کنیم، ترتیب مهم نیست اولی مود کاریه که اینجا هشتا مود داریم :

انشاالله کم کم با همشون اشنا میشیم الان ما که میخوایم با پاییه میکرو یک led رو روشن کنیم مود GPIO_Mode_Out_PP استفاده میکنیم . یعنی خروجی که با مقاومت داخلی پوش پول شده.
میکروکنترلر آرم
وقتی نشان گر موس وسط نوشته موس باشه و شما کلید f12 رو بزنید وارد صفحه ای میشه که تمام حالت های مود و سرعت و پایه ها رو گفته و نیازی به تایپشون نیست، بر اساس نیازمون استراکچر رو به شکل زیر پر میکنیم :
 میکروکنترلر arm
قسمت speed هم مربوط به کلاک میشه میتونید یکی از سه حالت :

10، 2 و 50 مگ رو بهش بدین و pin تون رو هم میگن کدومه و در نهایت باید تمام تنظیماتتون رو در یک تابع init خاتمه بدید :
آموزش stm32
این تابع رو، اخر خط هامون کپی میکنیم و پرش میکنیم.در قسمت پورتمون رو میگیم قسمت دوم اسم استراکچرمون رو کپی میکنیم با یک & قبلش چون یک اشاره گره؛ در اخر هم از همون توابع تابع

رو انتخاب میکنیم که از اسمش مشخصه کارش چیه ؛ قسمت اول میگیم کدوم پورت قسمت دوم کدوم پین و قسمت سوم میگیم یک باشه یا صفر.

 

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

    مهمان

    ابراهیم

    با سلام و عرض تشکر
    فایل conf.hخراب هست اگر زحمت نمیشه اصلاح کنید یا راهنمایی بفرمایید چطور دانلود کنیم

  2. باربارا

    مهمان

    باربارا

    این تنظیمات رو هم بصورت خودکار انجام میده درسته؟.انجام این تنظیمات به صورت دستی چه مزیتی داره؟

  3. سید صادق

    مهمان

    سید صادق

    سلام . فیلی که در آخر پروژه گذاشته بودین خراب شده ظاهرا باز نمیشه .لطافا درستش کنید. ممنون

    مشاهده پاسخ ها (1)
    • مهدی دمیرچیلو

      مدیر سایت

      مهدی دمیرچیلو

      سلام-این مطلب فیلمی نداره که؟

  4. fateme

    مهمان

    fateme

    سلام خسته نباشد برای آموزش خوبتون
    من وقتی یک پین رو با تابع togglePin صفر و یک میکنم بدرستی کار میکنه:

    HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_13);

    ولی وقتی writePin میخوام صفر و یک کنم کار نمیکنه:

    HAL_GPIO_WritePin((GPIOC,GPIO_PIN_13,1);
    HAL_Delay(1000);
    HAL_GPIO_WritePin((GPIOC,GPIO_PIN_13,0);

    میشه راهنمایی بفرمایید
    میکرو مورد استفاده ام stm32f103c8t6 است

    مشاهده پاسخ ها (2)
    • مهدی دمیرچیلو

      مدیر سایت

      مهدی دمیرچیلو

      سلام – من Stm کار نکردم ولی یه مورد کوچیک رو شما تست کن – بعد 0 کردن پایه فوق دیلای نزاشتید شما.

      • fateme

        مهمان

        fateme

        سلام بله شما درست میفرمایید
        درست شد خیلی ممنون
        بنده تازه کار هستم میخواستم یک تست برای شروع بکنم

  5. ارش

    مهمان

    ارش

    سلام من این برنامه رو شبیه سازی میکنم جواب خروجی رو یه خط دائم صاف میبینم…میشه در مورد شبیه سازی هم توضیحاتی بدید تشکر

  6. احسان

    مهمان

    احسان

    سلام -> یه نظری میدم -> تجربه شخصی هست -> از زمانیکه AVR کار میکرده ام تا الان -> بهتر نبود مطالب رو رجیستری بیان میکردین ؟ -> اگر منت بگذارین من میتونم مطالب رو از صفر تاصد رجیستری آموزش بدهم smile

  7. میلاد

    مهمان

    میلاد

    سلام آقا خدایی دمت گرم با این سایتت
    یک چیزی
    فایلی که قرار دادی روی سایت conf.h باز نمیشه مشکل داره

  8. kazem

    مهمان

    kazem

    چطوری تم رو مشکی کردید یاد بدید چشمام دیگه نمیبینه

    مشاهده پاسخ ها (1)
    • مهدی دمیرچیلو

      مدیر سایت

      مهدی دمیرچیلو

      این برا کد سایت هستش و نه توی کاپایلر

  9. fazel

    مهمان

    fazel

    این فایلی که گذاشتین برا دانلود خرابه
    انزیپ نمیشه
    باتشکر

    مشاهده پاسخ ها (2)
    • مهدی دمیرچیلو

      مدیر سایت

      مهدی دمیرچیلو

      الان تست کردم – سالمه – دوباره دانلود کنید.

      • علی

        مهمان

        علی

        سلام بخدا باز نمیشه فایل conf.h

  10. محمدرضا

    مهمان

    محمدرضا

    سلام
    خدا قوت…
    چجوری پروگرمش کنیم؟!!
    چه نوع پروگرامری می خواد؟
    با تشکر

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

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

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

      سلام..پروگرامر های زیادی داره st link ,j link , ulink و… من خودم از پروگرامر st link استفاده میکنم.مال خود کمپانی st هست برای میکرو هاش .اموزشش رو قرار میدم.

      • محمدرضا

        مهمان

        محمدرضا

        ماژول بنده،اینه:
        http://shop.aftabrayaneh.com/Leaflabs_Maple_Mini_Stm32_32bit_ARM__AFTAB.html?search=Stm32
        خودش پزوگرامر آنبورد داره‌چجوری باید ازش استفاده کنم؟
        با تشکر

        • احسان

          مهمان

          احسان

          پروگرامر آنبورد یعنی اینکه شما میتونین از طریق ی مبدل USB به UART با میکرو ارتباط بگیری و از طریق نرم افزار FLASH LOADER برنامتو ب میکرو انتقاال بدی و نهایتا با ریست کردن میکرو برنامه اجرایی میشه cool

  11. ناشناس

    مهمان

    ناشناس

    دمت گرم

  12. امیر

    مهمان

    امیر

    عالیییییییی مثل همیشه
    منتظر ادامه هستیم
    خدا قوت good good good good

    مشاهده پاسخ ها (1)
    • علی

      مهمان

      علی

      علی