آموزش الکترونیک

آموزش و ارائه اطلاعات ، تجریبات و نکات در زمینه الکترونیک

آموزش الکترونیک

آموزش و ارائه اطلاعات ، تجریبات و نکات در زمینه الکترونیک

پیوندهای روزانه
  • ۰
  • ۰

ساختار پورت:

پایه های I/O در چند حالت می توانند پیکره بندی شوند:

·          ورودی شناور (توابع ورودی و همچنین توابع دیگر)

·          ورودی بالاکش

·          ورودی پایین کش

·          آنالوگ

·          خروجی درین باز

·          خروجی بالاکش

·          توابع دیگر بالاکش

·          توابع دیگر درین باز

از پورت ها در چند کاربرد می توان استفاده کرد که در هر کاربرد یکی از حالت های بالا که مناسب آن کاربرد باشد را بر روی پورت پیکره بندی میکنیم. کاربرد های پورت:

·          به عنوان یک ورودی یا خروجی دیجیتال

·          به عنوان یک ورودی آنالوگ

·          به عنوان یک ورودی یا خروجی توابع دیگر

توابع دیگر (Alternate Function) :

منظور از توابع دیگر این است که یک پورت ها را می توان به امکانات جانبی هسته (تایمر ، usart و ...) وصل کرد. برای مثال پورت را به عنوان ورودی برای capture تایمر1 و یا به عنوان خروجی PWM تایمر8 استفاده کرد. البته برای هر پایه تعریف شده که به کدام یک از امکانات میتواند متصل شود.

 

جابجایی نقشه (remapping) :

یک امکان در این نوع میکرو ها وجود دارد که شما پایه های قابل اتصال به بعضی از امکانات جانبی را تغییر دهید و به پایه ای دیگر متصل کنید. برای مثال پایه در نظر گرفته شده برای کانال 1 تایمر شماره 4 (TIM4_CH1) PB6  است که توسط امکان جابجایی نقشه میتوان این کانال را به پایه PD12 نیز متصل کرد.

 

نحوه استفاده از درایور های CMSIS :

برای تنظیمات و استفاده از امکاناتی که در بالا توضیح داده شد، رجیستر های مخصوص قرار داده شده که با مطاله دیتاشیت میتوان از آن ها استفاده کرد اما شما با مطالعه و استفاده از درایور های تحتCMSIS دیگر درگیر جزئیات رجیسترها نمیشود.

1.        ابتدا فرکانس پورت را توسط دستور RCC_APB2PeriphClockCmd که در فایلstm32f10x_rcc.c  موجود است فعال کنید.
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA ,ENABLE);

2.        حالت مورد نظر برای پورت را در یک ساختار از نوع GPIO_InitTypeDef تعیین و توسط دستور GPIO_Init به پورت اعمال کنید. (این ساختار و دستور در فایل هایstm32f10x_gpio.c  و stm32f10x_gpio.h وجود دارند)
GPIO_InitTypeDef GPIO_Init_Structure;
GPIO_Init_Structure.GPIO_Pin = GPIO_Pin_1;
GPIO_Init_Structure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init_Structure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOA, &GPIO_Init_Structure);

3.        (اگر بخاهیم توابع دیگر متصل به پایه را فعال یا غیر فعال کنیم این مرحله اجرا شود)
فرکانس قسمت کنترل اتصال توابع دیگر به پایه ها را فعال کنید
.
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
سخت افزار مورد نظر خود را به پایه متصل کنید
.
 /* Connect EXTI0 Line to PB.00 pin */
 GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource0);

چند نکته :

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

به مثال های شماره 5 تا 8 مراجعه کنید.

برای درک جزئیات بیشتر در مورد پورت ها به دیتاشیت Reference Manual RM0008 قطعه ، قسمت General-purpose and alternate-function I/O (GPIOs and AFIOs) مراجعه کنید.

  • ۹۲/۰۷/۰۸
  • مهداد قاسمیان مشکانی

GPIO

GPIO_Init_Structure

پورت

نظرات (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی