آموزش میکروکنترلر STM32 قسمت اول: نرم افزار CubeMx

0
1523
میکروکنترلر STM32
میکروکنترلر STM32

سلام دوستان. سعی داریم به آموزش کاربردی میکروکنترلرهای سری STM32 دارای هسته پردازنده ARM در محیط نرم‌افزارهای CubeMx و keil بپردازیم. ابتدا باید بیان‌کنم که، وقتی من بعداز مدتی برای انجام یک سری پروژه نسبتاً سنگین و پیچیده از میکروهای STM32 خصوصاً خانواده های CORTEXM0 , M3 و محیط CUBEMX استفاده‌کردم، توانستم تجربیات تقریباً زیادی در چگونگی کارکردن با ادوات مختلف این میکروکنترلرها و چگونگی برنامه‌نویسی با‌استفاده‌از کتابخانه HAL بدون‌اینکه برنامه بعداز مدتی هنگ‌کند بدست بیاورم. لازم دیدم این تجربیات را دراختیار علاقمندان الکترونیک قراردهم.

یکی‌از دلایلی که ما سعی می‌کنیم تأکید زیادی روی سری Cortex-M3 و Cortex-M0 داشته‌باشیم این هست که وقتی شما دوستان، وارد بازارکار تولید مدارات میکروکنترولری می‌شوید قیمت قطعات اولویت‌ها را تعیین می‌کند، به‌عنوان مثال میکروکنترلر STM32F030F4P6 را با حدود قیمت ۳۳۰۰۰تومان (درهنگام نگارش این مقاله) و میکروکنترلر STM32F030C8T6 را با قیمت حدود ۱۰۴۰۰۰ تومان(درهنگام نگارش این مقاله) و همچنین میکرو STM32F103C8T6 را با قیمت حدود ۵۷۰۰۰ تومان(درهنگام نگارش این مقاله) می‌توانید تهیه کنید؛ چنین قیمت های برای یک پردازنده قدرتمند ۳۲بیتی ARM واقعا اقتصادی است که البته خیلی به نسبت میکروکنترلرهای ۸بیتی AVR و PIC مناسب‌تر بشمار می‌آیند. البته این نکته ناگفته نماند که آموزش بعضی قسمتها تنها به خانواده Ccortex-M4 به‌بالا اختصاص خواهد داشت. معمولا پردازنده‌های ARM، از توان مصرفی پایینی برخوردار هستند که آنها را بسیار پرکاربرد کرده‌است مخصوصا در دستگاه‌های همراه. اغلب گوشی‌های موبایل امروزه از پردازنده ARM استفاده می‌کنند، معمولا پردازنده ARM به‌صورت هسته ارائه می‌شود و شرکت‌های تولیدکننده Chip آنها را به‌صورت پردازنده و میکروکنترلر ارائه میکنند، شرکت ST نیز از این قائده جدا نیست دست به تولید میکروکنترلرهای بسیار اقتصادی با هسته ARM کرده‌است. در این سری از آموزش‌ها سعی می‌کنیم تاجایی‌که ممکن‌است از دستورات کتابخانه HAL ، برای بالارفتن کیفیت کد(سرعت اجرا و حجم مورداستفاده) استفاده نکنیم و همچنین با نقطه ضعف‌های این کتابخانه و طریقه برطرف‌کردن آن آشنا شویم.در کنار آن شیوه برنامه‌نویسی بهینه را آموزش‌دهیم همچنین تلاش می‌کنیم تا آنجاکه امکان‌دارد تمام قسمت‌های cubemx و میکروکنترلر را آموزش دهیم بدین‌منظور، از قسمت‌های ساده مثل GPIO و وقفه خارجی شروع می‌کنیم تا آموزش‌های رابط‌های سریال مثل UART و I2C و SPI و بخصوص قسمت‌های پیشرفته‌تر مثل رابط سریال CAN و رابط USB در مدهای مختلف و البته مقداری هم آموزش ارتباط رابط USB بخصوص در مد HID با نرم‌افزار ویژوال استودیو. همچنین در ادامه رابط اترنت و قسمت‌های مختلف تایمرها و کار با مبدل آنالوگ به دیجیتال و دیجیتال به آنالوگ و کار با حافظه‌های جانبی و خیلی قسمت‌های دیگر میکروکنترولر را توضیح می‌دهیم. برای کاملترشدن آموزش به بررسی سیستم عامل FreeRtos و چگونگی راه‌اندازی آن از طریق نرم‌افزار cubemx خواهیم پرداخت. فقط توجه‌داشته‌باشید که خیلی‌از قسمت‌های میکروکنترلر مثل رابط‌های سریال مدهای مختلفی برای راه‌اندازی دارند که آموزش آنها را طولانی می‌کند و ممکن‌است تمام جزئیات یک قسمت از میکرو را نتوان در یکسری آموزشی ارائه‌کرد که به‌مرور در قسمت‌های جداگانه به آنها خواهیم برداخت. نکته‌مهم اینکه ممکن‌است خیلی نکته‌ها درمورد برنامه‌نویسی و تنظیمات در آموزش‌ها ذکر شود که بدلیل جلوگیری از اتلاف وقت در آموزش‌های بعد بیان نگردد به‌همین علت لازم‌است گام‌به‌گام همراه با ما آموزش ها را دنبال کنید.

شروع آموزش میکروکنترلر STM32 و GPIO

آموزش را با رابط GPIO شروع می‌کنیم. در این آموزش تصمیم‌داریم از میکروکنترلر STM32 F 103C8T6 استفاده‌کنیم. ازآنجاکه سری‌های Cortex-M0 , Cortex-M3 مشابه هستند آنها را به‌صورت جداگانه بررسی نمی‌کنیم. طبق تصویر زیر نرم‌افزار CubeMX را باز میکنیم و سپس گزینه NEW PROJECT را انتخاب می‌کنیم و سپس از آن لیست میکروکنترلر موردنظرمان را انتخاب می‌کنیم:

 

بعد از انتخاب میکروکنترلر صفحه زیر به نمایش در می‌آید:

محل ویرایش میکرو
محل ویرایش میکرو

 

که قسمت سمت‌چپ “محل انتخاب و ویرایش پرفال‌های میکروکنترلر” و سمت راست “محل ویرایش و انتخاب عملکرد پایه‌های میکروکنترلر” است. اولین کاری که باید انجام‌دهیم مشخص‌کردن کلاک STM32 است. در زبانه Pinout گزینه RCC را انتخاب می‌کنیم توجه‌داشته‌باشید در حالت‌عادی تنظیمات کلاک میکروکنترلر روی گزینه HSI یا همان کلاک سریع داخلی با فرکانس ۸مگاهرتز تنظیم‌شده‌است ما در این٬پروژه می‌خواهیم از کریستال خارجی استفاده‌کنیم بنابراین طبق تصویرزیر گزینه Crystal را انتخاب می‌کنیم:

تنظیم کلاک
تنظیم کلاک

 

حال به صفحه Clock Configuration می‌رویم تا توسط ضرب و تقسیم کننده‌ها (واحد PLL) فرکانس را روی حداکثر فرکانس این میکروکنترلر یعنی 72 مگاهرتز قراردهیم.

تنظیم فرکانس
تنظیم فرکانس

 

Input Frequeny: محل انتخاب فرکانس کریستال خارجی HSE

انتخاب کلاک سریع خارجی PLLCLK: انتخاب خروجی ضرب‌کننده حال دوباره به صفحه Pinout برمی‌گردیم و نوع پروگرامر و دیباگر را تنظیم می‌کنیم و همچنین تأخیر مورداستفاده در برنامه را دقیقا طبق عکس‌زیر تنظیم می‌کنیم:

نوع پروگرامر و دیباگر
نوع پروگرامر و دیباگر

 

حال پین A9 میکرو را طبق عکس‌زیر به خروجی تبدیل میکنیم:

تبدیل پین A9 به خروجی
تبدیل پین A9 به خروجی

 

با کلیلک راست روی پین، طبق عکس‌های زیر نام مستعار LED را برای آن انتخاب می‌کنیم:

 

و در ادامه پین A15 را هم به عنوان ورودی تعریف می‌کنیم و برای آن نام مستعار BUTTON را انتخاب می‌کنیم:

تعیین پین A15 به عنوان ورودی
تعیین پین A15 به عنوان ورودی

 

چطور می توانیم پایه ورودی پول آپ یا پول دان کنیم؟

برای اینکار باید به صفحه Configuration برویم و گزینه GPIO را طبق عکس‌زیر انتخاب‌کنیم تا صفحه مربوط‌به تنظیمات آن بازشود:

 

GPIO Pull-up/Pull-down: محل انتخاب مقاومت داخلی پول‌آپ یا پول‌دان برای پین ورودی همانطورکه درتصویر می‌بینید در این صفحه جزئیات همه پین‌های مورداستفاده اعم از ورودی و خروجی قابل ویرایش است ما دراینجا پایه موردنظر را انتخاب می‌کنیم و طبق تصویربالا تنظیمات را روی آن اعمال میکنیم حال برای تنظیم مشخصات پین خروجی هم بمانند عکس زیر آن را انتخاب می‌کنیم و گزینه موردنظر را انتخاب و ویرایش می‌کنیم:

 تنظیم مشخصات پین خروجی
تنظیم مشخصات پین خروجی

 

  1. GPIO output level: سطح صفر یا یک بودن خروجی در هنگام پیکره‌بندی اولیه
  2. GPIO mode: پوش‌پول و یا اپن کلکتوربودن پایه خروجی
  3. Maximum output speed: حداکثر سرعت این پین
  4. برچسب این پین

درنهایت به صفحه Pinout برمی‌گردیم، حالا باید تنظیمات پایه‌های میکرو را به‌شکل‌زیر داشته‌باشیم. در این مرحله پروژه خود را ذخیره می‌کنیم:

تنظیمات پایه های میکرو
تنظیمات پایه های میکرو

 

تا اینجا تنظیمات GPIO پروژه خود را انجام دادیم درقسمت‌بعدی آموزش STM32 قصد داریم پروژه خود را به محیط نرم‌افزاری Keil ببریم و کدنویسی در این محیط را آموزش‌‍دهیم.

با ما همراه باشید.

 

 

 

منبع: سیسوگ

مطلب قبلیقسمت اول : میکروکنترلر STM8 چیست و از کجا آمده است؟
مطلب بعدیقسمت دوم:معرفی بردهای Discovery میکروکنترلر STM8

پاسخ دهید

لطفا نظر خود را وارد کنید!
لطفا نام خود را در اینجا وارد کنید