در این پست از سایت اِمیک, اولین جلسه از مجموعه آموزش برنامه نویسی میکروکنترلرهای ARM سری STM32 را با عنوان « آموزش برنامه نویسی میکروکنترلرهای ARM سری STM32 – جلسه اول: مقدمه » آغاز می کنیم و با اهداف، ساختار و مسیر این دوره آموزشی آشنا خواهیم شد.
میکروکنترلرها یکی از مهم ترین اجزای سیستم های الکترونیکی هستند و امروزه در طیف گسترده ای از تجهیزات صنعتی، سیستم های کنترلی، تجهیزات هوشمند، لوازم خانگی و پروژه های الکترونیکی مورد استفاده قرار می گیرند. در میان خانواده های مختلف میکروکنترلرها، STM32 یکی از خانواده های پرکاربرد و محبوب است که توسط شرکت STMicroelectronics تولید می شود. این میکروکنترلرها به دلیل امکانات سخت افزاری متنوع، قدرت پردازشی مناسب و ابزارهای توسعه قدرتمند، مورد توجه مهندسان و علاقه مندان به الکترونیک قرار گرفته اند.

در این دوره آموزشی قصد داریم برنامه نویسی و کار با میکروکنترلرهای STM32 مبتنی بر معماری ARM را به صورت مرحله به مرحله، اصولی و پروژه محور آموزش دهیم.
در طول این دوره، با میکروکنترلرهای STM32، بخش ها و واحدهای مختلف آن ها و امکانات و قابلیت های این میکروکنترلرها آشنا می شویم. همچنین یاد می گیریم چگونه این میکروکنترلرها را برنامه نویسی کنیم و از امکانات مختلف آن ها برای انجام کارهای گوناگون و پیاده سازی پروژه های الکترونیکی استفاده کنیم.
در این آموزش تلاش می کنیم علاوه بر معرفی مفاهیم تئوری، نحوه استفاده عملی از امکانات میکروکنترلر را نیز بررسی کنیم. به این ترتیب، پس از یادگیری هر بخش، می توانیم با انجام یک پروژه عملی، مطالب آموزش داده شده را بهتر درک کنیم و نحوه استفاده از آن ها را در عمل یاد بگیریم.
هدف از این دوره آموزشی
در این دوره قصد داریم برنامه نویسی میکروکنترلرهای STM32 را از پایه و به صورت مرحله به مرحله آموزش دهیم تا بتوانید با بخش های مختلف این میکروکنترلرها آشنا شوید و از امکانات آن ها در پروژه های الکترونیکی استفاده کنید.
در پایان این دوره، شما با موارد زیر آشنا خواهید شد:
- با ساختار داخلی میکروکنترلرهای STM32 و بخش ها و واحدهای مختلف آن ها آشنا می شوید.
- یاد می گیرید هر یک از واحدهای سخت افزاری میکروکنترلر چه کاری انجام می دهند و چگونه می توان از آن ها استفاده کرد.
- با رجیسترهای میکروکنترلر آشنا می شوید و یاد می گیرید چگونه آن ها را برای انجام کارهای مختلف تنظیم کنید.
- یاد می گیرید چگونه میکروکنترلر STM32 را با استفاده از رجیسترهای آن برنامه نویسی کنید.
- با کتابخانه HAL آشنا می شوید و یاد می گیرید چگونه از توابع آماده آن برای برنامه نویسی میکروکنترلر استفاده کنید.
- یاد می گیرید چگونه با استفاده از نرم افزار STM32CubeMX تنظیمات اولیه میکروکنترلر را انجام دهید و کدهای مورد نیاز را تولید کنید.
- با نرم افزار Keil آشنا می شوید و یاد می گیرید چگونه برنامه های خود را در آن بنویسید، کامپایل کنید و آماده اجرا نمایید.
- یاد می گیرید چگونه با استفاده از پروگرامر ST-Link V2 برنامه های نوشته شده را روی میکروکنترلر اجرا کنید.
- در نهایت می توانید با استفاده از امکانات مختلف میکروکنترلر STM32، پروژه های عملی و کاربردی طراحی و پیاده سازی کنید.
روش آموزش در این دوره
در این دوره، برنامه نویسی میکروکنترلرهای STM32 را به صورت مرحله به مرحله و پروژه محور آموزش می دهیم. برای آموزش هر یک از واحدهای سخت افزاری میکروکنترلر، ابتدا مفاهیم تئوری و نحوه عملکرد آن واحد را بررسی می کنیم و سپس رجیسترهای مربوط به آن واحد را بررسی می کنیم و نحوه تنظیم و استفاده از آن ها را یاد می گیریم. در ادامه نیز روش راه اندازی و برنامه نویسی همان واحد با استفاده از کتابخانه HAL را آموزش می دهیم.
برای اینکه مطالب فقط به مباحث تئوری محدود نشوند، در پایان آموزش هر بخش یک پروژه عملی اجرا می کنیم تا بتوانیم از آموخته های خود استفاده کنیم و نحوه عملکرد آن واحد سخت افزاری را در عمل ببینیم.
همانطور که گفته شد در این دوره، برای برنامه نویسی و راه اندازی واحدهای مختلف میکروکنترلر از دو روش استفاده خواهیم کرد:
1. برنامه نویسی مستقیم با استفاده از رجیسترها (Register Level Programming)
در این روش، واحدهای سخت افزاری میکروکنترلر را مستقیما با استفاده از رجیسترهای مربوط به آن ها کنترل می کنیم. رجیسترها بخش هایی از سخت افزار میکروکنترلر هستند که با نوشتن و خواندن مقادیر مشخص در آن ها می توان تنظیمات مختلفی را انجام داد.
در این شیوه برنامه نویسی، یاد می گیریم هر رجیستر چه وظیفه ای دارد، چه مقادیری باید در آن قرار دهیم و چگونه از طریق آن، واحد سخت افزاری مورد نظر را کنترل کنیم. با این روش، شناخت بهتری از ساختار داخلی میکروکنترلر و نحوه عملکرد بخش های مختلف آن به دست می آوریم.
2. برنامه نویسی با استفاده از کتابخانه HAL
کتابخانه HAL مجموعه ای از توابع آماده است که توسط شرکت ST برای برنامه نویسی و راه اندازی واحدهای سخت افزاری میکروکنترلرهای STM32 ارائه شده است.
با استفاده از این کتابخانه، دیگر نیازی نیست تمام تنظیمات سخت افزاری را به صورت مستقیم و با نوشتن مقادیر در رجیسترها انجام دهیم. در عوض، می توانیم با استفاده از توابع آماده HAL، واحدهای مختلف میکروکنترلر را راه اندازی و کنترل کنیم. این روش باعث ساده تر شدن برنامه نویسی و سرعت بیشتر در توسعه پروژه ها می شود.
در آموزش هر واحد سخت افزاری، ابتدا روش برنامه نویسی مستقیم با استفاده از رجیسترها را یاد می گیریم و سپس همان واحد را با استفاده از کتابخانه HAL راه اندازی می کنیم. در پایان نیز با انجام پروژه های عملی، نحوه استفاده از هر دو روش را به صورت کاربردی بررسی خواهیم کرد.
سخت افزار مورد استفاده در این دوره
در این دوره آموزشی، برای تمام مثال ها و پروژه های عملی از میکروکنترلر STM32F103C8T6 استفاده خواهیم کرد. این میکروکنترلر از محصولات شرکت STMicroelectronics است و به دلیل امکانات سخت افزاری مناسب، قدرت پردازشی خوب و قیمت مقرون به صرفه، گزینه مناسبی برای یادگیری برنامه نویسی و کار با میکروکنترلرهای STM32 محسوب می شود. برای اطلاعات بیشتر در مورد این میکروکنترلر، پست “آشنایی با میکروکنترلر STM32F103C8T6” را مطالعه کنید.

برای انجام پروژه های عملی، از مینی هدر برد STM32F103C8T6 Blue Pill استفاده می کنیم. این برد کوچک، میکروکنترلر مورد نظر را در اختیار ما قرار می دهد و دسترسی به پایه های آن را آسان می کند. به کمک این برد می توانیم مدارها و اتصالات سخت افزاری مورد نیاز برای پروژه های مختلف را به سادگی پیاده سازی کنیم و پروژه های عملی این دوره را سریع تر و راحت تر روی میکروکنترلر اجرا کنیم. برای اطلاعات بیشتر در مورد این برد، پست “آشنایی با مینی هدر برد STM32F103C8T6 Blue Pill” را مطالعه کنید.

برای انتقال برنامه به میکروکنترلر و همچنین اشکال زدایی برنامه ها، از پروگرامر ST-Link V2 استفاده خواهیم کرد. این پروگرامر از طریق رابط SWD به میکروکنترلر متصل می شود و امکان پروگرام کردن و دیباگ برنامه ها را فراهم می کند. برای اطلاعات بیشتر در مورد این پروگرامر و نحوه استفاده از آن، پست “آشنایی با پروگرامر ST-Link V2” را مطالعه کنید.

با مطالعه پست های معرفی شده در این بخش، با سخت افزارهای مورد استفاده در این دوره آشنا خواهید شد و آمادگی لازم برای شروع پروژه های عملی را به دست خواهید آورد.
زبان برنامه نویسی مورد استفاده
در تمام بخش های این دوره آموزشی، برای برنامه نویسی میکروکنترلر STM32 از زبان برنامه نویسی C استفاده خواهیم کرد.
زبان C یکی از پرکاربردترین زبان های برنامه نویسی در زمینه میکروکنترلرها و سیستم های Embedded است. این زبان به دلیل سرعت اجرای بالا، سادگی نسبی و امکان دسترسی مستقیم به بخش های سخت افزاری میکروکنترلر، یکی از گزینه های مناسب برای برنامه نویسی میکروکنترلرها به شمار می رود.
در این دوره، هم برنامه نویسی مستقیم با استفاده از رجیسترهای میکروکنترلر و هم برنامه نویسی با استفاده از کتابخانه HAL را با زبان C انجام خواهیم داد.
پیش نیازهای دوره آموزشی
پیش نیاز اصلی این دوره، آشنایی با زبان برنامه نویسی C است. زیرا در تمام مراحل آموزش، برای نوشتن برنامه ها، کار با رجیسترهای میکروکنترلر و استفاده از توابع کتابخانه HAL از این زبان استفاده خواهیم کرد.
بنابراین، بهتر است قبل از شروع دوره با مفاهیم اصلی زبان C مانند متغیرها، انواع داده، عملگرها، دستورات شرطی، حلقه ها، توابع، آرایه ها، اشاره گرها و عملیات بیتی آشنایی داشته باشید.
همچنین آشنایی اولیه با میکروکنترلرها و مفاهیم پایه الکترونیک دیجیتال می تواند به درک بهتر مطالب کمک کند. اما نیازی نیست در این زمینه تخصص داشته باشید، زیرا مباحث مورد نیاز در طول دوره و هم زمان با آموزش بخش های مختلف میکروکنترلر STM32 توضیح داده خواهند شد.
لوازم و نرم افزارهای مورد نیاز
برای شروع برنامه نویسی میکروکنترلرهای STM32 و دنبال کردن آموزش های این دوره، به چند وسیله سخت افزاری و نرم افزار نیاز داریم. با تهیه این وسایل و نصب نرم افزارهای مورد استفاده، می توانید مثال ها و پروژه های عملی را همزمان با آموزش اجرا کنید و نتیجه برنامه نویسی خود را روی یک میکروکنترلر واقعی مشاهده کنید.
لوازم سخت افزاری مورد نیاز
برای انجام پروژه های عملی این دوره، به وسایل سخت افزاری زیر نیاز خواهید داشت:
- مینی هدر برد STM32F103C8T6 Blue Pill: این برد در تمام آموزش ها و پروژه های عملی دوره به عنوان سخت افزار اصلی مورد استفاده قرار می گیرد. تمامی مثال های برنامه نویسی و راه اندازی واحدهای مختلف میکروکنترلر را بر اساس این برد انجام خواهیم داد.
- پروگرامر ST-Link V2: برای انتقال برنامه های نوشته شده به میکروکنترلر و همچنین اشکال زدایی برنامه ها از پروگرامر ST-Link V2 استفاده می کنیم. این پروگرامر از طریق رابط SWD به میکروکنترلر متصل می شود و امکان پروگرام کردن و دیباگ برنامه ها را فراهم می کند.
توصیه می کنیم قبل از شروع آموزش های عملی، این دو وسیله را تهیه کنید تا بتوانید همزمان با یادگیری مطالب، پروژه ها را نیز اجرا کرده و نتیجه کار خود را روی سخت افزار واقعی مشاهده کنید.
نرم افزارهای مورد نیاز
برای تنظیمات اولیه میکروکنترلر، ایجاد پروژه، نوشتن برنامه و انتقال آن به میکروکنترلر، در این دوره از نرم افزارهای STM32CubeMX و Keil MDK استفاده خواهیم کرد.
- STM32CubeMX: این نرم افزار برای انجام تنظیمات اولیه میکروکنترلر و پیکربندی واحدهای سخت افزاری مختلف مانند RCC، GPIO و سایر بخش های مورد نیاز پروژه استفاده می شود. پس از انجام تنظیمات، STM32CubeMX فایل های پروژه و کدهای اولیه مورد نیاز را تولید می کند. به این ترتیب، نیازی نیست تمام مراحل اولیه راه اندازی میکروکنترلر را از ابتدا بنویسیم.
- Keil MDK: پس از انجام تنظیمات و ایجاد پروژه در STM32CubeMX، فایل پروژه را در نرم افزار Keil باز می کنیم. در این محیط، برنامه اصلی خود را می نویسیم و کدهای مورد نیاز برای اجرای عملکردهای مختلف را به پروژه اضافه می کنیم. در نهایت، برنامه را با استفاده از Keil کامپایل کرده و از طریق پروگرامر ST-Link V2 روی میکروکنترلر منتقل و اجرا می کنیم.
در طول دوره، علاوه بر استفاده از STM32CubeMX برای ایجاد و پیکربندی پروژه، هر یک از واحدهای سخت افزاری را به دو روش برنامه نویسی مستقیم با استفاده از رجیسترها و برنامه نویسی با استفاده از کتابخانه HAL راه اندازی خواهیم کرد.
- STM32CubeProgrammer: این نرم افزار یکی دیگر از ابزارهای شرکت ST برای پروگرام کردن میکروکنترلرهای STM32 است. با استفاده از آن می توان برنامه ها را خارج از محیط Keil نیز روی میکروکنترلر منتقل کرد. البته در روش اصلی این دوره، برنامه های نوشته شده را مستقیما از طریق نرم افزار Keil و پروگرامر ST-Link V2 روی میکروکنترلر اجرا خواهیم کرد. بنابراین نصب STM32CubeProgrammer برای دنبال کردن آموزش های این دوره ضروری نیست.
بنابراین، برای شروع این دوره کافی است نرم افزارهای STM32CubeMX و Keil MDK را روی کامپیوتر خود نصب کنید و مینی هدر برد STM32F103C8T6 Blue Pill و پروگرامر ST-Link V2 را نیز در اختیار داشته باشید.
با فراهم کردن این تجهیزات و نرم افزارها، می توانید تمام آموزش ها و پروژه های عملی این دوره را مرحله به مرحله دنبال کرده و روی میکروکنترلر واقعی اجرا کنید.
ساختار و مسیر آموزش
این دوره آموزشی در قالب چندین پست مرتبط با یکدیگر تهیه می شود. در هر پست، یکی از واحدهای سخت افزاری میکروکنترلر STM32 را بررسی می کنیم و با نحوه عملکرد و کاربرد آن آشنا می شویم. سپس رجیسترهای مربوط به آن واحد را معرفی کرده و نحوه برنامه نویسی و راه اندازی آن را به دو روش، یعنی برنامه نویسی مستقیم با استفاده از رجیسترها و برنامه نویسی با استفاده از کتابخانه HAL، آموزش می دهیم. در پایان هر بخش نیز یک پروژه عملی انجام خواهیم داد تا بتوانید مطالب یاد گرفته شده را در عمل به کار ببرید.
در این پست، با ساختار و شیوه آموزش این دوره آشنا شدیم. در پست های بعدی، به ترتیب واحدهای مختلف میکروکنترلرهای STM32 را بررسی می کنیم و نحوه برنامه نویسی و راه اندازی هر یک را آموزش خواهیم داد.
در پست بعدی، یعنی جلسه دوم این دوره، آموزش برنامه نویسی و کار با میکروکنترلرهای STM32 را با معرفی واحد RCC که مخفف عبارت Reset and Clock Control هست، آغاز می کنیم. این واحد وظیفه مدیریت کلاک میکروکنترلر و کنترل ریست بخش های مختلف آن را بر عهده دارد. از آنجا که واحدهای سخت افزاری میکروکنترلر برای عملکرد صحیح به کلاک نیاز دارند، آشنایی با RCC و نحوه تنظیم آن از اولین مراحل کار با STM32 محسوب می شود.
امیدواریم با دنبال کردن این مجموعه آموزشی، بتوانید به تدریج با بخش های مختلف میکروکنترلرهای STM32 آشنا شوید، نحوه برنامه نویسی و استفاده از امکانات آن ها را یاد بگیرید و در نهایت پروژه های الکترونیکی مورد نظر خود را طراحی و اجرا کنید.
سوالات و نظرات خود را میتوانید در زیر مطرح کنید.




