LAB – 2: STM32F429IDISCO LED ve Buton Uygulama

B L 425 Gömülü Sistemler LAB – 2: STM32F429IDISCO LED ve Buton Uygulama
1.
2.
3.
4.
5.
µVision programını çalıştırınız.
Kartınızı USB portuna takınız.
Yeni proje oluşturunuz. Projenizin ismi bil425_lab2 olabilir.
Project penceresindeki Source Group 1 klasörü üzerine tıklayarak ismini User olarak değiştiriniz.
User klasörüne sağ tuş ile tıklayınız ve açılan menüde “Add New Item to Group User” seçeneğini
seçiniz.
6. Açılan diyalog kutusunda Header file seçiniz. Name kısmına main.h yazınız ve OK butonuna
basınız.
7. Açılan dosyaya EK-1’de verilen kodu yazınız.
8. User klasörüne sağ tuş ile tıklayınız ve açılan menüde “Add New Item to Group User” seçeneğini
seçiniz.
9. Açılan diyalog kutusunda C File seçiniz. Name kısmına main.c yazınız ve OK butonuna basınız.
10. Açılan dosyaya EK-2’de verilen kodu yazınız.
11. Projenizi Build ediniz.
12. Projenizi karta yükleyiniz (LOAD).
13. Debug butonuna basarak DEBUG görünümüne geçiniz.
14. Run butonuna basarak projenizi kart üzerinde çalıştırınız.
15. Kart üzerindeki Mavi Butona basarak LED’i izleyiniz.
Tasarım:
Butona kaç kez basıldığını göz önüne alarak, çift sayılarda YEŞİL LED ve tek sayılarda KIRMIZI LED ışık
verecek şekilde projenizi yeniden düzenleyiniz.
EK-1
EK-2
#ifndef __MAIN_H
#define __MAIN_H
#include "main.h"
int main(void) {
//include bolumu
#include "stm32f4xx.h"
#include "stm32f4xx_rcc.h"
#include "stm32f4xx_gpio.h"
//define bolumu
#define LED GPIO_Pin_13
#define BUTTON GPIO_Pin_0
//Prototip bolumu
void initBoard(void);
void initLED(void);
void initButton(void);
void loop(void);
void Delay(uint32_t);
#endif
initBoard();
while(1) loop();
}
//----------------------------------------------void initBoard(void) {
initLED();
initButton();
}
//----------------------------------------------void initLED(void) {
//PG13 pinine bagli LED kullaniliyor
GPIO_InitTypeDef gpio;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOG, ENABLE);
gpio.GPIO_Pin = LED;
gpio.GPIO_Mode = GPIO_Mode_OUT;
gpio.GPIO_Speed = GPIO_Speed_50MHz;
gpio.GPIO_OType = GPIO_OType_PP;
GPIO_Init(GPIOG, &gpio);
}
//----------------------------------------------void initButton(void) {
// buton PA0 pinine bagli
GPIO_InitTypeDef gpio;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
gpio.GPIO_Pin = BUTTON;
gpio.GPIO_Mode = GPIO_Mode_IN;
gpio.GPIO_Speed = GPIO_Speed_50MHz;
gpio.GPIO_PuPd = GPIO_PuPd_DOWN;
GPIO_Init(GPIOA, &gpio);
}
//------------------------------------------------void loop(void) {
if(GPIO_ReadInputDataBit(GPIOA, BUTTON)) {
GPIO_SetBits(GPIOG, LED);
Delay(1000);
}
else GPIO_ResetBits(GPIOG, LED);
}
//------------------------------------------------void Delay(uint32_t ms) {
ms *= 33600;
//ms cevrimi
while(ms--) {
__NOP();
}
}