ARM, STM32, آموزش, توصیه شده, دوره آموزشی STM32, میکروکنترلر

آموزش میکروکنترلر STM32 قسمت یازدهم: رابط RTC

RTC in STM32

آموزش میکروکنترلر STM32 – قسمت یازدهم ;

 

سیسوگ در قسمت دهم از آموزش میکروکنترلر STM32 کار با DMA رابط سریال UART را آموزش داد. در این قسمت از آموزش میکروکنترلر STM32 قصد دارد به آموزش تنظیمات نرم‌افزار CubeMX برای رابط RTC  در خانواده CORTEXM3 بپردازد. در مجموعه آموزش میکروکنترلر STM32 با سیسوگ همراه باشید.

 

رابط RTC در خانواده CORTEXM3 :

برای شروع راه اندازی قسمت RTC بمانند دفعات قبل ابتدا نرم افزار CUBEMX را باز می‌کنیم و میکروکنترلر  STM32F103C8T6 را انتخاب می‌کنیم و فرکانس را روی همان 72 مگا هرتز می‌گذاریم و حال باید قسمت RTC را فعال کنیم، بدین منظور مطابق عکس زیر تنظیمات Pinout را انجام می‌دهیم.

تنظیمات RTC برای میکروکنترلر STM32

همان‌طور که در عکس بالا میبینید ما عمداً گزینه No RTC Output را انتخاب می‌کنیم تا بتوانیم از وقفه آلارم نیز استفاده کنیم. در مرحله بعد باید منبع کلاک RTC را انتخاب کنیم، ما برای منبع کلاک در این قسمت چند گزینه متفاوت داریم بهترین گزینه استفاده از کریستال ساعت با فرکانس 32768  هرتز خارجی است. بدین منظور طبق عکس زیر پایه‌های مربوط به این کریستال را فعال می‌کنیم.

 

فعالسازی کریستال ساعت در میکروکنترلر STM32

در این حالت همان‌طور که در عکس بالا مشاهده می‌کنید پین‌های PC14 و PC15 به امر اتصال کریستال ساعت اختصاص پیدا می‌کند و دیگر نمی‌توانید از آن پین‌ها به عنوان پورت استفاده کنید. حال به برگه Clock Configuration می‌رویم و گزینه کریستال ساعت را برای RTC مطابق عکس زیر انتخاب می‌کنیم.

 

تنظیمات کریستال ساعت برای RTC در میکروکنترلر STM32

توجه داشته باشید در بعضی میکروکنترولرهای چینی اسیلاتور بخش کریستال ساعت کار نمی‌کند و در هنگام اجرای برنامه به قسمت پیکره‌بندی آن که می‌رسیم برنامه متوقف می‌شود. برای این میکروکنترولرها می‌توانید گزینه اول یعنی گزینه HSE_RTC را انتخاب کنید، که تقریبا دقت مناسبی را در RTC فراهم می‌کند ولی بخوبی کریستال ساعت نیست. در مرحله بعد به صفحه Configuration می‌رویم و دکمه RTC را می‌زنیم تا کادر زیر ظاهر شود.

 

تنظیمات RTC برای میکروکنترلر STM32

همانطور که در عکس بالا میبینیم Data Format  را باید از نوع Binary انتخاب کنیم و در قسمت General هم تنظمات حتما باید روی Automatic باشد تا بصورت خودکار بوسیله تقسیم کننده فرکانس یک هرتز از منبع کلاک RTC برای این بخش فراهم گردد، ولی مثلا برای میکروهای سری CORTEXM4 مسئله به این شکل نیست، که در بخش خودش توضیح داده خواهد شد. در مرحله بعد به NVIC Setting همین تنظیمات می‌رویم و هر دو وقفه نشان داده شده در شکل زیر را که اولی مربوط به وقفه عمومی RTC می‌شود و دومی هم به وقفه رویداد الارم RTC مربوط می‌شود را فعال می‌کنیم.

 

تنظیمات NVIC Setting در میکروکنترلر STM32

پس از این مرحله تنظیمات را OK می‌کنیم و از همان صفحه Configuration دکمه NVIC را می‌زنیم و طبق عکس زیر در قسمت مورد نظر دو تیک مربوط به وقفه‌های مورد استفاده RTC را فعال می‌کنیم.

 

تنظیمات NVIC در میکروکنترلر STM32

در مرحله بعد تنظیمات را OK می‌کنیم و با زدن دکمه Generate از نرم افزار خروجی می‌گیریم توجه داشته باشید در این برنامه ما UART1 را قبلاً برای نمایش اطلاعات انتخاب کرده‌ایم. بعد از خروجی گرفتن از نرم‌افزار Cubemx وارد محیط نرم‌افزار Keil می‌شویم حال باید در ابتدا توابع عمومی رابط RTC را بررسی کنیم.

 

 

بوسیله تابع بالا می‌توانید زمان را که تشکیل شده از ساعت به همراه دقیقه و ثانیه داخل یک ساختار از نوع RTC_TimeTypeDef دریافت کنید.

سیسوگ در قسمت دوازدهم قصد دارد جزئیات ساختار RTC_TimeTypeDef را برای شما توضیح دهد. با سیسوگ همراه باشید.

انتشار مطالب با ذکر نام و آدرس وب سایت سیسوگ، بلامانع است.

شما نیز میتوانید یکی از نویسندگان سیسوگ باشید.   همکاری با سیسوگ

25 دیدگاه در “آموزش میکروکنترلر STM32 قسمت یازدهم: رابط RTC

  1. Avatar for A A گفت:

    سلام
    تشکر بابت آموزش های رایگانتون 🙏☘️

  2. Avatar for پویا پویا گفت:

    سلام
    من یه مشکله عجیبی دارم نمیدونم چیکار کنم
    من از میکروکنترلر stm32f103c8t6 استفاده میکنم تقریبا از تمامی پریفرالهایی هم که داره استفاده میکنم
    مشکلی که دارم اینکه باتری بکاپ ساعتش زود خالی میشه حدود 2 هفته
    با چنتا برد و میکرو دیگه هم امتحان کردم بازم این مشکل هست.
    بنظرتون چطور این مشکل رو حل کنم؟؟

    1. Avatar for Zeus ‌ Zeus ‌ گفت:

      سلام ، خوب میتونه مشکل از میکروکنترلر باشه یا حتی طراحی و مونتاژ برد
      برای شروع شما میتونید جریان مصرفی باتری رو اندازه گیری کنید ببینید توی بردتون مطابق دیتاشیت هست یا نه

  3. Avatar for بهزاد بهزاد گفت:

    کاش قبل از اینکه برید سراغ کیوب یه کم در مورد خود پریفرال توضیح بدین که مثلا قراره چیکار کنه . رجیستراش چی ان ؟ کارشون چیه ؟
    ببخشید انتقاد دارم . میدونم تهیه آموزش کار راحتی نیست مخصوصا اگر مجانی باشه ولی اینطوری که اموزش حساب نمیشه فقط یه مقدار دهی به یه سری توابع هست . بدون اینکه بدونیم داریم چیکار می کنیم .. از وقتی هم که گذاشتید برای تهیه آموزش ممنونم

    1. Avatar for کامین جلیلی کامین جلیلی گفت:

      بهزاد جان سپاس از انتقاد منصفانه‌تان. ما در یک مجموعه جدید به اسم “آموزش STM32 با توابع LL” سعی کردیم این مواردی که می‌فرمائید را به خوبی توضیح بدهیم و یک مجموعه آموزشی با کیفیت بسیار بالا را ایجاد کنیم. لینکش رو در پایین قرار می‌دم، امیدوارم که خوشتون بیاد.

      https://sisoog.com/%d8%a2%d9%85%d9%88%d8%b2%d8%b4-stm32-%d8%a8%d8%a7-%d8%aa%d9%88%d8%a7%d8%a8%d8%b9-ll/

  4. Avatar for hossein hossein گفت:

    سلام
    من می خوام مقدار یک متغیر رو در داخل واحد RTC ذخیره کنم که مقدار متغیر در موقع قطع برق تغییر نکند .
    خیلی بابت این موضوع سرچ کردم اما چیزی انچنانی پیدا نکردم

    میکرو من stm32f103c8t6 هست و میکرو EEPROM داخلی نداره و چون متغیر دائم در حال تغییر است نمیتوان از حافظه FLASH به عنوان EEPROM استفاده کرد
    و امکان استفاده از EEPROM خارجی نیست
    میشه در باره این موضوع بیشتر توضیح بدین .

    اینم پروژه من در داخل برنامه KEIL
    https://s16.picofile.com/file/8422670968/RTC.rar.html

    1. Avatar for زئوس Zeus زئوس Zeus گفت:

      سلام دوست عزیز
      در این خانواده میکروکنترلر فکر میکنم ۱۶ تا رجیستر وجود داره که مقدار اونها با باتری بک آپ حفظ میشه هر رجیستر هم قادر است یک عدد ۱۶ بیتی رو در خودش نگه داره یعنی در مجموع شما ۲۵۶ بیت فضا در اختیار دارید که با باتری مقدار خودش رو حفظ میکنه.
      اگر نیاز به eeprom دارید ما مقاله ای داریم که آموزش میده چطور میتونید حافظه فلش رو به عنوان eeprom هم استفاده کنید.
      تبدیل حافظه FLASH میکروکنترلرهای STM32 به EEPROM

      1. Avatar for hossein hossein گفت:

        ممنون پاسخ خوبتون

        من العان یک هفته هست درگیر این پروژه هستم اما هنوز راهی پیدا نکردم که بتونم با باتری بکاپ مقدار متغیر رو نگه دارم برنامه ای که نوشتم رو اپلود کردم و لینکش رو فرستادم میشه یک راهنمایی بکنین
        هییچ مطلبی پیدا نکردم

        و اینکه ممنون از پیشنهاد خوبتون اما من فقط در این پروژه مجورم از باتری بکاپ استفاده کنم

      2. Avatar for hossein hossein گفت:

        خوب اقا بالاخره خودم بعد از یک هفته به جواب رسیدم
        اینم لینک پروژه من در داخل برنامه keil برنامه خیلی واضح هست امید وارم برای دوستان مفید باشه موفق باشیبن
        https://www.eca.ir/forums/thread89315.html#post726818

        1. Avatar for زئوس Zeus زئوس Zeus گفت:

          سلام
          بسیار هم عالی – خوشحالم که مشکل رو حل کردید و متشکرم که نتیجه رو اینجا با ما هم به اشتراک گذاشتید

  5. Avatar for javad javad گفت:

    سلام ببخشید سوالم یخورده بی ربط به موضوعه من از برنامه کیل استفاده میکنم چون کرک شدس یخورده حساس شدم استفاده ازین مدل برنامه ها از لحاظ شرعی مشکلی نداره؟

    1. Avatar for Sisoog OS Sisoog OS گفت:

      🙂
      سلام دوست عزیز این سوال را میتونید از دفتر استفتائات مراجع بپرسید
      البته لازمه یه دوره اموزشی واسشون توضیح بدید دغدغتون چی هست 🙂
      استفتاء بنده را البته در زیر میتونید بخونید :-))

      استفاده از کرک و شکستن ققل های نرم افزارهای موجود در حوزه الکترونیکی که در خارج منتشر میشوند و هیچ گونه پشتیبانی و خدماتی هم به ما نمیدهند و اکثرا هم ما را فیلتر کرده اند از شیر مادر بر شما حلال تر است
      و صد البته چرا برادرم وقتی نرم افزارهای اپن سورس و رایگان و بهتری وجود داره به خودتون فشار میارید
      کامپایلر فوق العاده ای مثل GCC و ادیتور قوی مثل اکلیپس
      و تازه خودتون را در معرض خطرات کرک های ناپایدار و مشکل دار میکنید

      1. Avatar for javad javad گفت:

        خیلی ممنون بنده gcc کار نکردم اپشنای کیل رو داره؟ کیل خیلی کارارو اسون کرده اونم اینجوریه؟

        1. Avatar for زئوس Zeus زئوس Zeus گفت:

          خوب GCC به نظر من چیزی که کم نداره خیلی هم بیشتر از کیل داره
          ولی خوب یه مقداری کار کردن باهش قلق میخواد 🙂

  6. Avatar for علی علی گفت:

    سلام وخسته نباشید. من از میکرو stm32f103c8t6 استفاده میکنم و هر کاری میکنم نمیتونم کلاک کانفیگشو نمیتونم روی 72 مگا هرتز بذارم همش میگرده و اخر سر خودش پیشنهاد کلاک دیگه ای رو میده مثلا 64. کجای کار من اشتباه هست . ممنونم از شما

    1. Avatar for زئوس Zeus زئوس Zeus گفت:

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

      1. Avatar for علی علی گفت:

        ممنونم از پاسخ شما. من در کیوب با این مشکل مواجه شدم. اصلا عوض نمیشه
        در نرم افزار کیوب برای تعین فرکانس

        1. Avatar for زئوس Zeus زئوس Zeus گفت:

          برای این که بتونید سورس rtc رو تغییر بدید اول لازمه که اسیلاتور اونو فعال کنید
          برای این کار اول به قسمت system core بروید بعد گزینه rcc و انتخاب کنید و LSE رو فعال کنید.

  7. Avatar for دانش دانش گفت:

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

    1. Avatar photo electronic girl گفت:

      سلام دوست عزیز
      متاسفانه فراموش شده بود آدرس پست دوازدهم در پست 11 اضافه بشه. این مجموعه در 15 قسمت ارائه شده که میتوانید در آدرس زیر کل مجموعه را ببینید:
      https://sisoog.com/tag/stm32f1/
      مجموعه آموزشی دیگری هم تحت عنوان “آموزش میکروکنترلر STM32F4” در حال انتشار است.
      ممنون از توجه شما

      1. Avatar for دانش دانش گفت:

        با تشکر از پاسخگوییتون

  8. Avatar for محمد محمد گفت:

    با سلام بی صبرانه منتظر آموزشهای بسیار عالی شما هستم

    1. Avatar photo electronic girl گفت:

      سلام
      ممنون از لطف شما دوست عزیز

  9. Avatar for صادق صادق گفت:

    سلام
    ممنون از مطالب خوبتون .
    منتظر قسمت های بعدی هستیم.

    1. Avatar for زئوس Zeus زئوس Zeus گفت:

      سلام
      متشکر از لطف شما
      بله حتما

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *