جلسه سی و هشتم _ بررسی توابع و دستورات مربوط به واحد Watchdog در نرم افزار Keil
در جلسه قبل به معرفی Watchdog و نحوه استفاده و راه اندازی آن پرداختیم و پروژه ای را تولید نمودیم در این جلسه قصد داریم تا به بررسی توابع و نحوه استفاده از آن ها بپردازیم. پس در ابتدا پروژه را اجرا می کنیم و به سراغ فایل main.h می رویم:
استراکچر مربوط به تنظیمات واحد Watchdog می باشد.
معرفی تابع مربوط به تنظیمات واحد Watchdog
تابع تنظیمات واحد واچ داگ می باشد که پارامترهای تنظیم شده در نرم افزار STM32CubeMX در این تابع قرار می گیرند.
hiwdg.Init.Prescaler : مقدار پیش تقسیم کننده فرکانس مربوط به این واحد را مشخص می کند.
hiwdg.Init.Reload : مقدار شمارش را در این قسمت مشخص می کنیم.
حال به سراغ توابع کاربردی این واحد می رویم که برای مشاهده آنها باید فایل stm32f1xx_hal_iwdg.c را اجرا نمود که مسیر آن از قسمت Project درون پوشه Drivers/STM32F1xx_HAL_Driver می باشد.
(HAL_StatusTypeDef HAL_IWDG_Init(IWDG_HandleTypeDef *hiwdg
وظیفه این تابع پیکربندی واحد IWDG و شروع به کار آن می باشد که یک آرگومان در ورودی دریافت می کند که این آرگومان استراکچر مربوط به تنظیمات واحد IWDG می باشد.
(HAL_StatusTypeDef HAL_IWDG_Refresh(IWDG_HandleTypeDef *hiwdg
وظیفه این تابع مقدار دهی مجدد تایمر مربوط به واحد IWDG می باشد با فراخوانی این دستور و مقدار دهی مجدد از ریست شدن دستگاه جلوگیری می شود، زیرا در صورتیکه مقدار تایمر مربوط به واحد واچ داگ مقدار دهی مجدد نشود، شمارش نزولی این تایمر موجب صفر شدن مقدار آن شده و با صفر شدن مقدار تایمر میکرو ریست می شود.
قبل از توضیح برنامه اضافه شده به برنامه لازم است تا نحوه محاسبه زمان برای ریست شدن میکرو را بررسی نماییم. با توجه به اینکه فرکانس منبع کلاک واحد 40KHz می باشد دو پارامتر برای تغییر زمان وجود دارد اولین پارامتر مقدار پیش تقسیم کننده فرکانسی این واحد می باشد که اعداد 4 و 8 و 16 و 32 و 64 و 128 و 256 می باشد و پارامتر دوم مقدار شمارنده این واحد می باشد که ماکزیمم می تواند 4095 باشد پس در ابتدا باید زمان مورد نظر برای ریست شدن میکرو را در نظر بگیریم پس از آن با تغییر این دو پارامتر زمان مورد نظر را بدست آورد . در این جلسه قصد داریم تا برنامه ای بنویسیم تا در صورتیکه مقدار شمارنده مربوط به واحد واچ داگ پس از 1 ثانیه مجدد مقدار دهی نشد میکرو را ریست نماید. پس مقدار پیش تقسیم کننده را 32 در نظر می گیریم با این کار فرکانس ورودی واحد برابر 1.25KHz می شود و برای بدست آوردن زمان یک ثانیه باید مقدار 1250 پالس شمارش شود و با توجه به اینکه شمارش تا مقدار صفر ادامه پیدا می کند مقدار اولیه کانتر مربوط به واحد را 1249 در نظر می گیریم. حال به سراغ توضیح برنامه می رویم.
در ابتدا با استفاده از دستور HAL_IWDG_Init واحد واچ داگ را فعال و شمارش را آغاز می کنیم و پس از آن به یک حلقه for می رسیم که وضعیت یک LED را که به پایه میکرو متصل نموده ایم با فاصله زمانی 100 میلی ثانیه یکبار تغیر می دهد و پس از هر بار تاخیر 100 میلی ثانیه با استفاده از دستور HAL_IWDG_Refresh مقدار شمارنده واحد واچ داگ را مجدد مقدار دهی می کند تا از ریست شدن میکرو جلوگیری شود در این حلقه LED با سرعت بالا روشن و خاموش می شود و پس از آن به حلقه while می رسیم درون این حلقه نیز یک حلقه for وجود دارد که وضعیت یک LED را با فاصله زمانی 500 میلی ثانیه یکبار تغیر می دهد و پس از هر بار تاخیر 500 میلی ثانیه با استفاده از دستور HAL_IWDG_Refresh مقدار شمارنده واحد واچ داگ را مجدد مقدار دهی می کند تا از ریست شدن میکرو جلوگیری شود در این حلقه نیز LED با سرعت کمتری نسبت که حلقه قبل از while روشن و خاموش می شود و پس از خروج از حلقه به یک تاخیر 2 ثانیه ای می رسیم و با توجه به اینکه این تاخیر بیشتر از زمان تنظیم شده برای ریست شدن میکرو است پس از گذشت یک ثانیه و عدم مقدار دهی مجدد شمارنده مربوط به واچ داگ، مقدار شمارنده صفر می شود و میکرو ریست می شود. در نتیجه برنامه از ابتدا شروع به کار می کند و LED را با سرعت بالا روشن و خاموش می کند و مجدد به حلقه while می رسد و این روند مدام ادامه می یابد.
در انتها می توانید شماتیک مربوط به این جلسه و برنامه (keil , STM32CubeMX) آنرا دانلود نمایید.
دلتون شاد و لبتون پر خنده
محمد هادی دشتی
برای مشاهده آموزش جلسه اول(معرفی هسته آرم و میکروکنترلرهای 32 بیتی شرکت ST ) کلیک کنید.
برای مشاهده آموزش جلسه دوم( معرفی نرم افزارهای مورد نیازجهت برنامه نویسی و پروگرام ) کلیک کنید.
برای مشاهده آموزش جلسه سوم( نحوه دانلود آخرین نسخه از نرم افزار STM32CubeMX ) کلیک کنید.
برای مشاهده آموزش جلسه چهارم(نحوه انجام تنظیمات در نرم افزار STM32CubeMX ) کلیک کنید.
برای مشاهده آموزش جلسه پنجم(نحوه برنامه نویسی پروژه چشمک زن با نرم افزار Keil ) کلیک کنید.
برای مشاهده آموزش جلسه هشتم( نحوه راه اندازی ال سی دی کاراکتری-قسمت اول) کلیک کنید.
برای مشاهده آموزش جلسه سیو دوم(دوره آموزشی میکرو کنترلرهای STM32 _ معرفیSPI (بخش اول)) کلیک کنید.
برای مشاهده آموزش جلسه سی و سوم(دوره آموزشی میکرو کنترلرهای STM32 _ معرفیSPI (بخش دوم)) کلیک کنید.