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

کتابخانه‌های Low Layer

قبل از هر چیزی باید به این سؤال جواب دهیم که توابع LL در STM32 چه هستند؟ شرکت ST برای راه‌اندازی و توسعه نرم‌افزار برای میکروهای خود، ابزارهایی در اختیار کاربران قرار داده است که ازجمله این ابزارها، کتابخانه‌های LL یا Low Layer هستند. ویژگی بارز این توابع نزدیک بودن به لایه‌ی سخت‌افزار و دسترسی مستقیم به Register های میکروکنترلر است. به همین دلیل استفاده از این توابع به دانش سخت‌افزاری نیاز دارد.

درواقع درایورهای LL باهدف ارائه یک لایه‌ی سریع و سبک نزدیک به سخت‌افزار برای کاربران متخصص، طراحی‌شده است. درایورهای LL شامل بخش‌ها و ویژگی‌های زیر می‌شوند:

آموزش stm32 کتابخانه LL

  • مجموعه‌ای از توابع برای راه‌اندازی ویژگی‌های اصلی دستگاه‌های جانبی (Peripheral)، که منطبق بر پارامترهای مشخص‌شده در ساختارهای داده، نوشته‌شده‌اند.
  • مجموعه‌ای از توابع که ساختارهای داده‌ی مربوط به راه‌اندازی را با مقدارهای ریست، مقداردهی می‌کنند.
  • توابعی برای De-initialization دستگاه‌های جانبی (بازگرداندن رجیستر دستگاه‌های جانبی به مقدارهای پیش‌فرض آن‌ها)
  • یک مجموعه از توابع inline برای دسترسی مستقیم و atomic به رجیسترها
  • استقلال کامل از درایورهای HAL؛ توابع LL را می‌توان به‌تنهایی و به‌صورت مجزا از HAL، یا به‌طور ترکیبی با HAL استفاده کرد.
  • پوشش کامل ویژگی‌های دستگاه‌های جانبی که پشتیبانی می‌شوند.

نکته قابل‌توجه در مورد توابع LL این است که اعمالی که انجام می‌دهند و سرویس‌های ارائه می‌کنند، دقیقاً انعکاس توانایی‌های سخت‌افزاری هستند که در زمان فراخوانی به‌صورت یک عملیات one-shot اجرا می‌شوند. همچنین ازآنجاکه این سرویس‌ها هیچ پروسه‌ای را پیاده نمی‌کنند، نیازی به حافظه برای ذخیره حالت، شمارنده یا اشاره‌گر ندارند. همه‌ی کارها با تغییر محتوای رجیستر مربوط به دستگاه‌های جانبی موردنظر انجام می‌شوند.

در کتابخانه‌های low layer علاوه بر 5 هدرفایل که مربوط به‌ویژگی‌های سیستم و Cortex هستند، به ازای هر دستگاه جانبی یک هدرفایل و یک فایل C وجود دارد. همچنین قابل‌ذکر است که برای LL فایل Configuration وجود ندارد و فایل‌های مربوط به درایورهای LL در پوشه درایورهای HAL قرار دارند.

آموزش stm32 توابع LL

در همه درایورهای low-layer، تنها فایلی که Include می‌شود، فایل CMSIS دستگاه موردنظر است.

ابزارهای مورداستفاده در آموزش STM32 با توابع LL

در این سری آموزش، علاوه بر ابزارهای کوچک و یا خاص سخت‌افزاری یا نرم‌افزاری که برای یک پروژه استفاده می‌شوند (و در همان‌جا معرفی خواهند شد)، از یک بورد آموزشی برای میکروکنترلر STM32F103C8T به نام BluePill و در بعضی آموزش‌ها نیز از بورد STM32F103RET (به همراه بردبورد و تجهیزات ازاین‌دست مثل سیم بردبورد و..) استفاده می‌شود. ابزارهای نرم‌افزاری موردنیاز هم STM32 Cube MX و Keil uVersion5 هستند. نرم‌افزار اول که توسط خود شرکت منتشرشده است، برای پیکربندی و راه‌اندازی پروژه و کد استفاده می‌شود. نرم‌افزار Keil نیز یک IDE شناخته‌شده است که برای توسعه کد پروژه و دیباگ و خطایابی آن کاربرد دارد.

سرو موتور

آموزش STM32 توابع LL قسمت 36: راه‌اندازی و کنترل Servo Motor

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

ادامه مطلب

ارتباط OneWire

آموزش STM32 توابع LL قسمت 35: ارتباط OneWire

در قسمت قبلی درباره‌ی رابط گرافیکی برای wave player صحبت کردیم، اما در این بخش می‌خواهیم درباره‌ی ارتباط OneWire که بخش مهمی در دنیای الکترونیک هست صحبتی داشته باشیم. در طول این آموزش با پروتکل‌های ارتباطی مختلفی کارکردیم که هرکد...

ادامه مطلب

رابط گرافیکی wave player

آموزش STM32 با توابع LL قسمت 34: رابط گرافیکی برای wave player

در دو قسمت قبلی در مورد ساخت wave player با stm32 صحبت کردیم، در این بخش می‌خواهیم یک رابط گرافیکی برای wave player طراحی کنیم پس با سیسوگ همراه باشید.برای نمایش اطلاعات گرافیکی مورد نظر از نمایشگر Nokia 1661 استفاده می‌کنیم ک...

ادامه مطلب

آموزش STM32 با توابع LL قسمت سی‌ و سوم: لیست پخش در wave player

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

ادامه مطلب

آموزش STM32 با توابع LL قسمت سی‌ و دوم: راه‌اندازی یک wave player

در قسمت قبلی راه‌اندازی و استفاده از کارت‌ حافظه SD را آموختیم و در این قسمت می خواهیم راه‌اندازی یک wave player را به شما همراهان سیسوگ آموزش دهیم. همان‌طور که می‌دانید فرمت wave (فایل‌های با پسوند.wav) یکی از فرمت‌های رایج برای...

ادامه مطلب

آموزش STM32 با توابع LL قسمت 31: راه‌اندازی کارت‌ حافظه SD

در قسمت قبلی راه اندازی ماژول شتاب ینج را فرا گرفتیم و در این قسمت قرار است راه‌اندازی و استفاده از کارت‌ حافظه SD را به صورت کلی به شما آموزش بدهیم. بهره‌گیری از کارت‌ حافظه SD در کنار حافظه‌های موجود در میکرو، می‌تواند درزمینه‌...

ادامه مطلب

راه‌اندازی ماژول شتاب سنج

آموزش STM32 با توابع LL قسمت سی‌ام: راه‌اندازی ماژول شتاب سنج

در قسمت قبلی راه‌اندازی تایمر نگهبان پنجره‌ای (WWDG) را آموختیم و در این قسمت می‌خواهیم راه‌اندازی ماژول شتاب سنج و ژیروسکوپ LSM6DS3 را بررسی کنیم. ماژول LSM6DS3 یک ماژول چندکاره است که درگوشی‌های هوشمند نیز به‌کار می‌رود و امکان ...

ادامه مطلب

آموزش STM32 با توابع LL قسمت 29: تایمر نگهبان پنجره‌ای

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

ادامه مطلب

IWDG

آموزش STM32 با توابع LL قسمت 28: تایمر نگهبان مستقل

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

ادامه مطلب

آموزش STM32 با توابع LL قسمت 27: کالیبره کردن RTC

در بخش قبلی RTC را راه‌اندازی کردیم و زمان و تاریخ را به‌وسیله آن نگهداری کردیم. نکته‌ای که به آن اشاره نشد دقت اندازه‌گیری زمان است. دقت اندازه‌گیری ما به فرکانس منبع کلاک RTC وابسته است. همان‌طور که دیدیم از منبع LSE به‌عنوان کل...

ادامه مطلب