در ادامه برای تنظیم ساختار پروژه، روی نام پروژه کلیک راست کرده و آیکن “ … Options For Target” را انتخاب کنید:
در این بخش تمامی تنظیمات مربوط به پروژه ایجاد شده در دسترس میباشد. در تب Target و بخش Code Generation گزینه use defualt compiler version 6 را انتخاب میکنیم و بر روی OK کلیک کنید.
ساختار درختی پروژه تولید شده
ساختار درختی پروژه تولید شده در محیط نرم افزار Keil نشان داده شده است. پوشه STM32F3xx_HAL_Driver شامل کتابخانههای اصلی سختافزار فعال شده در میکروکنترلر است. پوشه User شامل فایل main.c است که برای نوشتن کد C استفاده میشود. اگر میخواهید یک کتابخانه جدید به پروژه اضافه کنید، از این پوشه استفاده کنید.
با کلیک بر روی فایل main.c، محتویات فایل در پنجره اصلی نرم افزار نمایش داده میشود:
تعریف پین به صورت خروجی
در سمت چپ پنجره، در تب Functions ابزاری برای نمایش توابع موجود در هر یک از فایلهای پروژه وجود دارد. هنگام کلیک روی هر تابع، به محتویات آن تابع منتقل میشویم:
برای نمایش توابع استفاده شده در فایل stm32f1xx_hal_gpio.c بر روی زبانه مربوطه کلیک کنید تا توابع مربوطه نمایش داده شود:
تابع HAL_GPIO_WritePin برای تخصیص مقدار به پینها در حالت خروجی استفاده میشود. هنگام کلیک بر روی این تابع، به محل تابع منتقل میشویم. در کتابخانههای HAL در بالای هر تابع، نظرات کاملی در مورد ورودی و خروجی هر تابع وجود دارد که به کاربر در استفاده صحیح از تابع کمک میکند:
در قسمت تنظیمات پین، پایه PB6 با برچسب USER_LED به عنوان خروجی تنظیم شده است. ما میخواهیم وضعیت یک LED متصل به پین PB6 را تغییر دهیم. برای این کار از کد زیر در حلقه اصلی برنامه استفاده کنید:
ما همچنین میتوانیم با استفاده از تابع HAL_GPIO_TogglePin همین کار را انجام دهیم. استفاده از خطوط زیر در داخل حلقه while ضروری است:
HAL_GPIO_TogglePin(USER_LED_GPIO_Port, USER_LED_Pin);
HAL_Delay(300);
پس از نوشتن کد، برنامه کامپایل شده و یک فایل هگز تولید میشود. این فایل پروگرامر به میکروکنترلر منتقل میشود. برای این منظور، از منوی Project، گزینه “Rebuild All Target Files” را انتخاب کنید. پس از شروع فرآیند کامپایل، نتایج در پنجره پیامها نشان داده میشود:
تعریف پین به صورت ورودی
در مثالهای قبلی پین را به عنوان خروجی در نظر گرفتیم. در مثال زیر میخواهیم عملکرد پین را در حالت ورودی ارزیابی کنیم. بنابراین، میخواهیم با یک دکمه فشاری متصل به پین PA3 وضعیت LED را تغییر دهیم:
بنابراین، پین PA3 را به عنوان GPIO_Input تنظیم میکنیم:
HAL_GPIO_ReadPin برای خواندن مقدار پین ورودی استفاده میشود. بدنه تابع HAL_GPIO_ReadPin در زیر ارائه شده است:
حال برای تغییر وضعیت LED با استفاده از دکمه فشاری (USER_LED) متصل به پین PA3 ، از کد زیر در حلقه اصلی برنامه استفاده کنید: