برد STM ترفند نرم افزار

اضافه کردن کتابخانه به پروژه های STM32 در نرم‌افزار KEIL

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

در آموزش های پیشین میکروکنترلرهای STM32 درباره راه اندازی نرم‌افزاری، GPIO و USART این نوع میکروکنترلر صحبت کردیم. در ادامه برای راه اندازی ماژول های مختلف بایستی بتوانیم کتابخانه مربوط به ماژول را از سایت هایی مانند GitHub دانلود کنیم. و به پروژه‌ی خود اضافه کینم. در این آموزش قصد داریم تا نحوه اضافه کردن کتابخانه های مختلف به پروژه در نرم‌افزار KEIL را بصورت کامل توضیح دهیم.  در ادامه با مرجع تخصصی بردهای امبدد به زبان فارسی، دیجی اسپارک همراه باشید.

 


انواع فایل در زبان C


اگر تا به حال به نام‌گذاری فایل های داخل پروژه نگاه کرده باشید. متوجه می‌شوید که برخی فایل ها دارای پسوند h. و برخی دیگر دارای پسوند c. هستند. داخل فایل های c. عموما سورس کد و داخل فایل های h. عموما هدر ها define ها و تعریف توابع قرار دارد. همچنین کتابخانه هایی که به پروژه اضافه می‌شوند عموما دارای پسوند h. هستند. برای مثال فایلی که کد اصلی داخل آن قرار دارد بصورت main.c نام گذاری شده است و stdio.h که یکی از کتابخانه های بسیار مهم در ارتباط میکروکنترلرها با یکدیگر و کامپیوتر است با پسوند h. به برنامه اضافه می‌شود.

انواع فایل در زبان C و کامپایلر KEIL

 

با توجه به این که در کامپایلر KEIL برای قطعات مختلف کتابخانه ای تعریف نشده است. نیاز است کتابخانه ای برای قطعاتی مثل LCD و … تعریف شود. شما می‌توانید کتابخانه مورد نظر را از سایت های همچون GitHub و … دانلود کنید. و یا کتابخانه ای که خودتان نوشته اید را به پروژه اضافه کنید. در آموزش های بعدی برای راه اندازی ماژول های مختلف کتابخانه های مربوطه را معرفی می‌کنیم.

 


اضافه کردن کتابخانه به KEIL


برای اضافه کردن کتابخانه به پروژه در نرم‌افزار KEIL، بایستی پس از ساخت پروژه فایل مربوط به کتابخانه به پوشه پروژه اضافه کنید (بهتر است که فایل های مربوط به هر کتابخانه داخل پوشه ای جداگانه‌ای قرار گیرند). سپس بایستی وارد نرم افزار KEIL شده و از منو Project گزینه Options for Target را انتخاب کنید.

نرم افزار KEIL و روش نصب کتابخانه

 

سپس در پنجره باز شده صفحه ++C/C را باز کنید. سپس بر روی گزینه مشخص شده در تصویر زیر کلیک کنید. در پنجره باز شده بر روی گزینه New و سپس بر روی قسمت … کلیک کنید و آدرس پوشه مربوط به کتابخانه مورد نظر را وارد کنید. سپس با کلیک بر روی گزینه OK تمامی پنجره هارا ببندید.

افزودن کتابخانه در نرم افزار کیل options for target - دیجی اسپارک

حالا بایستی از نوار سمت چپ (Project) از چارت درختی که فایل های پروژه را نمایش میدهد، بر روی اولین پوشه راست کلیک کرده و گزینه New Group را انتخاب کنید. سپس در این چارت درختی یک New folder ایجاد میشود. نام این New folder را تغیر دهید و سپس بر روی آن دابل کلیک کنید. در صفحه باز شده وارد پوشه کتابخانه شوید و تمامی فایل های مربوط به کتابخانه را به این Group اضافه کنید. سپس با با اضافه کردن هدر فایل هدر کتابخانه به ابتدای کد می‌توانید از توابع موجود در کتابخانه در کد خود استفاده کنید.

تمامی مراحل بالا داخل ویدیو بصورت کامل نمایش داده شده است.

 

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

 

در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.

 

درباره نویسنده

علی زاهدی

برنامه نویس و طراح سیستم های مبتنی بر میکروکنترلر

دانسته هایتان را مانند یک ساعت مچی در دست کنید، نه صرفا به این خاطر که نشان دهید آن را دارید. بلکه به این خاطر که اگر کسی از شما ساعت را پرسید، برایش بگویید.
لرد چسترفیلد

تبادل نظر و رفع عیب با ثبت دیدگاه

۲۰ دیدگاه

  • سلام خسته نباشید کتابخانه ها رو دانلود کردم و به همون شکل اون ۳ تا فایل رو اضافه کردم ولی در کامپایلر KEIL ارور داره
    میزنه FATAL ERROE GPIOUNIT FILE NOT FOUND –
    میشه مشکلشو بفرمایید؟؟
    دو تا فایل GPI O داخل پوشه هس اونا رو به چه صورت بایداستفاده کرد؟؟

    • با سلام
      در انتهای فایل Config برای کتابخانه LCD بایستی قسمت #include “GPIO_UNIT/gpio_unit.h” را حذف یا کامنت کنید.

  • سلام ، خسته نباشید ، من با این روش خاستم کتابخونه برای کیپد که خودتون تو اموزش هاتون داده بودین رو اضافه کنم ولی متاسفانه خیلی ارور میده ، همش یا میگه این فایل موجود نیست )no such a file or directory)
    یا میگه کامپایلر ساپرتش نمیکنه ، و کلا هرکاری میکنم حداقل ۴ ارور اینجوری میده ، تو کتابخونه ی کیبرد یه ۳تا جفت فایل اچ و سی هست ، یکی اسم کیپد داره یکی اسم چی پی ای او و یکی هم اس تی ام چی پی ای او هست که هرکدوم هم اچ فایل دارن هم سی فایل ، حالا من اینا رو هر کدوم رو جدا باید به جای خاصی معرفی کنم یا همشون رو فقط تو ادد گروپ جدیدی ساختیم بریزم؟ من با این روش جلو رفتم ولی ارور زیاد داد ، ممنون میشم راهنماییم کنین

    • با سلام
      تمامی فایل ها را در یک گروه اضافه کنید. توجه داشته باشید که ادرس پوشه هایی که در آن هدر فایل (h.) وجود دارد را بایستی از بخش option for target به پروژه معرفی کنید.

      • سلام و خسته نباشید
        من یه مدت هست درگیر اینم که کتابخونه lcd کارکتری رو به keil اضافه کنم
        چندین و چند بار مراحلی که شما در بالا گفتید رو انجام دادم ولی متاسفانه مرتب ارور زیر نشون داده میشه :
        Lcd_test.axf:L6218E:Undefined symbol lcd_init (referred from main.o)

        • با سلام
          پس از اضافه کردن کتابخانه ایا دستور زیر را به ابتدای فایل main.c خود اضافه می‎کنید؟
          #include “lcd.h”

  • با تشکد از مطلب خوبتون لطفا بفرمایید اگر کتابخانه با یک خانواده دیگر بغیر از میکروی استفاده شده در پروژه ماست چکار باید کرد؟
    در CubeIde روش کار به چه صورت است ؟

    • با سلام
      در صورتی که کتابخانه برای خانواده دیگری برای مثال AVR نوشته شده باشد. بایستی رجیستر های مربوطه را تغییر داده و رجیستر های STM32 را جایگزین کنید. که این عمل با نوشتن کتابخانه از صفر تفاوت زیادی ندارد. برای نرم افزار STM32CubeIDE فقط کافیست تا فایل های .h را داخل پوشه core پوشه inc و فایل های .c را داخل پوشه src کپی کنید. سپس درصورتی که داخل این نرم افزار پروژه را رفرش کنید. فایل ها به پروژه شما اضافه می‌شود.

  • کتابخانه رو اضافه کردیم کد بالا رو کجای main.c اضافه کنیم نمیشه یه نمونه کامل از main.c بزارید با تشکر

    • با سلام
      ابتدای فایل main.c در ادامه کتابخانه هایی که خود نرم افزار اضافه کرده است.

  • سلام اقای مهندس . من کدی رو میخوام کامپایل کنم ولی ارور میده که فایل هایی با پسوند .h اضافه نشده . شما گفتین از قسمت option for target اضافه شود . اما چجوری ؟ میشه لطفا راهنمایی کنید با تشکر

  • درود
    چطور می تونیم کتابخانه توابع HAL رو اضافه کنیم و در پروژه ی خودمون در کامپایلر Keil ازشون استفاده کنیم به نحوی که مجبور نباشیم همواره مستقیما خود رجیسترهای مربوطه رو مقدار دهی کنیم؟
    ممنون

    • با سلام
      کتابخانه های مربوط به توابع HAL توسط نرم افزار STM32CubeMX ساخته می‌شود. درصورتی که قصد دارید از این توابع در پروژه خود استفاده کنید. بایستی پروژ] خود را توسط نرم افزار CubeMX ساخته و دربخش خروجی این نرم فزار کامپایلر خود را KEIL انتخاب کنید.

  • سلام مجدد
    من کتابخانه ها رو اضافه کردم ولی وقتی اون کتابخانه رو باز می کنم کنار بعضی خطوط برنامه ی کتابخانه ضربدر قرمز زده و ایراد یا Error گرفته به نظر شما علتش چیه؟

    • با سلام
      در بررخی کتابخانه ها نیاز است که ابتدا برخی پارامتر ها قبل از کامپایل کردن برای کتابخانه تنظیم شود. ارور میتوانید برای این موضوع باشد.