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

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

سلام دوستان 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
این تابع رو، اخر خط هامون کپی میکنیم و پرش میکنیم.در قسمت پورتمون رو میگیم قسمت دوم اسم استراکچرمون رو کپی میکنیم با یک & قبلش چون یک اشاره گره؛ در اخر هم از همون توابع تابع

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

 

پسورد فایل های سایت :
www.dmf313.ir
پيامبر خدا صلى الله عليه و آله : هر علمى در روز قيامت براى صاحب خود وبال است، مگر كسى كه به علمش عمل كند.
ارسال دیدگاه
21

1) تعداد حروف فارسی از حروف غیر فارسی بیشتر باشه دیدگاه جفنگ/اسپم محسوب میشه.

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

3) برای گزاشتن کدهاتون از این سایت استفاده کنید : debian

  1. مهمان

    باربارا

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

    1397/12/16
    10:50
  2. مهمان

    سید صادق

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

    1397/12/12
    01:01
    • مدیر سایت

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

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

      1397/12/12
      02:00
  3. مهمان

    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 است

    1397/11/29
    11:52
    • مدیر سایت

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

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

      1397/11/30
      12:01
      • مهمان

        fateme

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

        1397/11/30
        10:48
  4. مهمان

    ارش

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

    1397/08/04
    06:44
  5. مهمان

    احسان

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

    1397/07/16
    10:01
  6. مهمان

    میلاد

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

    1397/05/16
    06:16
  7. مهمان

    kazem

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

    1397/04/26
    12:47
    • مدیر سایت

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

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

      1397/04/26
      03:50
  8. مهمان

    fazel

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

    1397/04/21
    02:26
    • مدیر سایت

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

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

      1397/04/21
      02:31
      • مهمان

        علی

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

        1397/06/03
        04:49
  9. مهمان

    محمدرضا

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

    1397/03/16
    02:16
    • نویسنده این مطلب

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

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

      1397/03/17
      09:55
      • مهمان

        محمدرضا

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

        1397/03/18
        03:26
        • مهمان

          احسان

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

          1397/07/16
          10:06
  10. مهمان

    ناشناس

    دمت گرم

    1397/02/24
    11:47
  11. مهمان

    امیر

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

    1397/02/22
    12:15
    • مهمان

      علی

      علی

      1397/12/25
      06:23