Merhaba arkadaşlar bu yazımda STM32F103 kartı ile basit LED toggle uygulamasını anlatacağım. İlk olarak CubeMx programı ile RCC, SYS ve LED için kullanacağımız pini ayarlayalım.
CubeMx programı hakkında bilgi edinmek için bir önceki yazımı okuyabilirsiniz: STM32CubeMx
Yazılıma geçmeden önce resimdeki devreyi kuralım.
LED’in anot(+) bacağı 220Ω direnç ile A1 pinine bağlıdır. Katot(-) bacağı G(GND) pinine bağlıdır.
CubeMx programını açarak RCC ve SYS bölümlerini resimdeki gibi ayarlayalım. LED, denetleyicinin PA1 pinine bağlıdır, PA1 pinine tıklayarak GPIO_Output olarak seçelim.
Resimdeki gibi pin ayarlarını yaptıktan sonra Project->Generate Code diyerek projemizi oluşturalım.
Kullandığınız IDE’de projemizi açtığımızda, main.c dosyası resimdeki gibi olacaktır. PA1 pinine bağlı LED’i yakmak için;
1 |
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_SET); // PA1 Lojik-1 |
HAL_GPIO_WritePin komutu ile istediğiniz portdaki istediğiniz pini Lojik 1 veya 0 yapabilirsiniz. Lojik durumunu ayarlamak için komutun 3. parametresini değiştirmeniz yeterlidir. 3. parametre yerine yazılabilecek diğer komutlar; “GPIO_PIN_SET, GPIO_PIN_RESET, 1, 0”
Pini Lojik-0 yapmak için aşağıdaki komutu kullanacağız.
1 |
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_RESET); // PA1 Lojik-0 |
250 milisaniye aralıklar ile LED’i yak-söndür yapan programa bakacak olursak;
1 2 3 4 |
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_SET); HAL_Delay(250); HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_RESET); HAL_Delay(250); |
Denetleyiciye gecikme yaptırmak için Hal_Delay() komutu kullanılır. Tek parametre alır ve aldığı parametrenin büyüklüğü kadar milisaniye cinsinden gecikme sağlar.
Projenin dosyalarını indirmek için: LED Blink