آموزش میکروکنترلر STM32
در قسمت دهم از آموزش میکروکنترلر STM32 کار با DMA رابط سریال UART را آموزش دادیم. در این قسمت از آموزش میکروکنترلر STM32 قصد داریم به آموزش تنظیمات نرمافزار CubeMX برای رابط RTC در خانواده CORTEXM3 بپردازیم. در مجموعه آموزش میکروکنترلر STM32 با ما همراه باشید.
رابط RTC در خانواده CORTEXM3 :
برای شروع راهاندازی قسمت RTC مانند دفعات قبل، ابتدا نرمافزارCUBEMX را باز میکنیم و میکروکنترلر STM32F103C8T6 را انتخاب میکنیم و فرکانس را روی همان 72مگاهرتز میگذاریم و حال باید قسمت RTC را فعالکنیم، بدینمنظور مطابق عکسزیر تنظیمات Pinout را انجام میدهیم.
همانطورکه در عکسبالا میبینید ما عمداً گزینه No RTC Output را انتخاب میکنیم تا بتوانیم از وقفه آلارم نیز استفادهکنیم. در مرحلهبعد باید منبع کلاک RTC را انتخابکنیم، ما برای منبع کلاک در این قسمت چند گزینه متفاوت داریم بهترین گزینه استفادهاز کریستال ساعت با فرکانس ۳۲۷۶۸هرتز خارجی است. بدینمنظور طبقعکس زیر پایههای مربوطبه این کریستال را فعال میکنیم.
در این حالت همانطورکه در عکسبالا مشاهده میکنید پینهای PC14 و PC15 به امر اتصال کریستال ساعت اختصاص پیدا میکند و دیگر نمیتوانید از آن پینها بهعنوان پورت استفادهکنید. حال به برگه Clock Configuration میرویم و گزینه کریستال ساعت را برای RTC مطابق عکسزیر انتخاب میکنیم.
توجهداشتهباشید دربعضی میکروکنترولرهای چینی اسیلاتور بخش کریستال ساعت کار نمیکند و درهنگام اجرای برنامه به قسمت پیکرهبندی آن که میرسیم برنامه متوقف میشود. برای این میکروکنترولرها میتوانید گزینه اول یعنی گزینه HSE_RTC را انتخابکنید، که تقریبا دقت مناسبی را در RTC فراهم میکند ولی بهخوبی کریستال ساعت نیست. درمرحلهی بعد به صفحهی Configuration میرویم و دکمهی RTC را میزنیم تا کادر زیر ظاهرشود.
همانطورکه در عکسبالا میبینیم Data Format را باید از نوع Binary انتخابکنیم و در قسمت General هم تنظیمات حتما باید روی Automatic باشد تا بهصورت خودکار بوسیله تقسیم کننده فرکانس یک هرتز از منبع کلاک RTC برای این بخش فراهم گردد، ولی مثلا برای میکروهای سری CORTEXM4 مسئله به این شکل نیست، که در بخش خودش توضیحداده خواهدشد. در مرحلهی بعد به NVIC Setting همین تنظیمات میرویم و هر دو وقفه نشاندادهشده در شکلزیر را که اولی مربوطبه وقفه عمومی RTC میشود و دومی هم به وقفه رویداد الارم RTC مربوط میشود را فعال میکنیم.
پساز این مرحله تنظیمات را OK میکنیم و از همان صفحه Configuration دکمه NVIC را میزنیم و طبق عکسزیر در قسمت موردنظر دو تیک مربوطبه وقفههای مورداستفاده RTC را فعال میکنیم.
در مرحله بعد تنظیمات را OK میکنیم و با زدن دکمه Generate از نرمافزار خروجی میگیریم توجهداشتهباشید در این برنامه ما UART1 را قبلاً برای نمایش اطلاعات انتخاب کردهایم. بعداز خروجیگرفتن از نرمافزار Cubemx وارد محیط نرمافزار Keil میشویم حال باید در ابتدا توابع عمومی رابط RTC را بررسیکنیم.
HAL_RTC_GetTime(RTC_HandleTypeDef *hrtc, RTC_TimeTypeDef *sTime, uint32_t Format)
بوسیله تابع بالا میتوانید زمان را که تشکیلشده از ساعت به همراه دقیقه و ثانیه داخل یک ساختار از نوع RTC_TimeTypeDef دریافتکنید.
در قسمت دوازدهم قصد داریم جزئیات ساختار RTC_TimeTypeDef را برای شما توضیح دهیم. با ما همراه باشید.
منبع:سیسوگ