جلسه 25: پروژه پایانی و انتشار مستندات
هدف جلسه و جایگاه آن در مسیر آموزش
در جلسه 25 از دوره STM32، موضوع «پروژه نهایی STM32 و مستندسازی» را به صورت یک آزمایش قابل تکرار دنبال میکنیم. هدف این است که خواننده علاوه بر اجرای نمونه، بتواند دلیل انتخاب تنظیمات و معنای خروجی را توضیح دهد. اگر فقط کد را روی برد بریزیم و نتیجهای ظاهری ببینیم، هنوز نمیدانیم خطاهای بعدی از سختافزار هستند یا از تنظیمات نرمافزار. بنابراین از ابتدا مدل دقیق برد، نسخه ابزار و آنچه مشاهده شده است ثبت میشود.
این درس بر پایه یک برد مرجع NUCLEO-F401RE طراحی شده است. در صورت استفاده از برد دیگر، نام پایه، وضعیت کلید، مسیر درگاه سریال و قابلیتهای جانبی باید از راهنمای همان برد و دیتاشیت همان تراشه استخراج شود. تصویرها برای شناخت ابزار و موضوع هستند و نقشه اتصال پروژه به شمار نمیآیند. نتیجه مطلوب این جلسه چنین است: نمونه کارکرد، جدول آزمون و فهرست محدودیتها.

وسایل و پیشنیازهای مشخص
برای اجرای این مرحله به برد، حسگر سازگار، نمایشگر و ابزار اندازهگیری نیاز دارید. پیش از برقرسانی، نام مدل را از نوشته روی برد بخوانید و آن را با گزینه انتخابشده در محیط توسعه مقایسه کنید. کابل USB باید قابلیت انتقال داده داشته باشد؛ برخی کابلها تنها برای شارژ هستند و باعث میشوند برد در رایانه دیده نشود. اگر قطعه خارجی به کار میبرید، ولتاژ تغذیه، جریان مجاز و جهت اتصال را از سند سازنده آن قطعه بخوانید.
پروژههای جلسات قبل را در پوشه جداگانه نگه دارید و از پروژه فعلی یک نسخه قابل بازگشت بسازید. هنگام تغییر تنظیمات CubeMX، فایل IOC را ذخیره و سپس کد را تولید کنید. بخشهای دستی برنامه را در ناحیههای مخصوص USER CODE بگذارید تا تولید مجدد کد آنها را پاک نکند. برای گزارش نتیجه، یک جدول ساده از تنظیم، مشاهده و توضیح بسازید.
مراحل اجرای آزمایش
گام اول: سامانه پایش بساز، خطاها را ثبت کن و مراحل بازتولید را بنویس. در صفحه تنظیمات، هر گزینه را با هدف همین آزمایش مرتبط کنید. اگر گزینهای را صرفاً از نمونه دیگری کپی میکنید، پیش از ادامه بررسی کنید که آیا در برد مرجع و نسخه کتابخانه فعلی همان معنی را دارد. نامگذاری روشن برای پینها و متغیرها انتخاب کنید تا هنگام دیباگ بتوانید منشأ هر مقدار را پیدا کنید.
گام دوم: پروژه را Build کنید و پیامهای خطا و هشدار را بخوانید. سپس اتصال ST-LINK را بررسی و برنامه را روی برد بارگذاری کنید. یک بار برد را بازنشانی کنید و رفتار آن را دوباره بسنجید؛ این کار نشان میدهد نتیجه فقط ناشی از وضعیت باقیمانده در جلسه Debug نیست. اگر خروجی فیزیکی دیده نمیشود، ابتدا همان آزمایش را با سادهترین حالت ممکن و بدون ماژولهای جانبی تکرار کنید.
گام سوم: نمونه کارکرد، جدول آزمون و فهرست محدودیتها. این مشاهده را با زمان، شرایط تغذیه و وضعیت اتصالات ثبت کنید. سپس فقط یک پارامتر مرتبط با موضوع درس را تغییر دهید و آزمایش را دوباره انجام دهید. تغییر همزمان چند پارامتر تشخیص علت را دشوار میکند. در پایان به تنظیم قابل تکرار بازگردید و نسخه نهایی پروژه را ذخیره کنید.

چرا این تنظیمات مهم هستند؟
برای تحلیل نتیجه، کد، نسخه ابزار، مدل قطعات و نتایج اندازهگیری را کنار هم ارائه کن. این بخش را با داده واقعی آزمایش پر کنید: انتظار شما چه بود، چه اتفاقی افتاد و کدام مشاهده دو فرضیه متفاوت را از هم جدا میکند؟ وقتی خروجی مطابق انتظار نیست، به جای تعویض تصادفی سیمها یا کد، زنجیره را به ورودی، پیکربندی، اجرای برنامه و خروجی تقسیم کنید.
کتابخانه HAL لایهای برای دسترسی به پیرامونیها فراهم میکند، اما جای خواندن راهنمای برد و مرجع تراشه را نمیگیرد. کد تولیدشده به پیکربندی فایل IOC وابسته است. نام یک تابع ممکن است روی چند خانواده یکسان باشد، در حالی که پینهای قابل استفاده، منبع کلاک و جزئیات تایمر تغییر کنند. برای همین در گزارش خود مدل تراشه و نسخه بسته نرمافزاری را بنویسید.
یک آزمایش خوب باید معیار موفقیت داشته باشد. فقط نوشتن «کار کرد» کافی نیست: اگر پیام سریال میخوانید، نرخ و متن را ثبت کنید؛ اگر زمانبندی میسنجید، دوره تقریبی را بنویسید؛ اگر مقدار آنالوگ میخوانید، مقدار خام و مرجع را کنار هم بیاورید. به این ترتیب خواننده دیگری میتواند همان روش را تکرار و اختلاف نتیجه را پیدا کند.
عیبیابی مرحلهای
مهمترین احتیاط این جلسه: نتیجه آزمایش را تنها برای مدل سختافزاری آزمایششده ادعا کن. پیش از نسبت دادن مشکل به نرمافزار، تغذیه، اتصال زمین مشترک در صورت نیاز، شناخته شدن برد در رایانه و انتخاب مدل درست را بررسی کنید. اگر در کد خطا رخ میدهد، نخستین پیام خطای Build را بخوانید؛ خطاهای بعدی معمولاً پیامد همان خطای اول هستند.
اگر برنامه بارگذاری میشود اما خروجی تغییر نمیکند، یک breakpoint در نقطه اصلی بگذارید و ببینید اجرای برنامه واقعاً به آنجا میرسد یا نه. سپس متغیر ورودی، مقدار پیکربندی و فرمان خروجی را به ترتیب بررسی کنید. در آزمونهای زمانحساس، breakpoint میتواند خود رفتار را تغییر دهد؛ در آن شرایط از گزارش محدود سریال یا ابزار اندازهگیری استفاده کنید.
وقتی از قطعه بیرونی استفاده میشود، نقشه پایه منبع آموزشی را به صورت خودکار معتبر فرض نکنید. برخی ماژولها از نظر ظاهر شبیهاند اما ترتیب پایهها و سطح ولتاژشان فرق میکند. آزمون نخست را با تغذیه خاموش انجام دهید، سپس در صورت امکان ولتاژ را با مولتیمتر بسنجید و فقط پس از مطابقت با سند سازنده برنامه را اجرا کنید.

تمرین مستقل و سنجش یادگیری
تمرین اول این است که مراحل پروژه پایانی و انتشار مستندات را بدون کپی مستقیم تنظیمات از پروژه قبلی بازسازی کنید. هدف را در یک جمله بنویسید، سپس از روی راهنمای برد منابع مورد نیاز را پیدا کنید. اگر همان نتیجه به دست آمد، یکی از پارامترهای مجاز را تغییر دهید و قبل از اجرا پیشبینی کنید چه اثری خواهد داشت.
تمرین دوم: کد، نسخه ابزار، مدل قطعات و نتایج اندازهگیری را کنار هم ارائه کن. پاسخ را فقط به شکل تعریف واژه ننویسید؛ یک مشاهده از اجرای واقعی خودتان نیز اضافه کنید. اگر اختلافی میان محاسبه و مشاهده وجود دارد، علتهای ممکن را به ترتیب احتمال فهرست کنید و برای هر کدام آزمون جداگانهای پیشنهاد دهید.
برای پایان جلسه، این پنج مورد را در یک یادداشت نگه دارید: مدل برد، نسخه ابزار، تنظیمات مهم، نتیجه مشاهدهشده و یک خطایی که توانستید رفع کنید. این یادداشتها در پروژه پایانی به مستندات واقعی تبدیل میشوند و به خواننده سایت کمک میکنند آزمایش را روی سختافزار خود با آگاهی انجام دهد.
جمعبندی و ادامه مسیر
در این مرحله با «پروژه نهایی STM32 و مستندسازی» از طریق یک کار عملی آشنا شدید و معیار موفقیت را «نمونه کارکرد، جدول آزمون و فهرست محدودیتها» قرار دادید. ارزش این درس در تکرارپذیری آن است: از یک فرض روشن شروع میکنید، پیکربندی را ثبت میکنید، تنها یک متغیر را تغییر میدهید و خروجی را میسنجید.
برای مطالعه بیشتر، راهنمای رسمی برد NUCLEO-F401RE، مستندات STM32CubeIDE و مستندات HAL مربوط به خانواده F4 را ببینید. در جلسات بعدی همین روش مشاهده، ثبت و عیبیابی را برای پیرامونیهای دیگر به کار میبریم. هر ادعای مربوط به پین، فرکانس یا محدوده ولتاژ باید با سند مدل سختافزاری مورد استفاده بررسی شود.
منابع رسمی: صفحه برد NUCLEO-F401RE؛ STM32CubeIDE؛ آموزش رسمی ST.