ARM, توصیه شده

تکلیف چیه؟ از STMCUBE استفاده کنیم یا نه؟!

تکلیف چیه؟ از STMCUBE استفاده کنیم یا نه؟!

دیروز در شبکه‌های اجتماعی سیسوگ سؤالی رو مطرح کردم و فکر می‌کنم سؤال چالشی برای خیلی از دوستان بود. سؤال ساده بود: «آیا بدون استفاده از STMCUBE قادر به ساخت پروژه و کانفیگ میکروکنترلر stm هستید؟». البته کتمان نمی‌کنم که خودم هم خیلی درگیر این مساله هستم و واقعاً فکر می‌کنم از چه جنبه‌هایی ممکنه دانستن و یا ندانستن چنین جزییاتی به نفع یا به ضرر ما یا پروژه باشد! چیزی که خود من را در نظرسنجی سورپرایز کرد درصد دوستانی بود که نمی‌توانستند بدون استفاده از این ابزار پروژه رو بسازند.

 

مگه بده که نمی توانیم!

نه واقعاً بد نیست! حالا بحث STM32 است ولی قبل از آن چنین ویژگی را نرم‌افزار کدویژن در اختیار کاربرها قرار می‌داد، دلیل استقبال گسترده از کدویژن همین کدویزارد شگفت‌انگیز آن بود، که تنها با چند کلیک کلی کانفیگ دردسرساز رو انجام می‌داد، حالا به شکل پیشرفته‌تری این قابلیت رو نرم‌افزار stmcube در اختیار کاربرها قرار داده است و حتی اخیراً با اضافه کردن کتابخانه‌های کاربردی مثل کتابخانه فایل سیستم یا سیستم‌عامل بلادرنگ یا کتابخانه شبکه و انجام کانفیگ موردنظر در بستر نرم‌افزار خیلی کاربردی‌تر از قبل شده است.

 

بهتر از ابزار چیزی نیست

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

پس این سوءتفاهم را کنار بگذارید که اگر کسی از فلان نرم‌افزار یا ابزار استفاده می‌کند یا نمی‌کند، آدم حرفه‌ای یا خفنی است (متأسفانه این دید را در دوستان زیادی دیده‌ام). آنچه اهمیت دارد این است که بتوانید کار کردن با ابزارهای مختلف را بیاموزید و بدانید در کجا بهتر است از چه ابزاری استفاده کنید.

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

 

حالا که ابزار اینقدر خوبه چرا بدون ابزار کار کنیم ؟

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

احتمالاً الآن دارید فکر می‌کنید چه کمکی میکنه وقتی می‌دونید چطور میکروکنترلر شما بوت می‌شود، وکتورهای وقفه رو چطور می‌شود مدیریت کرد، یا این که چطور فایل‌های اسمبلی بوت رو کنار فایل‌های سی قرار بدید و یه بیلد از پروژه بگیرد، خوب که چی وقتی همه این کارها رو یک نرم‌افزار برای من انجام می‌دهد چرا خودم باید چنین جزییاتی رو بدونم؟

 

برای رانندگی نیاز نیست ماشین رو خودتون بسازید

بگذارید با یک مثال غیر الکترونیکی مسئله رو نگاه کنیم شاید توضیح آن به این شکل ساده‌تر باشد، فرض کنید قرار است از تهران سفر کنید و برید شمال، یه سفر تفریحی که با خانواده می‌خواهید بروید (این سفر رو پروژه ببینید)، خوب برای این کار نیاز نیست دقیقاً بدونید ماشین چطور کار می‌کند، به همین اندازه که بدونید چطور با ماشین میشه رانندگی (رانندگی را ابزار ببینید) کرد و این که چطور باید از ماشین مراقبت کنید مثل چک کردن آب و روغن و آمپرهای مربوطه، کفایت می‌کند تا شما و خانواده را از تهران به شمال برساند. در اینجا شما به هیچ وجه درگیر جزییات این که ماشین چطور کار می‌کند نمی‌شوید لازم نیست که بدانید سیستم جرقه‌زنی چطور کار می‌کند یا اصلاً تفاوت انژکتور و کاربراتور در چیست.

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

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

وقتی قرار باشد از تمام امکانات و قابلیت‌های میکروکنترلر استفاده کنید، تنها توانایی کار کردن با چیزی مثل stmcube کافی نیست، بلکه باید جزییات عملکردی اجزاء سیستم را به خوبی درک کرده باشید و در این صورت است که می‌توانید بهترین نتیجه را بگیرید.

 

آیا باید بلد باشیم ماشین هم بسازیم؟

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

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

 

تفاوت یک راننده معمولی و یک راننده فرمول یک در جزییاتی که از عملکرد خودرو می‌دانند و البته مهارت آنها در رانندگی است!

 

آیا من از Stmcube استفاده می‌کنم؟

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

آخرین باری که استفاده کردم هم می‌خواستم ببینم برای اضافه کردن کتابخانه ssl از چه کتابخانه‌هایی می‌توانم استفاده کنم.

می‌بینید جواب من بله است.

و در انتها باید بگم که اگر از مخالف‌های سرسخت استفاده از آردوینو هستند، و معتقد هستید که استفاده از آردوینو باعث شده که مهندسین سطحی بشن و پایه علم الکترونیک متزلزل بشود توصیه می‌کنم این پست را از اول بخوانید و به‌جای کلمه stmcube از آردوینو استفاده کنید:)

انتشار مطالب با ذکر نام و آدرس وب سایت سیسوگ، بلامانع است.

شما نیز میتوانید یکی از نویسندگان سیسوگ باشید.   همکاری با سیسوگ

27 دیدگاه در “تکلیف چیه؟ از STMCUBE استفاده کنیم یا نه؟!

  1. Avatar for AS AS گفت:

    سلام
    من خواستم رجیستری برم جلو
    بکمک آدرس های رجیستری و بدون استفاده از کتابخونه های STMxx
    ولی نهایت پیشرفتی ک تونستم حاصل کنم فقط در حد GPIO و ADC و تایمر ها بود
    کلی اشتباه بود تو کتابخونه ای که ساخته بودم
    واقعا سخت بود
    واقعا درک پریفرال هاش سخت بود کلی بیت اضافی
    یه I2C خواستم راه اندازی کنم اونقده فرمول داده بود برای تایمینگ هاش واقعا مغزم سوت کشید آخرشم نتونستم راه اندازی کنم حتی با 4 تا جدولی که خودش برای فرکانس های منتخب ارائه داده بود هم نشد و بیخیالش شدم
    اینکه یه شرکت اول بیاد توابع LL بسازه بعد SPL بسازه بعد HAL و…….
    اتمل اومده برای رجیستر ها و بیت های میکروش یه کتابخونه ساخته
    آردوینو اومده بکمک اون کتابخونه ها یه کتابخونه و توابع سطح بالا تری ساخته اگه فردا یکی بیاد بکمک کتابخونه های آردوینو یه کتابخونه دیگه ای برای پریفرال های AVR بسازه کار غیر معقولانه ای انجام نداده

    ولی ST
    این توابع سطح بالاست
    اون سطح پایینه
    این لایه انتزاعیه
    اون پشتیبانیش تموم شد
    چرا خودت میکرو رو انگولک میکنی بیا از نرم افزاری که من ساختم استفاده کن
    فرمول میخوای چیکار ببین برات چند تا جدول برا چند تا فرکانس تنظیم کردم از اینا استفاده کن

  2. Avatar for علی متحدی علی متحدی گفت:

    من که از اول زدم تو کار رجیستری لذت بخش تر هست برای من

  3. Avatar for حسین حسین گفت:

    سلام. بسیار مقاله بجایی بود، بنده خودم از stmcube شروع کردم و بنا به گفته دوستان با بزرگتر و پیچیده تر شدن پروژه ها مجبور شدم سری هم به لایه های پایین تر از کتابخانه hal هم بزنم. به نظرم دوستانی که میخوان شروع کنن با stmcube شروع رو انجام بدهند بعدا و در خلال پروژها و بنا به نیاز وارد لایه های پایین تر بشوند

    1. Avatar for Zeus ‌ Zeus ‌ گفت:

      سلام دوست عزیز
      با شما موافق هستم
      به نظر من اولین قدم شروع کردن هست حالا با هرچیزی که میشه شروع کرد – بعد در خلال کار میشه ابزارها و روال ها رو بهبود بخشید و بهتر کرد.

  4. Avatar for مهدی زرکوب مهدی زرکوب گفت:

    چند سالی هست دو موضوع نیاز و سلیقه را مطرح کردم. یعنی همان موقعی که افرادی تعصب خاصی روی استفاده صرف از کیوب داشتند.
    نیاز همان چیزی است که مطرح کردید.
    ولی با افراد زیادی برخورد داشتم که سلیقه متفاوت داشتند. دیدم با سلیقه افراد نمیشه مقابله کرد!
    هر کسی هم مسئول پروژه خودش است. بنابرین باید به درستی تشخیص دهد این کار را چطوری انجام دهد.

    1. Avatar for Sisoog Os Sisoog Os گفت:

      دقیقا و تجربه افراد هست که پختگی اونها را در مواجه با خیلی چیزها نشون میده

  5. Avatar for محمد عزیزپور محمد عزیزپور گفت:

    سلام حاج آقا زئوس و بر و بچه های المپ!
    فرمایش شما کاملا صحیحه ، میشه با چنگال یک سوپ غلیظ یا ماست رو هم در صورت نبود قاشق خورد یا با قاشق هم سالاد اما بهتره از هر ابزار به جای خودش استفاده شه ، ترکیب این دو ابزار هم یک مدت در هتل ها مورد توجه بود spoon + fork = sfork اما خیلی زود منسوخ شد چون فهمیدن چیز بیخودیه و هر کدوم جدا خیلی بهتر و کاربردی تره.
    من زیاد در الکترونیک دیجیتال و میکرو حرفه ای نیستم و چند سالیه که ورود کردم بر حسب علاقه در کنار کارم که اتوماسیون و پی ال سیه.
    اینطور که از اساتید شنیدم و حین ساخت بعضی قطعات کار خودم لمس کردم آردینو بیشتر برای افرادی مناسبه که نخواند بصورت عمیق تر با الکترونیک مفهومی درگیری داشته باشند و بیشتر به خروجی کار و برنامه نویسیش علاقه دارند و اینکه پروژه زود تموم شه یه جور PLC که ما در صنعت برای پیشرفت سریع پروژه و ایمنی استفاده میکنیم که دیگه درگیر مباحث استاندارد ، نویزگیری و تهیه قاب مناسب و غیره نشیم و فقط برنامه نویسی و استارت سریع برای تحویل پروژه! در حوزه هوشمند سازی ساختمان و ارتباطات IOT هم اخیرا دیدم زیاد آردینو استفاده میشه چون مثل صنعت و تابلو برق نویز و این مسایل تو محیط ساختمان نیست که نشه ازش استفاده کرد اما برای تولید محصول اصلا بصرفه نیست و با هدف صرفا برنامه نویسی و آشنایی با میکرو بصورت کاربردی بنظرم ساخته شده.
    راستی جناب زئوس پستهای آموزش STM32 F1 پاسخ دهیش رها شده ؟ من خرداد ماه تو قسمت سیزدهم که مربوط به تبدیل تاریخه یک سئوال مطرح کردم هنوز بی پاسخ مونده 🙁
    ممنون میشم الطفاتی بفرمایید.

    1. Avatar for Zeus ‌ Zeus ‌ گفت:

      سلام و درود بر شما
      ببینید ابزار و آشنایی با ابزار خیلی خوبه چه بسا حتی از اون ابزار استفاده نکنیم، فرض کنید شما قصد داشته باشید خانه ای بسازید، و فقط چکش و بیل و کلنگ رو میشناسید، آیا نمی تونید خانه رو با این ابزار بسازید ؟ ، بله میشه ولی با توجه به زمان و هزینه و …. اقتصادی نیست، حالا فکر کنید برید توی مغازه ابزار فروشی بچرخید و ابزارهای مختلف رو ببینید و کارکردشون رو بپرسید و یا کنجکاوی کنید، بعد توی ساخت میبینید که چه دید خوبی بهتون میده و استفاده ازشون چقدر کارتون رو راحت تر میکنه 🙂
      آردوینو در واقع بردهایی که داره هیچ کجا ادعا صنعتی بودن نکرده ، توی کارهای صنعتی استانداردی هست که باید رعایت بشه و اگر رعایت نشه که خیلی جاها درست رعایت نمیشه نمیشه گفت اون برد یا محصول صنعتی است، من موافق آردوینو هستم چون خیلی راحت کرده کار آموزش و ساخت پروتوتایپ رو، اینقدر راحت کرده که میبینم خیلی ها دیگه تنبلی میکنن 🙂
      بخش کامنت ها رو دوباره ره انداختیم 🙂

      1. Avatar for محمد عزیز محمد عزیز گفت:

        سلام بر زئوس بزرگ ، فرمایش شما متین و صحیح است.
        من با بردهای استارتر نظیر دیسکاوری شروع کردم که بنظرم جایگزین خوبیه برای الکترونیکی ها.
        آقا من تابستون 1400 از طریق همین آموزش و کامنتهای اولیه با سیسوگ آشنا شدم و رشد هم کردم خداروشکر، بخش کامنتها برا امثال من خیلی خوب بوده و هست مخصوصا اگر جنبه آموزشی داشته باشه و انشا… در صورت فراغت فعالتر هم خواهم شد و تجریات اندکم رو به اشتراک خواهم گذاشت برای ادای دین به سیسوگ.
        تو بخش 13 آموزش Stm32 من کامنتی دادم مربوط به پاییز 1400 فکر کنم که در انتظار بررسی است ممنون میشم الطفاتی بفرمایید ، من حل کردم اون مشکلو برا خودم اما محلول شما رو بیشتر دوس دارم با مال خودم مقایسه و بررسی کنم، با سپاس

        1. Avatar for Zeus ‌ Zeus ‌ گفت:

          سلام و درود بر شما
          ما قراره یه بخش پرسش و پاسخ به سایت اضافه کنیم که امیدوارم مورد استقبال دوستان و همراهان سیسوگ قرار بگیره و ما روی کمک دوستانی مثل شما حساب خواهیم کرد.

          1. Avatar for محمد عزیز محمد عزیز گفت:

            سلام
            بعنوان کوچکترین اگر علم اندکم یاری گرد در خدمتم.
            با تشکر از طراح سایت که وقتی کسی اینجا کامنت میکنه رو دیدگاه تو ایمیل خبر میده وگرنه متوجه نمیشدیم 🙂
            و سپاس از شما

          2. Avatar for Zeus ‌ Zeus ‌ گفت:

            درود بر شما
            منم نیست که فکر میکنیم چقدر دانش داریم، مهم اینه که ببینیم این دانشی که داریم میتونه مشکل شخصی رو حل کنه یا نه
            که در بیشتر مواقع میتونه 🙂

  6. Avatar for مهدی مهدی گفت:

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

    1. Avatar for Zeus Zeus گفت:

      سلام دوست عزیز
      فکر میکنم منظور رو درست متوجه نشدید – اصلا من جایی گفتم شما از کیوب استفاده نکنید ؟
      در واقع دارم میگم ابزارها رو بشناسید و با آنها اتفاقا کار کنید ولی بدانید چطور دارید کار میکنید 🙂
      درم ورد آردوینو اتفاقا قیاس درستی هست، مقاله آردوینو خوب، بد، زشت ! همه چیز درباره آردوینو را مطالعه کنید

  7. Avatar for mqasemipur mqasemipur گفت:

    برای آموزش دیدن پیشنهادتون چیه یادگیری اصولی تر بدون stmcube یا سطحی تر با stmcube ؟

    1. Avatar for Zeus Zeus گفت:

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

  8. Avatar for Mahdi.h   Mahdi.h   گفت:

    مطمئنا این مطالب خیلی وقت ها چندین برابر چند مقاله فنی توی پیشرفت کار تاثیر داره ، ممنون از شما که وقت میزارید و این نکات مهم رو یادآوری می کنید???

    1. Avatar for Zeus Zeus گفت:

      سلام
      متشکرم، واقعا گاهی همین نکات غیرفنی و جزیی میتونه خیلی در وقت و انرژی آدم صرفه جویی کنه
      سعی میکنم با یادآوری آنها، سعی بکنم که دوستان تا جای ممکنه بهترین استفاده رو از ابزارها داشته باشند
      امیدوارم که این مقالات کمک کوچکی در این راستا بکنند
      متشکر از شما 🙂

  9. Avatar for صادق صادق گفت:

    خیلی عالی بود مهندس. فقط راهکار هم بدین کجا میشه به این اطلاعات دست پیدا کرد رفرنس اصلی چیه؟ یعنی مطالعه دیتا شیت و نوشتن در سطح رجیستری کفایت میکنه؟؟

    1. Avatar for Zeus Zeus گفت:

      سلام دوست عزیز
      در خصوص جزییات میکروکنترلر بله بهترین مرجع همان یوزرمنوال شرکت سازنده است، البته با گشت و گذار در گیت هاب هم میشه مثال های خوبی از کاربردها و نحوه پیکیربندی های مختلف دید که واقعا جالب هستند
      البته شرکت سازنده معمولا sdk یا کتابخانه هایی رو هم ارايه میکنه که معمولا همراه با مثال هایی است که اون ها هم خیلی خوبه

      1. Avatar for ثادق ثادق گفت:

        بسیار هم عالی. فقط اگر یه نمونه مثال از گیت هاب و فایل sdk سازنده قرار بدین خیلی کمک میکنه. چون الان دقیقا نمی‌دونم که چطور باید این موارد که فرمودین رو در سطح رجیستری جست و جو کنم.

  10. Avatar for سعید حقیقی پور سعید حقیقی پور گفت:

    بسیار مفید و عالی مثل همیشه زئوس عزیز

    1. Avatar for Zeus Zeus گفت:

      خواهش می‌کنم، نظر لطف شماست جناب حقیقی پور 🙂

  11. Avatar for Omid Azadeh Omid Azadeh گفت:

    بسیار عالی ….

    1. Avatar for Zeus Zeus گفت:

      متشکرم 🙂

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *