آموزش 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

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

مطالب مرتبط

Subscribe
Notify of
guest

9 نظرات
Inline Feedbacks
View all comments
mojtaba
mojtaba
7 years ago

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

یونس
یونس
7 years ago

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

علیرضا خلج
علیرضا خلج
7 years ago

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

محمد
محمد
6 years ago

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

محمد
محمد
6 years ago

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

isa
isa
6 years ago

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

9
0
Would love your thoughts, please comment.x