هر چند این موارد متناسب با عنوان تاپیک نیست ولی صرفا جهت اطلاع در استفاده از توابع آماده به موارد نیز زیر توجه داشته باشید تا با دید بهتری از آنها استفاده کنید:
---------------------------------------------------------------------
استفاده از توابع آماده مسئله ای است که تمام افراد تازه وارد به حیطه برنامه نویسی میکروکنترلرهای ARM با آن مواجه و ممکن است استفاده از آن برایشان جذاب باشد. در صورتی که آشنایی با این مقوله ندارید :
کتابخانه cmsis چیست؟ | آموزش میکروکنترلرهای ARM
در میکروکنترلرهای STM32 نیز کتابخانه ها و توابع HAL بدین منظور استفاده می شود که با نرم افزار STM32CubeMX نیز قابل ایجاد است.
و اما به نکاتی در این زمینه توجه داشته باشید:
- این کتابخانه ها به نظر سهولت در تنظیمات رجیسترها برای کسانی که نمی خواهند یا نمی توانند تنظیمات را رجیستری انجام دهند، ایجاد شده است.
- در صورتی که
همیشه قصد دارید از توابع آماده برای کار استفاده کنید این موضوع را مد نظر داشته باشید که یک کاربر سطح پایین میکرو هستید. در صورتی که مشکلی در تنظیمات و ... پیش بیاید قادر به پیدا کردن ایراد نیستید. زیرا نمی دانید داخل این توابع چه کاری انجام شده و باید بشود و آیا درست انجام شده یا نه.
توانایی رفع ایراد در صورت بروز مسئله مهمی است که نمی توان آن را نادیده گرفت. اینکه افرادی می گویند من تا الان استفاده کرده ام و دچارمشکل نشدم معیار نیست. اگر شما ایراد پیدا کردید و گیر کردید چه می کنید!؟ فیدبک هایی که از دیگران بوده مواردیکه با آن مواجه شده ایم نشان دهنده این است که ایرادتی وجود دارد.
- در صورتی که پریفرالهایی با رجیستر قبلا پیکربندی اولیه شده است و با توابعی می توان با آن عملی را انجام داد چه ضرورتی دارد حتما از توابع آماده CMSIS و یا HAL برای پیکربندی استفاده شود!؟
- اینکه نرم افزاری هست که خود ایجاد پروژه می کند جالب است ولی مگر چند بار برای یک میکرو نیاز به ایجاد پروژه است؟ (فقط یک بار) و مگر در انجام یک کار که چند ماه ممکن است طول بکشد چند بار می خواهید پریفرال ها را کانفیگ کنید و تغییر دهید؟ شاید یک بار بیشتر لازم نباشد بعد مهم اجرای الگوریم پیاده سازی کار است.
- در جایی که سرعت اجرا مهم است، استفاده از تابع در تابع باعث کاهش سرعت می شود. بنابراین بایستی مستقیما از رجیسترها برای مقدار دهی و مقدار خواندن استفاده شود.
- در صورتی که حجم فلش حافظه میکرویی محدود باشد (STM8) طبیعتا استفاده از کتابخانه های آماده ما را در حجم برنامه محدود می کند.
- اگر مدل میکرویی لازم باشد استفاده کنید که توابع آماده ایی برای آن نباشد، در صورتی که
صرفا یادگرفته باشید با توابع آماده کار کنید نمی توانید راه اندازی اولیه ای از پریفرالها و تغییر در آن داشته باشید.
Telegram: Contact @armeducation---------------------------------------------------------------------
در کار با توابع آماده به این نکته توجه داشته باشید که باید بتوانید
خودتان یک پروژه با این کتابخانه ها ایجاد کنید. این موضوع آنجا اهمیت پیدا می کند که پروژه هایی دارید که هر کدام کاری انجام می دهد ولی هر کدام را به هم اد می کنید با خطاهای متعدد یا عدم کارکرد مواجه می شوید. نه متوجه می شوید خطا چیست و نه راه حلی برای حل آن دارید. ساعت ها و شاید روزها زمان هم برای حل آن صرف می شود و در صورت حل نشدن، محصولی جز اعصاب خوردی تولید نکرده اید!
به طور کلی بهتر است مسیر آموزش به درستی طی شود. وقت کافی برای یادگیری اختصاص دهید تا در میانه راه دچار مشکل نشوید و در صورت بروز مشکل راه حلی برای برون رفت داشته باشید.
Telegram: Contact @armeducation---------------------------------------------------------------------
آیا کتابخانه های مورد استفاده اجازه را می دهد
از چند پریفرال همزمان استفاده شود ؟ تا بحال با این مسئله مواجه شده اید؟
به عنوان نمونه برای راه اندازی اولیه کاری با استفاده از توابع RL کیل، قسمت SD کارت و USB را راه اندازی کرده اید. حال می خواهید هر دو با هم کار کند. آیا چنین امکانی با استفاده از توابع RL کیل داده شده است!؟
می خواهید USB و CAN همزمان در STM32 کار کند. آیا چنین امکانی در این میکرو داده شده است!؟
Telegram: Contact @armeducation
---------------------------------------------------------------------