در جلسه قبل با نحوه انجام تنظیمات برای پروژه چشمک زن در نرم افزار STM32CubeMX آشنا شدیم و کد اولیه رابا آن تولید کردیم در این جلسه فایل ایجاد شده توسط نرم افزار را در محیط برنامه نویسی کیل بازم می کنیم و با نحوه برنامه نویسی برای روشن و خاموش کردن پایه مورد نظر و ایجاد تاخیر بین هر تغییر وضعیت آشنا می شویم.
قبل از شروع برنامه نویسی و با باز کردن برنامه مشاهده می کنید که در بخش هایی از برنامه عباراتی مانند نمونه های زیرنوشته شده است :
باید دقت داشته باشید که اگر می خواهید کتابخانه یا متغیر یا برنامه ای را خودتان به برنامه تولید شده اضافه کنید حتما در جاهایی که با عبارت USER CODE BEGIN مشخص شده قرار دهید و تا قبل از USER CODE END به اتمام برسانید در غیر اینصورت اگر مجددا با نرم افزار STM32CubeMX بخواهید تغییری را در پروژه اعمال نمایید با تولید مجدد کدهایی که قبلا نوشته اید پاک می شوند.
قبل از شروع برنامه نویسی برای اینکه از صحت پروژه ایجاد شده مطمئن شویم کافیست تا کلید F7 را فشار دهیم تا برنامه کامپایل شود در صورتیکه برنامه خطایی نداشت شما توانسته اید کد اولیه برنامه را بدون خطا تولید نمایید.
در سمت چپ برنامه و در بخش Project و در سربرگ Project شما می توانید کتابخانه ها و فایل اصلی برنامه را مشاهده نمایید.
در این برنامه با توجه به اینکه ما فقط نیاز به روشن و خاموش کردن یک پایه داریم تنها از توابع مورد استفاده در این پروژه نام می بریم و نحوه استفاده از آنها را توضیح می دهیم
هر کدام از کتابخانه های موجود دارای توابعی هستند که برای مشاهده آنها می توانید در سمت چپ برنامه در بخش Project سربرگ Function را انتخاب نماییم. با انتخاب هر کدام از این کتابخانه ها توابع مربوط به آن نیز مشخص شده است.
از تابع فوق برای پیکربندی یک پین از یک پورت استفاده می شود مثلا شما می توانید پین مورد نظر خود را ورودی یا خروجی تعریف نمایید که دربخش اول نام پورت و در آرگومان دوم مشخصات مربوط به پایه که در یک استراکچر قبلا تنظیم شده قرار می گیرد. برای مثال برای تنظیم پایه مورد نظرمان (PA8) تنظیمات زیر در عضوهای مربوط به استراکچر تنظیم شده است.
در این مثال شماره پین، وضعیت پین و حداکثر سرعت پین مشخص شده است.
از این تابع در زمانیکه بخواهیم پین خروجی مورد نظر خود را روشن یا خاموش کنیم استفاده می کنیم و روش استفاده آن به این صورت است که در آرگومان اول شماره پورت و در آرگومان دوم شماره پین و در آرگومان سوم وضعیت پین (Set or Reset) را تنظیم می کنیم
با استفاده از این تابع شما می توانید پین مورد نظر خود را با هر بار اجرا تغییر وضعیت دهید به عنوان مثال در صورتیکه وضعیت خروجی Set باشد با اجرا این دستور وضعیت پین Reset می شود و برعکس این قضیه نیز صادق است. برای استفاده از این تابع فقط کافیست در آرگومان اول نام پورت و در آرگومان دوم شماره پین را وارد نماییم.
این تابع در کتابخانه stm32f1xx_hal.c قرار دارد و با استفاده از آن می توانیم در برنامه توقف ایجاد کنیم و برای استفاده از آن کافیست تا مدت زمانیکه که می خواهیم برنامه متوقف شود را به میلی ثانیه در آرگومان این تابع قرار دهیم.
با توجه به اینکه کدهای اولیه برای ساخت پروژه چشمک زن توسط نرم افزار STM32CubeMX تولید شده است فقط به شرح کدهایی که خودمان به این برنامه اضافه کرده ایم می پردازیم
برنامه درون یک حلقه بی نهایت قرار می گیرد که در ابتدا پین 8 از پورت A را Set یا روشن می کنیم.
پس از روشن شدن پین مورد نظر برنامه به مدت 1 ثانیه متوقف می شود.
با اجرای این دستورات ابتدا پین 8 از پورت A خاموش یا Reset می شود و پس از آن به مدت یک ثانیه برنامه متوقف می شود.
با اجرای این دستور وضعیت پین 8 از پورت A تغییر می کند به این معنی که اگر قبلا Reset بوده با اجرای این خط وضعیت پایه به Set تغییر می کند.
پس از نوشتن برنامه برای تست صحت آن لازم است آن را روی برد پروگرام کنیم تا بتوانیم نتیجه کار را ببینیم، برای این منظور لازم است که ابتدا تنظیمات نرم افزار کیل را بررسی کنیم. در ابتدا از منوی Project گزینه Option for Target را انتخاب می کنیم
پس از انتخاب این گزینه وارد پنجره Option for Target می شویم که برای اینکه برنامه پس از کامپایل فایل Hex را نیز تولید نماید باید حتما تیک گزینه Create HEX File را از سربرگ Output فعال کنیم.
پس از آن از سربرگ Debug باید نوع دیباگر یا پروگرامر خود را انتخاب نماییم در اینجا ما با توجه به اینکه از دیباگر ST-Link استفاده می کنیم گزینه مربوط به آن را انتخاب می کنیم.
در همین بخش پس از انتخاب نوع دیباگر با انتخاب گزینه Settings وارد پنجره Cortex-M Target Driver Setup می شویم در این پنجره سربرگ Flash Download را انتخاب می کنیم و گزینه Reset and Run را فعال می کنیم با این کار پس از پروگرام شدن برد، برنامه شروع به اجرا می کند.
پس از انجام این تنظیمات گزینه OK در پایین پنجره را انتخاب می کنیم تا تنظیمات ذخیره شوند. اکنون شما می توانید برنامه خود را روی دستگاه پروگرام کنید که برای این منظور تغذیه برد و سیم های پروگرامررا متصل و چک می کنیم و در نهایت برای پروگرام شدن کافیست که از منوی Flash گزینه Download را انتخاب نمایی.
در صورتیکه تمام این تنظیمات و ارتباط بین پروگرامر و برد صحیح باشند برد شما پروگرام می شود
در انتها شما می توانیدشماتیک و برنامه Keil و پروژه ایجاد شده با نرم افزار STM32CubeMX را دانلود نمایید.
شاد و پر انرژی باشید
محمد هادی دشتی
دیگر آموزش ها مرتبط با STM32:
برای مشاهده آموزش جلسه اول(معرفی هسته آرم و میکروکنترلرهای 32 بیتی شرکت ST ) کلیک کنید.
برای مشاهده آموزش جلسه دوم( معرفی نرم افزارهای مورد نیازجهت برنامه نویسی و پروگرام ) کلیک کنید.
برای مشاهده آموزش جلسه سوم( نحوه دانلود آخرین نسخه از نرم افزار STM32CubeMX ) کلیک کنید.
برای مشاهده آموزش جلسه چهارم(نحوه انجام تنظیمات در نرم افزار STM32CubeMX ) کلیک کنید.
برای مشاهده آموزش جلسه پنجم(نحوه برنامه نویسی پروژه چشمک زن با نرم افزار Keil ) کلیک کنید.
برای مشاهده آموزش جلسه ششم(نحوه تولید کد و تنظیمات در محیط STM32CubeMX و برنامه نویسی در محیط Keil برای راه اندازی کلید) کلیک کنید.
برای مشاهده آموزش جلسه هفتم(معرفی نرم افزار STM32 Flash Loader Demonstrator و نحوه دانلود برنامه و پروگرام کردن میکرو) کلیک کنید.
برای مشاهده آموزش جلسه هشتم( نحوه راه اندازی ال سی دی کاراکتری-قسمت اول) کلیک کنید.
برای مشاهده آموزش جلسه نهم( نحوه راه اندازی ال سی دی کاراکتری و آشنایی با دستورات کاربردی کتابخانه ال سی دی کاراکتری ) کلیک کنید.