STM32F103C8 ile Standart Peripheral Library Dersleri |
2. Bölüm
Bu yazımızda mikrodenetleyiciler de temel bilgilerden sonra ilk öğrendiğimiz veya öğrenmeye çalıştığımız GPIO birimi çıkış olarak nasıl kullanacağımızı öğreneceğiz. Peki bunu STM32F103C8 mikrodenetleyici ve Standart Peripheral Library ile nasıl kullanabiliriz? Beraber ilk adım sayılan led yakma ile öğrenmeye çalışalım.
21.02.2020 tarihli yazı 10761 kez okunmuştur.
GPIO Nedir ?
Türkçe karşılığı “genel amaçlı giriş/çıkış” olan GPIO mikrodenetleyicilerin dış dünya ile bağlantı kurmasının yollarından birisidir. Mikrodenetleyicinin bir pinini çıkış olarak ayarlayıp transistör , röle gibi elemanlar ile anahtarlama yapabilir veya led , buzzer gibi dışardaki dünyaya somut olarak mesaj verebiliriz. Bununla beraber pinimizi giriş olarak kullanıp , pin üzerinde ki gerilim seviyesini algılayabileceğimiz birimdir GPIO.
STM32F103 ile Pini Çıkış Tanımlama
Öncelikle; birinci dersimiz de anlattığımız ; proje oluştururken eklememiz gereken kütüphanelerin yanında GPIO kütüphanesini de eklemeliyiz ve projemizi oluşturmalıyız. Projemizi oluşturduktan sonra ilk önce pinimizi tanımlamalıyız. Standart peripheral kütüphanelerinde pin tanımlamaları (stm32f10x_gpio.c) typedef struct yapısında olduğu için pinimizi isimlendirmeliyiz bunu “GPIO_InitTypeDef” ile yaparız.
GPIO_InitTypeDef led;
Daha sonra kullanacağımız portun açılması için kanal tanımlamasını yapmalıyız ki port aktif olsun. Hangi birimi, hangi portu aktif etmek istiyorsak kanal tanımlamasını mikrodenetleyicinin datasheet vasıtasıyla öğrenip aktif etmeliyiz. Resimde de görüldüğü gibi A portunu APB2 kanalı ile aktif etmemiz gerekir.
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
Resim 1 : Kanal Diyagramı
►İlginizi Çekebilir: STM32F103C8 ile Standart Peripheral Library Dersleri 1.Bölüm
Daha sonra tanımladığımız değişken ile pin , hız ve modu tanımlamalıyız.
led.GPIO_Pin = GPIO_Pin_0; // A portunun kaçıncı pinini kullanacağımızı tanımladık.
led.GPIO_Speed = GPIO_Speed_2MHz; // Pini kaç MHz ile kullanacağımızı tanımladık.
Burada seçtiğimiz MHz kullanağımız pinin ne kadar hızlı sürüleceği , düşen/ yükselen kenarın ne kadar sert olacağıyla ilgilidir. Frekans arttıkça unutmayalım ki daha çok EMI ortaya çıkacaktır.
led.GPIO_Mode = GPIO_Mode_Out_PP; // Pini hangi modda kullanacağımıız tanımladık.
Mod tanımlama kısmında “ GPIO_Mode_Out_PP” ve “GPIO_Mode_Out_OD” ile iki modda çıkış alabiliriz. Bunlar push pull ve open drain şeklindedir. Son olarak GPIOA birimini belirlenen şekilde başlatmak için GPIO_Init fonksiyonunu kullanırız.
GPIO_Init(GPIOA,&led);
İşte pin tanımlamaları bu kadar. Bundan sonra main içerisinde A0 pinimizi istediğimiz gibi kontrol edebiliriz. Lojik 1 veya lojik 0 çıkış ile led, buzzer , transistör, optocupler vs. istediğimiz gibi kontrol edebiliriz.
Bunun için iki komuta ihtiyacımız var.
GPIO_ResetBits(GPIOA, GPIO_Pin_0); // Lojik 0 çıkış alınır.
GPIO_SetBits(GPIOA, GPIO_Pin_0); // Lojik 1 çıkış alınır.
Örnek Proje
Resim 2 : Örnek Proje
►st.com
Yazar: Yasin Tekin
YORUMLAR
Aktif etkinlik bulunmamaktadır.
- Dünyanın En Görkemli 10 Güneş Tarlası
- Dünyanın En Büyük 10 Makinesi
- 2020’nin En İyi 10 Kişisel Robotu
- Programlamaya Erken Yaşta Başlayan 7 Ünlü Bilgisayar Programcısı
- Üretimin Geleceğinde Etkili Olacak 10 Beceri
- Olağan Üstü Tasarıma Sahip 5 Köprü
- Dünyanın En İyi Bilim ve Teknoloji Müzeleri
- En İyi 5 Tıbbi Robot
- Dünyanın En Zengin 10 Mühendisi
- Üretim için 6 Fabrikasyon İşlemi
- DrivePro Yaşam Döngüsü Hizmetleri
- Batarya Testinin Temelleri
- Enerji Yönetiminde Ölçümün Rolü: Verimliliğe Giden Yol
- HVAC Sistemlerinde Kullanılan EC Fan, Sürücü ve EC+ Fan Teknolojisi
- Su İşleme, Dağıtım ve Atık Su Yönetim Tesislerinde Sürücü Kullanımı
- Röle ve Trafo Merkezi Testlerinin Temelleri | Webinar
- Chint Elektrik Temel DIN Ray Ürünleri Tanıtımı
- Sigma Termik Manyetik Şalterler ile Elektrik Devrelerinde Koruma
- Elektrik Panoları ve Üretim Teknikleri
- Teknik Servis | Megger Türkiye
ANKET