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

استفاده از DMA برای ارسال اطلاعات از حافظه توسط واحد USART در STM32 | قسمت شانزدهم آموزش STM32 با توابع LL

استفاده از DMA برای ارسال اطلاعات از حافظه توسط واحد USART در STM32 | قسمت شانزدهم آموزش STM32 با توابع LL

در قسمت قبلی درباره راه‌اندازی واحد ADC و گرفتن اطلاعات توسط DMA صحبت کردیم و در این قیمت می‌خواهیم درباره‌ی استفاده از DMA برای ارسال اطلاعات از حافظه توسط واحد USART صحبت کنیم. همان‌طور که میدانید استفاده از DMA برای انتقال اطلا...

ادامه مطلب

راه‌اندازی واحد ADC توسط DMA

راه‌اندازی واحد ADC توسط DMA در STM32 | آموزش STM32 با توابع LL

در بخش دهم، با واحد ADC و در بخش قبلی هم با ریدایرکت کردن Printf و Scanf آشنا شدیم. در این بخش، می‌خواهیم نحوه‌ی راه‌اندازی واحد ADC توسط DMA (بورد Blue Pill) را توضیح دهیم و البته به کمک واحد DMA از این واحد اطلاعات را دریافت و د...

ادامه مطلب

ریدایرکت printf و scanf به کمک USART در STM32 | آموزش قسمت چهاردهم STM32 با توابع LL

ریدایرکت printf و scanf به کمک USART در STM32 | آموزش قسمت چهاردهم STM32 با توابع LL

در بخش‌های هشتم و نهم، به ترتیب با نحوه ارسال و دریافت اطلاعات توسط واحد USART آشنا شدیم و در قسمت قبلی هم با Timer-Input capture آشنا شدیم. در این بخش، می‌خواهیم واحد USART بورد Blue Pill را راه‌اندازی کنیم و ریدایرکت Printf و Sc...

ادامه مطلب

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

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

در قسمت دوازدهم از آموزش STM32 با توابع LL، در رابطه با تایمرها و نحوه‌ی عملکرد آن‌ها صحبت کردیم و درنهایت واحد تایمر در میکروکنترلرهای STM32 را در حالت TimeBase راه‌اندازی کردیم و زمان 1 ثانیه را اندازه‌گیری کردیم. در این قسمت هم...

ادامه مطلب

Timer

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

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

ادامه مطلب

DAC

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

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

ادامه مطلب

ADC

مبدل آنالوگ به دیجیتال (ADC) در STM32 | قسمت دهم آموزش STM32 با توابع LL

در قسمت نهم از آموزش STM32 با توابع LL، ابتدا چالش بخش Receive یا همان دریافت دیتا در پروتکل UART را بررسی کردیم و در نهایت با استفاده از بهترین روشی که ذکر کردیم، یعنی روش وقفه، این بخش را به صورت عملی بر روی برد راه‌اندازی کردیم...

ادامه مطلب

STM32

دریافت دیتا در پروتکل UART در STM32 | قسمت نهم آموزش STM32 با توابع LL

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

ادامه مطلب

STM32

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

در قسمت هفتم از آموزش STM32 با توابع LL، ابتدا در رابطه با کلیت و ذات وقفه صحبت کردیم و گفتیم که به چه دلایلی وقفه مفید است و باید در سیستم وجود داشته باشد، در ادامه در رابطه با وقفه در میکروکنترلرهای STM32 سری F1 صحبت کردیم و طرز...

ادامه مطلب

STM32

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

در قسمت ششم از آموزش STM32 با توابع LL، در رابطه با GPIO در حالت ورودی صحبت کردیم. نحوه‌ی کار به این صورت بود که مقدار رجیستری که مربوط به پین‌های میکروکنترلر در حالت ورودی بود را می‌خواندیم و پس از آن، متناسب با آن مقدار، متغییری...

ادامه مطلب