آموزش stm32 قسمت پنجم(بررسی ریجستر های GPIO میکرو STM32F103RET6 )

کار با رجیستر های GPIO

توابع HAL دستوراتی را برای تغییر وضعیت پین ها و خواندن وضعیت پین ها در اختیار ما قرار داده پس این توابع واسطه بین ما و رجیستر های اصلی میکرو می باشد.گاهی اوقات این واسطه گری باعث کاهش سرعت انتقال دیتا به GPIO ها و یا کاهش سرعت خواندن وضعیت GPIO  ها می شود و ما را مجبور به استفاده مستقیم از ریجیستر های اصلی  میکرو را می کند.

این اتفاق بیشتر مربوط به دستورات HAL مربوط GPIO ها است ولی در دیگر امکانات میکرو تقریبا چنین مشکلاتی نداریم.

ریجیستر های GPIO  عبارتند از:


 

۱٫GPIOx_CRL : Port configuration register low

این رجیستر برای مشخص کردن وضعیت ورودی و خروجی و مد های کاری پورت ها است و ۳۲ بیتی می باشد.(پین های ۰ تا ۷).


۲٫GPIOx_CRH :Port configuration register high

این رجیستر برای مشخص کردن وضعیت ورودی و خروجی و مد های کاری پورت ها است و ۳۲ بیتی می باشد.(پین های ۸ تا ۱۵)


۳٫GPIOx_IDR :Port input data registe

این رجیستر فقط برای خواندن وضعیت پورت ها است و ۳۲ بیتی می باشد. ۱۶ بیت اول برای خواندن وضعیت پین و ۱۶ بیت آخر رزور است.


۴٫GPIOx_ODR : Port output data register

این رجیستر برای مقدار دهی به پورت ها است و ۳۲ بیتی می باشد. ۱۶ بیت اول برای ست و ریست پین ها و ۱۶ بیت آخر رزور است.


۵٫GPIOx_BSRR : Port bit set/reset register

این رجیستر برای صفر و ست کردن پین ها است و ۳۲ بیتی می باشد.۱۶ بیت اول فقط برای ست کردن و ۱۶ بیت بعد برای صفر کردن پین ها است.

نکته : در ۱۶ بیت آخر شما با مقدار یک گذاشتن در بیت ها پین ها را صفر می کنید.


۶٫GPIOx_BRR : Port bit reset register

این رجیستر فقط رای صفر کردن پین ها است و ۳۲ بیتی می باشد که ۱۶ بیت اول برای صفر کردن و ۱۶ بیت آخر رزرو است.

نکته : تفاوت دو رجیستر آخر با رجیستر GPIOx_ODR این است که رجیستر GPIOx_ODR  برای تغییر وضعیت پورت ها است اما آن دوتای دیگر برای تغییر وضعیت پین ها به صورت تکی است و همچنین دو رجیستر آخر سرعت بیشتری نسبت به رجیستر GPIOx_ODR دارند.

به عنوان مثال تابع زیر را ببینید برای انتقال دیتا به پایه های OLED 0.96 است ( با رجیستر های اصلی میکرو )

حال دستورات با توابع HAL به صورت زیر است

 

mehdi sehati

در این سایت پروژه و آموزش های انواع ماژول ها و میکروکنترلر ها و نحوه ارتباط سخت افزار با نرم افزار (برنامه نویسی اندروید برای گوشی و برنامه نویسی سی شارپ برای کامپیوتر) و برنامه نویسی پایتون و رسبری پای و ماژول های وای فای قرار میگیرد همچنین دوستان برای توضیحات بیشتر و سفارش پروژه میتوانند به آی دی تلگرام بنده مراجعه کنند

مطالب مرتبط

9 دیدگاه‌

  1. mojtaba گفت:

    به این آموزش ادامه میدین؟

  2. یونس گفت:

    سلام و ممنون بابت آموزشتون. لطفا ادامه بدید آموزش ها تون را.

  3. علیرضا خلج گفت:

    سلام
    مطالبتون فوق العادس! لطفا قسمت های بعدی رو هم قرار بدید
    ممنونم

  4. محمد گفت:

    سلام خسته نباشید .. پرقدرت اموزش رو ادامه بدید ممنونم ..

  5. محمد گفت:

    توضیحات یخورده ساده یا کم نیس؟

  6. isa گفت:

    سلام
    ممنون از اموزشتون
    یه سوال داشتم
    چطوری می تونم به حداکثر ارسال و دریافت روی portb میکرو stm32f103c8 دسترسی داشته باشم
    یعنی حداکثر سرعت پین ها ۵۰ مگ
    متاسفانه هر کاری کردم ولی سرعت خیلی پایینه
    اگر می تونید راهنمایی بفرمایید ممنون

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *