در صفحه اصلی آموزش میکروکنترلرهای 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 شناخته‌شده است که برای توسعه کد پروژه و دیباگ و خطایابی آن کاربرد دارد.

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

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

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

ادامه مطلب

راه‌اندازی ارتباط I2C در STM32 | قسمت 25 آموزش STM32 با توابع LL

راه‌اندازی ارتباط I2C در STM32 | قسمت 25 آموزش STM32 با توابع LL

در قسمت قبلی با ADC آشنا شدیم و در آموزش‌های قبلی در مورد پروتکل‌های ارتباط سریال صحبت کردیم. در این قسمت می‌خواهیم در مورد یک پروتکل ارتباط سریال دیگر، یعنی Inter-Integrated Circuit یا همان I2C صحبت کنیم. این پروتکل، همان‌طور که ...

ادامه مطلب

راه اندازی ADC با سرعت دو برابر در STM32 | قسمت 24 آموزش STM32 با توابع LL

راه اندازی ADC با سرعت دو برابر در STM32 | قسمت 24 آموزش STM32 با توابع LL

در قسمت قبلی آموزش ساخت تایمر 32 و 64 بیتی را فرا گرفتید و در بخش دهم، با واحد ADC آشنا شدیم و در بخش پانزدهم نحوه دریافت اطلاعات از ADC توسط DMA را دیدیم. در این بخش می‌خواهیم کاری کنم که واحد ADC با سرعت بیشتری نمونه‌برداری کند....

ادامه مطلب

ساخت تایمر 32 و 64 بیتی در STM32 | قسمت بیست و سوم آموزش STM32 با توابع LL

ساخت تایمر 32 و 64 بیتی در STM32 | قسمت بیست و سوم آموزش STM32 با توابع LL

در قسمت قبلی نحوه راه‌اندازی PWM را آموختیم و در این قسمت، می‌خواهیم نحوه ساخت تایمر‌های 32 بیتی و 64 بیتی را بررسی کنیم. همانطور که احتمالا می‌دانید، در میکروکنترلرهای مورد استفاده در این آموزش، همه تایمرها (به جز SysTick) 16 بیت...

ادامه مطلب

PWM

نحوه تولید شکل موج‌های مختلف توسط PWM در STM32 | قسمت بیست و دوم آموزش STM32 با توابع LL

 در بخش قبلی با PWM آشنا شدیم و شدت روشنایی یک LED را به‌وسیله آن کنترل کردیم. در این بخش از سری آموزش STM32 با توابع LL، قصد داریم به تولید شکل موج‌های مختلف به‌وسیله PWM بپردازیم، به‌عبارت‌دیگر می‌خواهیم از PWM به‌عنوان...

ادامه مطلب

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

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

در قسمت قبلی راه‌اندازی LCD Nokia به کمک واحد SPI (نمایش انیمیشن روی LCD Nokia) را به صورت کامل یاد گرفتیم و در بخش‌های قبلی با تایمرها آشنا شدیم و برخی کاربردهای آن‌ها را دیدیم. یکی دیگر از کاربردهای تایمر، حالت PWM (Pluse width ...

ادامه مطلب

نمایش انیمیشن روی LCD Nokia به کمک واحد SPI با STM32 | آموزش STM32 با توابع LL

نمایش انیمیشن روی LCD Nokia به کمک واحد SPI با STM32 | آموزش STM32 با توابع LL

در دو بخش قبل، یک LCD را به کمک واحد SPI را راه‌اندازی کردیم و تصویر و فونت روی آن نمایش دادیم. در این بخش قصد داریم یک انیمیشن روی LCD Nokia نمایش دهیم. در ابتدا باید یک عکس متحرک پیدا کنیم و آن را به فریم‌های جد...

ادامه مطلب

اضافه کردن فونت برای نمایش متن روی LCD Nokia با واحد SPI در STM32 | قسمت نوزدهم آموزش STM32 با توابع LL

اضافه کردن فونت برای نمایش متن روی LCD Nokia با واحد SPI در STM32 | قسمت نوزدهم آموزش STM32 با توابع LL

در بخش قبلی یک LCD Nokia را به کمک واحد SPI را راه‌اندازی کردیم و یک تصویر را روی آن نمایش دادیم. در این بخش قصد داریم یک فونت برای نوشتن در LCD تعریف کنیم و پیام‌های موردنظرمان را روی LCD نمایش دهیم.قبل از هر چیز، نیاز به...

ادامه مطلب

راه‌اندازی LCD Nokia سریال به کمک واحد SPI در STM32 | قسمت هجدهم آموزش STM32 با توابع LL

راه‌اندازی LCD Nokia سریال به کمک واحد SPI در STM32 | قسمت هجدهم آموزش STM32 با توابع LL

در بخش قبلی واحد SPI را راه‌اندازی کردیم و با جزییات آن تا حدودی آشنا شدیم. در این بخش می‌خواهیم به کمک این واحد، یک LCD سریال (Nokia 5110) را راه‌اندازی کنیم. در تصویر زیر نمونه LCD موردنظر و ترتیب پایه‌های آن نشان داده شده است. ...

ادامه مطلب

آموزش STM32 با توابع LL قسمت هفدهم: راه اندازی واحد SPI

آموزش STM32 با توابع LL قسمت هفدهم: راه اندازی واحد SPI

در قسمت قبلی درباره استفاده از DMA برای ارسال اطلاعات از حافظه توسط واحد USART صحبت کردیم. قبل از هرچیز، باید به توضیح پروتکل ارتباطی SPI و مودهای کاری مختلف آن بپردازیم. SPI مخفف Serial Peripheral Interface است که به معنی رابط سر...

ادامه مطلب