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

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

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

آموزش میکروکنترلر 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 را برای شما توضیح دهد. با سیسوگ همراه باشید.

حمایت از مهدی عبدالهی

خوشحال میشیم برای تداوم و کیفیت ما رو حمایت کنید.

0 نفر

پــــســنــدیـده انـد

توجه

مهدی عبدالهی
مهدی عبدالهی

کانال میکروالکترونیک @microstm32

دیدگاه ها

25 دیدگاه

  • پویا
    ۹ فروردین ۱۴۰۱

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

    • Zeus ‌
      Zeus ‌
      ۲۴ فروردین ۱۴۰۱

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

  • بهزاد
    ۱۰ فروردین ۱۴۰۰

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

    • کامین جلیلی
      ۲۲ فروردین ۱۴۰۰

      بهزاد جان سپاس از انتقاد منصفانه‌تان. ما در یک مجموعه جدید به اسم “آموزش 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/

  • hossein
    ۶ بهمن ۱۳۹۹

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

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

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

    • Zeus ‌
      زئوس Zeus
      ۷ بهمن ۱۳۹۹

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

      • hossein
        ۷ بهمن ۱۳۹۹

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

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

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

      • hossein
        ۱۱ بهمن ۱۳۹۹

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

        • Zeus ‌
          زئوس Zeus
          ۱۱ بهمن ۱۳۹۹

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

  • javad
    ۲۱ آذر ۱۳۹۸

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

    • Sisoog Os
      Sisoog OS
      ۲۱ آذر ۱۳۹۸

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

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

      • javad
        ۲۳ آذر ۱۳۹۸

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

        • Zeus ‌
          زئوس Zeus
          ۲۴ آذر ۱۳۹۸

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

  • علی
    ۵ آذر ۱۳۹۸

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

    • Zeus ‌
      زئوس Zeus
      ۵ آذر ۱۳۹۸

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

      • علی
        ۱۵ آذر ۱۳۹۸

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

        • Zeus ‌
          زئوس Zeus
          ۱۶ آذر ۱۳۹۸

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

  • RTC در stm32f1 – i zeta
    ۲۵ شهریور ۱۳۹۸

    […] آموزش ۱۱: رابط RTC […]

  • دانش
    ۱۷ فروردین ۱۳۹۸

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

    • Nasim Hematian
      electronic girl
      ۱۸ فروردین ۱۳۹۸

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

      • دانش
        ۱۸ فروردین ۱۳۹۸

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

  • محمد
    ۹ بهمن ۱۳۹۷

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

    • Nasim Hematian
      electronic girl
      ۱۰ بهمن ۱۳۹۷

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

  • صادق
    ۳۱ شهریور ۱۳۹۷

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

    • Zeus ‌
      زئوس Zeus
      ۳۱ شهریور ۱۳۹۷

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

پر بحث ترین ها

مسابقه دوم : چالش برنامه نویسی به زبان C

مسابقه اول سیسوگ (مسابقه اول: درک سخت افزار) انتقادهای زیادی رو در پی داشت تا جایی که حتی خودمم به نتیجه مسابقه...

Zeus ‌ Zeus ‌
  • 2 سال پیش

راه اندازی LCD گرافیکی Nokia 1661 و دانلود کتابخانه آن

LCD گرافیکی یکی از مهم ترین پارامترهای موجود در طراحی انواع مدارات الکترونیکی پیچیده و حتی ساده است ، نمایش وضعیت و...

Zeus ‌ Zeus ‌
  • 4 سال پیش

ریموت کدلرن و چکونگی دکد کردن آن به همراه سورس برنامه

ریموت کنترل امروزه کاربرد زیادی پیدا کرده است؛ از ریموت‌های درب بازکن تا ریموت‌های دزدگیر و کنترل روشنایی همه از یک اصول اولیه پیروی می‌کنند و آن‌هم ارسال اطلاعات به‌صورت بی‌سیم است....

Zeus ‌ Zeus ‌
  • 5 سال پیش

مسابقه سوم: استخراج داده از رشته ها در زبان C

نزدیک به 5 ماه از مسابقه دوم سیسوگ می‌گذره و فکر کردم که بد نیست یک چالش جدید داشته باشیم! البته چالش‌ها...

Zeus ‌ Zeus ‌
  • 2 سال پیش

همه چیز درباره ریموت کنترل‌های هاپینگ

امنیت همیشه و در همه‌ی اعصار، مقوله‌ی مهم و قابل‌توجه‌ ای بوده و همیشه نوع بشر به دنبال امنیت بیشتر، دست به ابداعات و اختراعات گوناگونی زده است. ریموت کنترل یکی از این اختراعات است. در این مقاله، به بررسی امنیت انواع ریموت‌های کنترل خواهیم پرداخت....

Zeus ‌ Zeus ‌
  • 5 سال پیش

مسابقه ششم: بزن میکروکنترلر را بسوزون!

بزنم میکروکنترلر را بسوزونم اونم تو  این شرایط!، طراحی مسابقه از اون چیزی که به نظر می‌رسه سخت‌تر است، باید حواست باشه...

Zeus ‌ Zeus ‌
  • 9 ماه پیش

آموزش قدم به قدم راه اندازی +NRF24L01

آموزش قدم به قدم راه اندازی +NRF24L01  با کتابخانه سازگار با انواع میکروکنترلرها و کامپایلرها قبل از اینکه قسمت بشه با ماژول...

رسول خواجوی بجستانی رسول خواجوی بجستانی
  • 3 سال پیش

ساخت ماینر با FPGA و ARM

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

Zeus ‌ Zeus ‌
  • 3 سال پیش

مسابقه چهارم: کدام حلقه سریع‌تر است؟

حدود ۷ ماه پیش، مسابقه سوم سیسوگ رو برگزار کردیم و کلی نکته در مورد خواندن رشته‌های ورودی را بررسی کردیم. فکر...

Zeus ‌ Zeus ‌
  • 1 سال پیش

درآمد زایی به سبک پینوکیو

ما مهندسین, بخصوص مهندسین برق و الکترونیک … علاقه خاصی به طراحی و ساختن داریم علاقه زیادی به تکنولوژی , بخصوص از...

Sisoog Os Sisoog Os
  • 3 سال پیش
سیـــســـوگ

مرجع متن باز آموزش الکترونیک