STM32F4 Discovery STM32F4 Discovery Buton Uygulaması By Konuk Yazar Posted on 4 Ocak 2015 5 min read 0 0 5,189 Paylaş ! Facebook Paylaş ! Twitter Paylaş ! Google+ Paylaş ! Reddit Paylaş ! Pinterest Paylaş ! Linkedin Paylaş ! Tumblr Merhaba, Arkadaşlar bu yazımızda kartımızın üstünde bulunan user butonunun kullanımıyla ilgili bir uygulama gerçekleştireceğiz.Malumunuz kartımızın üzerinde bir user butonu bulunmakta ve bu buton A0 pini ile bağlantılı durumdadır.Uygulamamızda user butonuna basılmasıyla birlikte kartımızın üzerinde bulunan ledlerin yanması,butondan elimizi çektiğimizde ledlerin sönmesi işlemi gerçekleştirilecektir. Ledlerimiz için yaptığımız konfigürasyon ayarları aşağıda gösterilmektedir. [php] //GPIOD RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE); //Yapıyı başlatıyoruz GPIO_InitTypeDef GPIO_InitDef; //12,13,14,15 nolu pinler ayarlanıyor. GPIO_InitDef.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13|GPIO_Pin_14 | GPIO_Pin_15; //Çıkış olarak ayarlanıyor.. GPIO_InitDef.GPIO_Mode = GPIO_Mode_OUT; //Çıkış tipi push-pull olarak ayarlanıyor. GPIO_InitDef.GPIO_OType = GPIO_OType_PP; GPIO_InitDef.GPIO_PuPd = GPIO_PuPd_NOPULL; //50MHz pin hızı GPIO_InitDef.GPIO_Speed = GPIO_Speed_50MHz; // GPIOD üzerindeki pinler başlatılıyor. GPIO_Init(GPIOD, &GPIO_InitDef); [/php] User butonu için yaptığımız konfigürasyon ayarları aşağıda gösterilmektedir. [php] //GPOIA RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); //Pin 0 GPIO_InitDef.GPIO_Pin = GPIO_Pin_0; //Mode giriş olarak ayarlanıyor. GPIO_InitDef.GPIO_Mode = GPIO_Mode_IN; //Çıkış tipi push-pull olarak ayarlanıyor. GPIO_InitDef.GPIO_OType = GPIO_OType_PP; GPIO_InitDef.GPIO_PuPd = GPIO_PuPd_DOWN; //50MHz pin hızı GPIO_InitDef.GPIO_Speed = GPIO_Speed_50MHz; // GPIOA üzerindeki pinler başlatılıyor. GPIO_Init(GPIOA, &GPIO_InitDef); [/php] Peki ben butonun durumunu nasıl denetleyeceğim.Aşağıda gösterilmektedir. [php] GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) [/php] Bunların hepsini inceledikten sonra kodlarımızın tamamı aşağıda gösteriliyor.. [php] #include "stm32f4xx_rcc.h" #include "stm32f4xx_gpio.h" int main(void) { GPIO_InitTypeDef GPIO_InitDef; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE); GPIO_InitDef.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13|GPIO_Pin_14 | GPIO_Pin_15; GPIO_InitDef.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitDef.GPIO_OType = GPIO_OType_PP; GPIO_InitDef.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_InitDef.GPIO_Speed = GPIO_Speed_100MHz; //Initialize pins GPIO_Init(GPIOD, &GPIO_InitDef); RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); GPIO_InitDef.GPIO_Pin = GPIO_Pin_0; GPIO_InitDef.GPIO_Mode = GPIO_Mode_IN; GPIO_InitDef.GPIO_OType = GPIO_OType_PP; GPIO_InitDef.GPIO_PuPd = GPIO_PuPd_DOWN; GPIO_InitDef.GPIO_Speed = GPIO_Speed_100MHz; //Initialize pins GPIO_Init(GPIOA, &GPIO_InitDef); while (1) { if (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0)) { GPIO_SetBits(GPIOD, GPIO_Pin_12| GPIO_Pin_13|GPIO_Pin_14 | GPIO_Pin_15); } else { GPIO_ResetBits(GPIOD, GPIO_Pin_12| GPIO_Pin_13|GPIO_Pin_14 | GPIO_Pin_15); } } } [/php] Proje dosyalarına buradan ulaşabilirsiniz. Proje çalışma videosunu buradan izleyebilirsiniz.