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

کتابخانه‌های Hardware Abstraction Layer

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

  • هر درایور HAL، شامل مجموعه‌ای از توابع است که اکثر ویژگی‌های Peripheral مربوطه را در هر خانواده از میکروکنترلرهای STM32، پوشش می‌‎دهند.
  • وجود 3 مدل API programming مختلف که عبارتند از: polling ‏,Interrupt, DMA
  • API های کاملا سازگار با RTOS :
    • API ها کاملا Reentrant هستند.
    • استفاده دقیق از timeoutها در حالت polling
  • پشتیبانی از استفاده و فراخوانی چندگانه هر یک از دستگاه‌های جانبی (مثل USART1 یا USART2)
  • همه‌ی API های HAL از مکانیسم توابع user-callback استفاده می‌کنند.
  • مکانیسم قفل کردن: دسترسی امن به سخت‌افزار برای جلوگیری از دسترسی‌های نامطمئن به منابع.

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

تایمر در حالت Encoder

تایمر در حالت Encoder برای STM32 | قسمت شانزدهم آموزش STM32 با توابع HAL

در قسمت قبل از سری آموزش STM32 با توابع HAL، در مورد تایمرهای نگهبان مستقل و پنجره‌ای (IWDG و WWDG)، صحبت شد. در این قسمت، تایمر در حالت Encoder و کاربرد آن را بررسی می‌کنیم. با سیسوگ همراه باشید.Rotary Endcoder چیست و چگونه...

ادامه مطلب

تایمرهای نگهبان IWDG و WWDG در STM32 | قسمت 15 آموزش STM32 با توابع HAL

تایمرهای نگهبان IWDG و WWDG در STM32 | قسمت 15 آموزش STM32 با توابع HAL

در قسمت قبل از سری آموزش STM32 با توابع HAL، در مورد PWM و نحوه تولید شکل موج توسط آن، صحبت شد. در این قسمت، تایمرهای نگهبان مستقل و پنجره‌ای (IWDG و WWDG) را بررسی می‌کنیم. با سیسوگ همراه باشید. تایمر نگهبان مستقل (Independent w...

ادامه مطلب

کار با PWM با STM32 | قسمت چهاردهم آموزش STM32 با توابع HAL

کار با PWM با STM32 | قسمت چهاردهم آموزش STM32 با توابع HAL

در قسمت قبل از سری آموزش STM32 با توابع HAL، در مورد حالت‌های Input capture و Output compare در تایمرها، صحبت شد. در این قسمت، جزئیات کار با PWM و نحوه تولید شکل موج‌های مختلف به‌وسیله آن را بررسی می‌کنیم.همان‌طور که در قس...

ادامه مطلب

حالت‌ Input capture و حالت Output compare در تایمر | قسمت 13 آموزش STM32 با توابع HAL

حالت‌ Input capture و حالت Output compare در تایمر | قسمت 13 آموزش STM32 با توابع HAL

در قسمت قبل از سری آموزش STM32 با توابع HAL، راجع به نحوه اتصال تایمرها به هم و ساخت تایمر بزرگ‌تر و همچنین کاربرد نمونه‌ای از آن، صحبت شد. در این قسمت، حالت‌ Input capture و حالت Output compare در تایمرها را بررسی می‌کنیم. با سیس...

ادامه مطلب

ساخت تایمر بزرگ‌تر

ساخت تایمر بزرگ‌تر در STM32 | آموزش STM32 با توابع HAL قسمت 12

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

ادامه مطلب

معرفی تایمرها در STM32 با توابع HAL | آموزش STM32 با توابع HAL

معرفی تایمرها در STM32 با توابع HAL | آموزش STM32 با توابع HAL

در قسمت قبل از سری آموزش STM32 با توابع HAL، در مورد نحوه Redirect کردن توابع کتابخانه stdio صحبت شد. در این قسمت می خواهیم به معرفی تایمر ها بپردازیم به نوعی، تایمرهای میکروکنترلر STM32F103C8 را معرفی می‌کنیم و در مورد کاربردهای ...

ادامه مطلب

ریدایرکت کردن توابع stdio

ریدایرکت کردن توابع stdio در STM32 | قسمت دهم آموزش STM32 با توابع HAL

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

ادامه مطلب

دریافت اطلاعات به وسیله UART

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

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

ادامه مطلب

واحد USART

واحد USART در STM32 | قسمت هشتم آموزش STM32 با توابع HAL

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

ادامه مطلب

وقفه ها در HAL

وقفه‌ ها در HAL و External Interrupt برای STM32 | سمت 7 آموزش STM32 با توابع HAL ق

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

ادامه مطلب