All for Joomla All for Webmasters
Yapabilecekleriniz hayal gücünüz kadar geniştir.
STM
ARDUİNO
ONUR KÖSE
Kişisel Blog

mikroC GPIO Komutları

Merhaba arkadaşlar ilk mikroC dersimizde başlangıç komutları olan GPIO komutlarından bahsedeceğim. İlk önce GPIO nedir sorusunu cevaplayalım. GPIO, general purpose input/output Türkçe tabiri ile; genel amaçlı giriş/çıkış portlarına verilen addır. STM32F103C8T6 denetleyicisinde 3 adet Port ve 33 adet genel amaçlı pin bulunmaktadır. Bu port ve pinler:

  • Port A için 0-12 ve 15 nolu pinler
  • Port B için 0,1 ve 3-15 nolu pinler
  • Port C için 13,14 ve 15 nolu pinler

Bu port ve pinleri STM32 Giriş adlı makalamde detaylı olarak inceleyebilirsiniz.

GPIO özelliklerine bakacak olursak:

  • Pinler dijital giriş/çıkış, analog giriş/çıkış olarak ayarlanabilir
  • Pin girişleri pull up/down, analog veya boşta olarak ayarlanabilir
  • Pin çıkışları  push-pull / open drain veya pull up/down olarak ayarlanabilir
  • Her portun hızı ayarlanabilir
  • Hızlı konum değişimine sahiptir, giriş/çıkış durumları çalışma esnasında değiştirilebilir

mikroC’nin 8 adet GPIO fonksiyonu bulunmaktadır. Bunlar:

  • GPIO_Clk_Enable
  • GPIO_Clk_Disable
  • GPIO_Config
  • GPIO_Set_Pin_Mode
  • GPIO_Digital_Input
  • GPIO_Digital_Output
  • GPIO_Analog_Input
  • GPIO_Alternate_Function_Enable

Sırayla fonksiyonları inceleyelim

GPIO_Clk_Enable

Denetleyici, belirtilen birime clock vererek kullanıma açar.

Fonksiyon; void GPIO_Clk_Enable(unsigned long *port);

GPIO_Clk_Disable

Denetleyici, belirtilen birimdeki clock’u keserek kullanıma kapar.

Fonksiyon; void GPIO_Clk_Disable(unsigned long *port);

GPIO_Config

Portda ki pinlerin özelliklerinin ayarlanması için kullanılır. Belirtilen pinin, hızı, giriş/çıkış ve analog/dijital durumu, dahili direnç seçimi gibi özellikleri ayarlanabilir.

Fonksiyon; void GPIO_Config(unsigned long *port, unsigned int pin_mask, unsigned long config);

Yukarıdaki örnekte PortB’nin 3. ve 5. pinleri dijital giriş olarak ayarlanmış ve dahili pull-down dirençleri aktif edilmiştir.

Maskelenmek istenen pin 0 ile 15 arasında olmalıdır. Ayrıca _GPIO_PINMASK_ALL komutu ile tüm pinler seçilebilir.

config parametresinin alabileceği değerler şunlardır:

Değer Açıklama
_GPIO_CFG_MODE_INPUT Pini giriş yap
_GPIO_CFG_MODE_OUTPUT Pini çıkış yap
_GPIO_CFG_PULL_UP Pini pull-up yap
_GPIO_CFG_PULL_DOWN Pini pull_down yap
_GPIO_CFG_PULL_NO Pini boşta bırak
_GPIO_CFG_ALT_FUNCTION Alternatif fonksiyonlarda kullanılır
_GPIO_CFG_MODE_ANALOG Pini analog yap
_GPIO_CFG_OTYPE_OD Pini open-drain yap
_GPIO_CFG_OTYPE_PP Pini push-pull yap
_GPIO_CFG_SPEED_400KHZ 400 KHz clock
_GPIO_CFG_SPEED_2MHZ 2 MHz clock
_GPIO_CFG_SPEED_10MHZ 10 MHz clock
_GPIO_CFG_SPEED_25MHZ 25 MHz clock
_GPIO_CFG_SPEED_40MHZ 40 MHz clock
_GPIO_CFG_SPEED_50MHZ 50 MHz clock
_GPIO_CFG_SPEED_100MHZ 100 MHz clock
_GPIO_CFG_SPEED_MAX En yüksek hızda çalış
_GPIO_CFG_DIGITAL_OUTPUT Dijital çıkış yap
_GPIO_CFG_DIGITAL_INPUT Dijital giriş yap
_GPIO_CFG_ANALOG_INPUT Analog giriş yap
GPIO_Set_Pin_Mode

GPIO_Config fonksiyonu ile aynı özelliklere sahiptir.

GPIO_Digital_Input

Bu fonksiyon pin veya pinleri dijital giriş olarak tanımlamak için kullanılır.

Fonksiyon; void GPIO_Digital_Input(unsigned long *port, unsigned long pin_mask);

GPIO_Digital_Output

Pin veya pinleri dijital çıkış olarak tanımlamak için kullanılır.

Fonksiyon; void GPIO_Digital_Output(unsigned long *port, unsigned long pin_mask);

GPIO_Analog Input

ADC uygulamarda kullanılan bu fonksiyon pin veya pinleri analog giriş olarak tanımlamak için kullanılır.

Fonksiyon; void GPIO_Analog_Input(unsigned long *port, unsigned long pin_mask);

GPIO_Alternate_Function_Enable

Diğerlerinden farklı olan bu fonksiyon, pinin/pinlerin SPI, CAN, UART, I2C, TIMER gibi birimlere atanması için kullanılır.

Fonksiyon; void GPIO_Alternate_Function_Enable(const Module_Struct *module);

Bir kaç örnek verelim:

İlk dersimizde mikroC’nin GPIO fonksiyonlarını incelemiş olduk. Bir sonraki dersimizde PWM komutlarına değineceğiz…

About the author

Leave a Reply

Merhaba

Bloguma Hoşgeldiniz.

Arşivler

Çevrimiçi Kişiler

1 misafir