Arkadaşlar merhaba ben Yusuf. Bu yazıda sizlerle önceki yazımda yapmış olduğumuz STM32 ile led blink uygulamamıza buton ekleyeceğiz. Detayları yazımın devamını okuyarak bulabilirsiniz. Kafanıza takılan bir soruyu yorum olarak sorabilirsiniz ayrıca öneri ve eleştirilerinizi de bekliyorum.

MALZEMELER

  1. STM32F103 Arduino Mini Geliştirme Kartı(Blue Pill)
  2. Buton
  3. Breadboard
  4. Jumper

DEVRE ŞEMASI

KODUN İNCELENMESİ

CubeMX Ayarları:

Önceki yazımızda yüklediğimiz CubeMX programını açıyoruz. Yine mikrodenetleyici olarak STM32F103C8T6 denetleyicisini seçiyoruz. Burada önce buton pinini tanımlayacağız ben yukarıdaki devre şemasında olduğu gibi PA0 pinine bağladım. CubeMX’de ilgili pine tıklayıp GPIO_Input seçeneğini seçiyoruz.

Daha sonra ise ilgili pinin ismini Buton yapıyoruz.

Bu işlemleri bitirdikten sonra ise, sol tarafta bulunan menü üzerinden System Core > GPIO > PA0 > GPIO Pull-up/Pull-down sekmesinden Pull-down seçeneğini seçiyoruz.

Bu işlemi bitirdikten sonra ise PC13 pinini output olarak ayarlıyoruz ve Led ismini veriyoruz.

Not: Bir önceki yazıda detaylı bir şekilde açıkladığım için fotoğraf koymuyorum isterseniz buradan okuyabilirsiniz.

Şimdi ise yine sol tarafta bulunan menüden RCC > HSE > Crystal/Ceramic Resonator seçeneğini seçiyoruz.

Şimdi sıra saat frekanslarını ayarlamakta. Bunun için yine önceki yazımızda belirttiğim gibi, üst taraftan Clock Configuration sekmesi altından HCLK kutucuğunu 72 MHz yapıyoruz.

Daha sonra yine yukarıdaki menülerden Project Manager sekmesine geliyoruz. Buradan önce projemize ad veriyoruz ben Buton_Led ismini verdim. Bunu yaptıktan sonra ise Toolchain’i MDK-ARM ile değiştiriyoruz. Sağ üst kısımdan Generate Code tuşuna basarak işlemleri bitiriyoruz.

Kodun Yazılması:

CubeMX gerekli dosyaları ve kodları oluşturduktan sonra main.c dosyamızı açıyoruz ve while(1) içerisine

if(HAL_GPIO_ReadPin(Buton_GPIO_Port, Buton_Pin) == 1)
 {
   HAL_GPIO_WritePin(Led_GPIO_Port,Led_Pin, GPIO_PIN_RESET);
 }
else
 {
  HAL_GPIO_WritePin(Led_GPIO_Port, Led_Pin, GPIO_PIN_SET);
 }

kodlarımızı ekliyoruz. Bu kodlarımızdaki HAL_GPIO_ReadPin fonksiyonu GPIO pinimizi okumamızı sağlıyor. Daha sonra ise derleyip kartımıza yüklüyoruz ve kodumuzun çalıştığına emin oluyoruz.

Not: Burada tuşa bastığımızda ledin yanmasını istediğimiz için bu şekilde kodlarını yazdık bunun sebebi ise aşağıdaki şemada da görebileceğiniz üzere ledimiz 3.3v üzerinden PC13 pinine bağlı. Bu da pinimiz LOW iken ledin yanmasını HIGH iken sönmesini sağlamakta.

/media/uploads/hudakz/stm32f103c8t6_schematic.png
https://os.mbed.com/users/hudakz/code/STM32F103C8T6_Hello/

BAĞLANTILAR

Proje dosyaları: https://github.com/REevee0/STM32F103C8T6_Button_Read
STM32 ile Led yakma ve kod yükleme: https://lezzetlirobottarifleri.com/stm32f103-nedir/

Instagram: https://www.instagram.com/yusuf_cosgun04/
Instagram: https://www.instagram.com/lezzetlirobottarifleri/
Discord sunucusu: https://discord.gg/8MVnu59tkx
Discord: REevee/Yusuf#6513