در قسمت چهارم از مجموعه آموزشی میکروکنترلر STM8 نحوهکار با نرمافزار کاربردی STM8CubeMX را آموزش داد. حال، قبلاز شروع برنامهنویسی برای میکروکنترلر STM8 به یکسری اطلاعات نیاز داریم که با همراهی ما این اطلاعات را میتوانید بدستآورید. همچنین با کتابخانه استاندارد SPL و محیط نرمافزاری STVD آشنا میشوید:
دیتاشیت (MCU (STM8S003 که از آن استفاده میکنیم.
راهنمای کاربر STM8SVLDiscovery Board.
اینها اطلاعاتی هستند که درطول دوره یادگیری به آنها نیاز داریم. Reference Manual ها همهجا مورداستفاده هستند و جزئیات بلوکهای سختافزاری را دراختیار قرار میدهند، که شامل توضیحات رجیستری، نامگذاری، حالت عملکرد سختافزار و غیره است. که این مرجع برای تمام میکروهای STM8S و STM8AF تهیه شدهاست و تنها یک STM8 مشخص را بیان نمیکند. همانطورکه میدانید در خانوادهای از میکروها، هر MCU با MCUهای دیگر متفاوت است. بیشتر این اختلافها به ظرفیت حافظه و تعداد پینها برمیگردد.
گاهیاوقات مشخصات الکتریکی نیز متفاوت است و برای بدستآوردن مشخصات کلی MCU موردنظر باید به دیتاشیت آن مراجعهکنیم. درنهایت راهنمای کاربر Discovery board برای تخصیص پینها و طرحهای سختافزاری مناسب است که پیشنهاد میکنم از این الگو استفاده کنید.
حال، با نصب برنامههای Cosmic، STVD و STVP ابزارهای نرمافزاری ما آماده هستند. دو روش برای پروگرامکردن STM8 وجود دارد. اولین روش استفادهاز روشهای سنتی برای برنامهنویسی است. روش دوم، استفادهاز روشهای متداول برنامهنویسی بااستفادهاز کتابخانههای استاندارد توسعهیافته توسط STM است که همگانی هستند. بدینمعنی که کد نوشته به زبان C برای هر کامپایلری که از این کتابخانهها استفاده میکند بدوناینکه نیازیبه تغییر، مورداستفاده است. این کتابخانهها “کتابخانههای استاندارد محیطی(Standard Peripheral Libraries (SPL” نامیده میشوند. بااستفادهاز این کتابخانهها دیگر نیازیبه تعریف سطوح اولیه برنامهنویسی نیست. کتابخانهها بهگونهای برنامهنویسی شدهاند که تنها لازماست برنامهنویس مشخصات سختافزاری تراشهها و برخیاز اصول این سختافزارها را بداند.
در قسمت برنامهنویسی تنها کافیاست برنامهنویس خواص و مقادیر موردنظر را تنظیم نماید. SPL بقیه موارد را مدیریت میکند. بهعنوان مثال، هنگام تنظیم UART ، تنها نیازبه تنظیم وقفهها، ویژگیهای I/O و ویژگیهای UART مانند سرعت بوت (baud rate)، توازن و… است. همه این تنظیمات با اعداد و متون معنیدار انجام میشود.
کتابخانههای استاندارد محیطی (SPL) را برای میکروکنترلرهای STM میتوانید از اینجا و یا اینجا دانلود کنید.
در این مقاله از SPL استفاده شدهاست زیرا برای STM8s استفادهاز روشهای قدیمی برای پیکربندی بهصورت دستی چندان مناسب نیست. بنابراین، دانلود فایل بالا الزامی است. باید فایل زیپ SPL دانلودشده را نگهداری کنید تا در زمانیکه همهچیز خرابشد بتوانید از آن استفادهکنید.
دو پوشه به نامهای “inc” و “src” ایجاد کنید. پوشه “inc” با تمام فایلهای هدر (فایل های با پسوند “.h”) که از فایل زیپ استخراج میشوند پر میشود. بطور مشابه، گوشه “src” با فایلهای سورس (فایلهایی با پسوند “.c”) پر میشود. برای راحتی بیشتر، بهتر است این پوشهها را بهصورت فایل زیپ نگهداری کنید زیرا هربار که پروژه جدیدی ایجاد کنیم به فایلهای این پوشهها نیاز دارید. شما میتوانید این فایلها را در پوشه پروژه خود کپیکنید و یا میتوانید آنرا بطور مرکزی درجایی نگهداری کنید. من ترجیح میدهم از روش اول استفادهکنم و هیچ مشکلی برای سایر پروژههایی که نیازیبه تغییر ندارند پیش نمیآید. تنها بخشیاز فضای هارددیسک را هزینه میکنید ولی این روش برای مبتدیان کمتر گیجکننده و بدون دردسر است. تمامی فایلها را بهصورت زیر استخراج نمایید:
همانطورکه میبینید تعداد فایلهای هدر از فایلهای سورس بیشتر است. بهاین دلیل که دوتا فایل هدر stm8s.h و stm8s_conf.h که نوع پردازنده وخواص پردازنده را مشخص میکند اضافه شدهاند. برای راهاندازی stm8s_conf.h باید خط زیر را در فایل آن کامنت و یا غیرفعال نمایید، درغیر اینصورت کامپایلر برای شما پیغام خطا نمایش میدهد. همیشه در ابتدای پروژهها این را خط را چک کنید.
#define USE_FULL_ASSERT (1)
ایجاد یک پروژه جدید در نرمافزار STVD
بافرضاینکه STVD، STVP و Cosmic بهدرستی نصبشدهباشند، خواهیمدید که چگونه یک پروژه جدید ایجاد کنیم.
- در ابتدا برنامه STVD را اجرا کنید.
- File >> New Workspace را انتخاب کنید.
- Create workspace and project را انتخاب نمایید.
- پوشه workspace و نام workspace را انتخاب نمایید.
- نام پروژه را وارد نمایید و درقسمت toolchain ،گزینه STM8 Cosmic را انتخاب نمایید. نیاز هست که مسیری که کامپایلر در آن نصبشده را مشخص نمایید. این مسیر در کامپیوتر من بهصورتزیر است:
C:\Program Files (x86)\COSMIC\FSE_Compilers\CXSTM8
- نوع میکروکنترلر STM8 مورداستفاده خود را انتخابنمایید.
- حال فایلهای هدر و سورس را از پوشه SPL به برنامه ساختهشده در محیط نرمافزاری STVD اضافه نمایید.
- بعداز اضافهشدن فایلها زبانه workspace بهصورتزیر تغییر میکند:
نکته: واردکردن کتابخانههای مشخصشده در اینجا برای شما کافیاست و اگر در فایل دانلود کتابخانههای دیگری وجود دارد لزومیبه اضافهکردن آنها نیست.
- محل فایل C را از برگه source در نرمافزار STVD انتخابکنید و سپس در قسمتبالا “include “stm8s.h# را بنویسید:
- باید فایل هدر h را ویرایش نمایید و همانطورکه در زیر نشانداده شدهاست، نام میکروکنترلر مورداستفادهتان را از حالت کامنت خارج نمایید.
کد را یکبار بااستفادهاز کلیدهای CTRL + F7 یا با فشاردادن دکمه “compile” کامپایل کنید. اگر همهچیز درست باشد، هیچ خطایی یا پیام هشدار وجود ندارد. دلیل این کامپایلکردن این است که از ویژگی قدرتمند کدکننده کامپایلر استفاده کنید. بااستفادهاز این ویژگی، میتوانید فقط با نوشتن چند حرف اول و سپس بااستفادهاز فشردن همزمان کلیدهای CTRL + SPACE کد را پیشبینی یا تکمیل کنید.
در طول نوشتن برنامه در محیط نرمافزاری STVD، شما ممکناست تعداد زیادی خطا برای فایلهای سختافزاری که در میکروکنترلر STM8S موردنظر شما دردسترس نیستند، دریافتکنید. بهعنوانمثال، سختافزار CAN در STM8S003F3 دردسترس نیست و بنابراین اگر شما فایلهای CAN سورس و هدر اضافهکردهباشید خطایی برای آن دریافت خواهید کرد. پساز شناسایی پیامهای خطا، فایلهای هدر و فایل سورس مربوطه برای آن سختافزار خاص باید حذف شوند.
یک رویکرد عاقلانه برای جلوگیری از این مسئله این است که دیتاشیت میکروکنترلر موردنظر خود را مطالعه نمایید و درمورد سختافزارهای درون آن اطلاعات کسبکنید. همانطورکه در زیر دیده میشود، بخش محتوای دادهای درون دیتا شیت این موضوع را نشان میدهد:
از STM8CubeMX هم میتوان برای بدستآوردن اطلاعات سختافزاری میکروکنترلر استفادهکرد، اما همانطورکه قبلاً هم مطرحشد برخیاز لوازمجانبی سختافزاری که ورودی-خروجی ندارند در آن دیده نمیشوند.
بهطورمشابه، اگر کد شما از وقفه استفاده نمیکند، فایلهای سورس و هدر وقفه (stm8s_it.h و stm8s_it.c) باید از محیط STVD حذف شوند. گاهی بهتر است فقط آن فایلهایی را که برای تکمیل یک پروژه نیاز دارید اضافهکنید. بهعنوان مثال، اگر پروژه شما فقط از GPIOها استفاده میکند، بهتر است تنها فایلهای GPIO سورس و هدر ( stm8s.h و stm8s_conf.h) اضافهشوند. البته من این روش را تنها برای کسانی که با برنامهنویسی STM8 بهخوبی آشنایی دارند توصیه میکنم زیرا در اکثرموارد شما به سختافزارهایی نیاز دارید که به یکدیگر وابسته هستند. بهعنوانمثال، هنگامیکه از SPI استفاده میکنید، به هردو ماژول GPIO و SPI نیاز دارید. اگر شما این وابستگیها را درک میکنید، میتوانید تنها فایلهای موردنیاز را اضافهکنید. شما میتوانید ماژولهای سختافزاری غیرضروری را در فایل هدر stm8s_conf.h کامنت کنید تا فرآیند کامپایلر را سرعت ببخشید. (البته یکسری تعریف structure اضافی هم داخل stm8s.h باقی میماند که نیازی نیست وقتتان را برای کامنتکردن آنها بگذارید.) پساز نوشتن برنامه، همیشه باید با کلیک برروی دکمه build/rebuild، پروژه خود را بسازید و یا بازسازی کنید. با این کار فایل خروجی نهایی S19 در هردو پوشه Debug یا Release باتوجهبه حالتانتخابشده تولید میشود. اگر همهچیز مرتب باشد، هیچ خطایی یا پیام هشداری وجود ندارد.
درنهایت، من هیچ نرمافزار شبیهسازی مفیدی مانند Proteus VSM یا Electronic Workbench که از خانواده میکروکنترلر STM8 پشتیبانی کند پیدا نکردهام. بنابراین، ما باید کد خود را با سختافزار واقعی امتحان کنیم. این ممکناست دشوار باشد اما درواقع اینطور نیست.ما میتوانیم از چنین نرمافزارهایی برای ساخت مدل های STM8 استفاده کنیم و PCBها را تولید کنیم. از آنجاکه شبیهسازیها چندان دقیق و واقعی نیستند، شخصاً آنها را دوست ندارم.
لطفاً فایل راهنما SPL را مطالعه کنید این فایل در فایل زیپ شده SPL تحت نام stm8s-a_stdperiph_lib_um.chm قراردارد. در آن هر تابع، تعریف، ساختار داده، تمام ماژولهای سختافزاری داخلی و نحوهی استفادهاز آنها بهدرستی توضیح دادهشدهاست. این یک فایل اطلاعاتی بسیارمهم و بهترین دوست شما در برنامهنویسی میکروکنترلر STM8 است. کتاب مرجع نیز بهاندازه همین فایل مهم است و قابلیتهای تمام سختافزار داخلی را مشخص میکند.
درقسمتبعد قصدداریم نحوه آپلودکردن برنامه روی STM8 را آموزشدهیم. با ما همراه باشید.
منبع: سیسوگ