30 Ağustos 2016 Salı

3 - STM32F4 ile Harici Kesme Kullanımı

Merhaba Arkadaşlar,
                Sıradaki örneğimiz Stm32f4 ile harici kesme nasıl yapılır bunun hakkında kısa bilgi ardından da kod paylaşımı yapılacaktır.
Kesme nedir? Niçin kullanılır hakkındaki bilgiyi internetten veya çeşitli kaynaklardan çok kolay bir şekilde anlaşılabilir. Burada bu konuya girilmeyecektir. Bu örnekten önce yine de bilmeyenler için herhangi bir kaynaktan bilgi edinmeleri gerekir.
Öncelikle STM32F4 işlemcisi 16 adet kesme kanalına sahiptir. Bu kanallar, her GPIO pininin 0’dan 15’e kadar olan pini kullanılabilir. Bunların isimleri de kullanılan pin numarası ile doğrudan ilişkilidir. Örneğin PA0 pini için kanal(0)’a bağlıdır. PA11 pini kanal(11)’e bağlıdır. Diğer portlar için de aynı şey geçerlidir. PE3 pini kanal(3)’e bağlı olarak tanımlanır.

4.kanala kadar kanallar tek bir kesme fonksiyonu ile çağrılabilir, ama 5,6,7,8 ve 9. pinleri bunlardan farklı bir kesme fonksiyonu ile çağrılır ve ayrıca 10’dan 15’e kadar olan pinler de ayrı kesme fonksyonu ile çağrılır. Aşağıdaki resimde daha net anlayacaksınızdır.


Yani PA0 da, PB0 da, PC0 da, PD0 da, PE0 da Line0 kanalına bağlıdır. Ancak sadece bir port kullanılabilir. Yani aynı anda kanal0 dan PA0,PB0 veya diğer 0.pinler kullanılamaz.
                Kesme kullanılacağı zaman kesme fonksiyonun ayarlamalarını da NVIC kodları ile yapılır. 0’dan 4’e kadar olan kesmeler kendi isimleri ile kesme fonksiyonu oluşturulurken, 5’den 9’a kadar olanların kesme fonksiyonlarının isimleri aynıdır. Aynı şekilde 10’dan 15’e kadar olan kesmeler de aynı şekildedir.

                Örnek olarak 0.kanaldan ve 11.kanaldan kesme örneklerini yapacağız.

Kodların çalışabilmesi için bazı kütüphanelerin sisteme eklenmesi gerekmektedir. Bunlardan daha önce eklediklerimiz olmuştu. Bunlar :  stm32f4xx.c,  stm32f4xx_gpio.c, stm32f4xx_rcc.c dosyaları idi. Ek olarak eklenmesi gereken kütüphaneler: stm32f4xx_exti.c, stm32f4xx_syscfg.c, misc.c  kütüphaneleridir. Peki bunlar nasıl eklenir? Daha önceki paylaşımlarda (sıfırdan proje oluşturma başlıklı paylaşım) bu gösterilmişti. Burada bunun hakkında bilgi yer alacaktır. Ancak yine de yapamayanlar ilk paylaşıma (sıfırdan proje oluşturma başlıklı paylaşım) bakarak yapabilirler.
Öncelikle programın solundaki Library klasörüne çift tıklayın:
Libraries -> STM32F4xx_StdPeriph_Driver -> src -> klasörlerine tıklayın ve gerekli olan (c) dosyalarını bulun ve ardından onları add butonuna basarak ekleyin. Bu dosyalar stm32f4xx_exti.c, stm32f4xx_syscfg.c, misc.c  dosyalarıdır. Daha önce bu dosyaların klasör adresleri belirtildiği için aynı işlemin tekrar yapılmasına gerek yoktur. Bu dosyalar eklendikten sonra kod yazımına başlanabilir.

0.kanal kesmesi:

İlk olarak kütüphaneler çağrılır:

#include "stm32f4xx.h"                             //stm32f4 kütüphanesi
#include "stm32f4xx_gpio.h"                    //GPIO kütüphanesi
#include "stm32f4xx_rcc.h"                      // RCC clock kütüphanesi
#include "stm32f4xx_exti.h"                     //harici kesme kütüphanesi
#include "stm32f4xx_syscfg.h"                 //systemcfg kütüphanesi
#include "misc.h"                                      //misc kütüphanesi

Daha sonra ana fonksiyon içerisinde konfigürasyon ayarları yapılır. Bunlar giriş çıkış pinlerinin ayarlanması ve kullanacağımız harici kesme konfigürasyon ayarlarıdır.
//Ana fonksiyon
int main(void)
{
                NVIC_InitTypeDef          NVIC_InitStructure;       //kesme için
                GPIO_InitTypeDef          GPIO_InitStructure;       // Port yönlendirmesi
                EXTI_InitTypeDef            EXTI_InitStruct;          // kesme için
               
  /* GPIOD Periph clock hatti aktif edilir */
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
  
  /* Enable clock for SYSCFG */
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);

  /* PD12, 13, 14 ve PD15 pinleri çıkış olarak kullanilacak */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;     //Pinler cikis olarak belirlendi
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;     //Pin PushPull olarak ayarlandi
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;     //GPIO Bus hizi 100 MHz ayarlandi
  GPIO_Init(GPIOD, &GPIO_InitStructure);    //Yukarida tanimlanan bilgileri GPIOD adresine ait oldugu belirtilir

 /*harici kesme ayarlarinin yapilmasi*/
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;                              //kesme pini PA0
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;                   //Pin giris olarak belirlendi
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;               //Pin PushPull olarak ayarlandi
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;     //GPIO Bus hizi 100 MHz ayarlandi
  GPIO_Init(GPIOA, &GPIO_InitStructure);           //Yukarida tanimlanan bilgileri GPIOA adresine ait oldugu belirtilir
               
/* EXTI_Line0 için sistemden PA0 pinini çagir*/
  SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource0);  /* EXTI_Line0'a PA0 baglandi  */
    EXTI_InitStruct.EXTI_Line = EXTI_Line0;                                                          /* Enable interrupt */
    EXTI_InitStruct.EXTI_LineCmd = ENABLE;                                                       /* Interrupt mode */
    EXTI_InitStruct.EXTI_Mode = EXTI_Mode_Interrupt;                               /* Triggers on rising and falling edge */
    EXTI_InitStruct.EXTI_Trigger = EXTI_Trigger_Rising;                                  
    EXTI_Init(&EXTI_InitStruct);                                                                                 /* Add to EXTI */
                /* kesme fonksiyonu için gerekli NVIC kodları*/
 NVIC_InitStructure.NVIC_IRQChannel        = EXTI0_IRQn ;                //kesme fonksiyonun ismi
 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority  = 0x00;        //farkli türler arasi oncelik
 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x00;           //kendi turunun icindeki oncelik
 NVIC_InitStructure.NVIC_IRQChannelCmd= ENABLE;
 NVIC_Init(&NVIC_InitStructure);
                                                                             
  while (1)            //Sonsuz donguye girilir
                               {                                            
                                              
                               }
}

Yukarıda programın ana fonksiyonu yapılmıştır. Şimdi sırada kesme fonksiyonunun yazılması gerekmektedir. NVIC kodları ile kesme fonksiyonunun ayarlamaları yapılmıştır. NVIC kodlarına bağlı olarak kesme fonksiyonunun ismi EXTI0_IRQHandler olmaktadır. Kesme fonksiyonu eğer ana fonksiyonun alt tarafına yazılacaksa yukarıda kesme fonksiyonunun ismi belirtilmelidir (void EXTI0_IRQHandler(void); ). Eğer ana fonksiyonun üst tarafına yazılacaksa gerek yoktur.

Kesme fonksiyonu:

void EXTI0_IRQHandler(void)
{
    if (EXTI_GetITStatus(EXTI_Line0) == 1)             //kesme pini 1 oldu mu?
       {
           EXTI_ClearITPendingBit(EXTI_Line0);         //kesme bayrağını temizle
           GPIO_ToggleBits(GPIOD, GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15);
                /* PD12,13,14 ve 15. Pinleri TOGGLE yap*/
       }
}

Yukarıdaki kodda PA0 pinine bağlı bir kesme programı yapılmıştır. Eğer PA0 pinine dışarıdan bir etki olursa (yani 1 logic 1 değeri gelirse) PD12,13,14 ve 15. Pinleri toggle yapması istenmiştir. Kodlar derlenip daha sonra yükleme işlemi yapılabilir. STM32F4 discovery board kartına program yğklendiğinde butona basıldığında ledlerin 1 ise 0’a, 0 ise 1’e döndüğünü göreceksiniz.

Kodların resimleri aşağıdaki gibidir:



11.kanal kesmesi örneği: 

Kesme PB11 pinine bağlıdır.


Yukarıdaki resimde PB11 pinine bağlı kesme gösterilmiştir. Ek açıklamaya yukarıda yapıldığı için gerek duyulmamıştır.

İyi Çalışmalar.


                                                                                                                                    

28 Ağustos 2016 Pazar

2 - STM32F4 delay Fonksiyonu

Merhaba arkadaşlar,

sıradaki konumuz gecikme fonksiyonu oluşturmak. Aşağıda kodların tamamı bulunmaktadır. açıklama kod kısmının altında bulabilirsiniz.

#include "stm32f4xx.h" //stm32f4 kütüphanesi
#include "stm32f4xx_gpio.h" //GPIO kütüphanesi
#include "stm32f4xx_rcc.h" // RCC clock kütüphanesi


void Delay(uint32_t time)  //gecikme fonksiyonu
{
while(time) // time 0(sifir) olana kadar kodu dondur
time--; // time degerini 1 azalt
}


//Ana fonksiyon
int main(void)
{
GPIO_InitTypeDef  GPIO_InitStructure; // Port yönlendirmesi

  /* GPIOD Periph clock hatti aktif edilir */
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);

  /* PD12, 13, 14 ve PD15 pinleri kullan1lacak */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;
/* Eger sadece tek bir pin ornegin PD12 kullanilacak ise,
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12; yazmaniz yeterli olacaktir*/

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; //Pinler cikis olarak belirlendi
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //Pin PushPull olarak ayarlandi
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; //GPIO Bus hizi 100 MHz ayarlandi
GPIO_Init(GPIOD, &GPIO_InitStructure); //Yukarida tanimlanan bilgileri GPIOD adresine ait oldugu belirtilir


GPIO_ResetBits(GPIOD, GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15);

  while (1) //Sonsuz donguye girilir
{
GPIO_SetBits(GPIOD,GPIO_Pin_12); //PD portunun 12.pini Set yapilir. yani logic 1
Delay(20000000); //10000 saykil zamani gecikme
GPIO_SetBits(GPIOD,GPIO_Pin_13); //PD portunun 13.pini Set yapilir. yani logic 1
Delay(20000000);
GPIO_SetBits(GPIOD,GPIO_Pin_14); //PD portunun 14.pini Set yapilir. yani logic 1
Delay(20000000);
GPIO_SetBits(GPIOD,GPIO_Pin_15); //PD portunun 15.pini Set yapilir. yani logic 1
Delay(20000000);

}
}







void Delay(uint32_t time)  //gecikme fonksiyonu
{
while(time)  // time 0(sifir) olana kadar kodu dondur
time--;  // time degerini 1 azalt
}

burada time değişkeni ile fonksiyona gelen sayı while(time) döngüsü içerisinde sıfır olana kadar dönüyor ve fonksiyondan çıkıyor. gelen time değerine göre örneğin 1000 ise 1000 saykıl süresince dönüyor ve gecikme oluşuyor. işlemci 168Mhz hızında çalıştığı için 1 saykıl = 1/168000000 demektir. o halde 1000 saykıl 1000*(1/168000000) süresince bir gecikme fonksiyonu oluşuyor demektir.

İyi Çalışmalar.

                                                                                                                                       

26 Ağustos 2016 Cuma

1 - STM32F4 ile Led Yakma

Merhaba arkadaşlar,

         Öncelikle ilk program olarak led yakma işlemi yapılacaktır.burada genel bir bilgi verildikten sonra kodların detaylı açıklanması verilecektir.

            İlk olarak kullandığımız işlemcinin kütüphanesi programa eklenmesi gerekmektedir. Bunu kod ile aşağıda gösterildiği gibi yapılır:
            #include "stm32f4xx.h" //stm32f4 kütüphanesi

           Daha sonra portların kütüphesi kod olarak eklenir:
           #include "stm32f4xx_gpio.h" //GPIO kütüphanesi

           Portların clock kütüphanesi:
           #include "stm32f4xx_rcc.h" // RCC clock kütüphanesi

Bu işlemler yapıldıktan sonra ana fonksiyona geçilir. her programda olduğu gibi bu derleyicide de aşağıdaki gibi ana fonksiyon eklenir:
          int main(void)               //Ana fonksiyon
             {
             
        GPIO_InitTypeDef  GPIO_InitStructure; // Port yönlendirmesi yapilir

               /* GPIOD Periph clock hatti aktif edilir */
               RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);  

               /* PD12, 13, 14 ve PD15 pinleri kullan1lacak */
                GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;

       [ /* Eger sadece tek bir pin ornegin PD12 kullanilacak ise,
              GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12; yazmaniz yeterli olacaktir*/ ]

                //Pinler cikis olarak belirlenir
                GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;

                //Pinler PushPull olarak ayarlandi
                GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;

//GPIO Bus hizi 100 MHz ayarlandi
                GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;

                //Yukarida tanimlanan bilgileri GPIOD adresine ait oldugu belirtilir
        GPIO_Init(GPIOD, &GPIO_InitStructure);

                     while (1) //Sonsuz donguye girilir
       {

                        //PD portunun 12.pini Set yapilir. yani logic 1
GPIO_SetBits(GPIOD,GPIO_Pin_12);

                        //PD portunun 13.pini Set yapilir. yani logic 1
GPIO_SetBits(GPIOD,GPIO_Pin_13);

                        //PD portunun 14.pini Set yapilir. yani logic 1
GPIO_SetBits(GPIOD,GPIO_Pin_14);

                //PD portunun 15.pini Set yapilir. yani logic 1
GPIO_SetBits(GPIOD,GPIO_Pin_15);

/* yada asagidaki gibi tek satirla hepsi Set edilebilir
[ GPIO_SetBits(GPIOD,GPIO_Pin_12 | GPIOD,GPIO_Pin_13 | GPIOD,GPIO_Pin_14 | GPIOD,GPIO_Pin_15 |); */ ]

}

}

programı artık STM32F4 discovery board'a yükleyebilir. öncelikle derleme işlemi yapılır. sonra aşağıdaki resimde gösterildiği gibi yüklenir:

Derleme işlemi aşağıdaki gibidir



KODU Yüklem işlemi de aşağıdaki gibidir.


Bu işlemler yapıldıktan sonra discovery board'da 4 ledin de yandığını göreceksiniz.

İyi Çalışmalar.




                                                                                                                                   

0 - STM32F4 Discovery Board Sıfırdan Proje Oluşturma

Merhaba Arkadaşlar,
Kullanacağımız program KEIL-uVision4 derleyicisidir. Daha sonra yeni sürüm olan KEIL-uVision5 ile de kurulum anlatılacaktır.
Öncelikle sıfırdan proje oluşturabilmek için bazı dosyalara ihtiyacımız vardır. Bunlar:
*             CMSIS
*             STM32F4xx_StdPeriph_Driver
Dosyalarıdır. Bu dosyaları internetten indirebilirsiniz ya da kendi kullandığım dosyaları da link vererek aşağıda paylaşacağım. Hangisini kullanmak istiyorsanız onu siz bilirsiniz.
Eğer elinizde kütüphane dosyaları bulunmuyorsa : “  https://yadi.sk/d/ux2sozksuTBgh  “  bu linkten indirebilirsiniz. İndirdiğiniz dosyayı bir klasöre yerleştirin. Proje oluştururken gerekli olacaktır.

Daha sonra Keil programını açın. Aşağıdaki gibi bir görüntü olacaktır.


1 -  “ Project “ sekmesine tıklayın.
2 –  “ New uVision Project “ i seçin.
3 –  Burada sizden projeyi hangi klasöre kaydetmek istediğinizi soracaktır. Siz daha önce kütüphaneleri koyduğunuz dosyayı seçin. İsmine de projenin ismini yazın. Örnek : “ deneme ”
Bu işlemleri yaptığınızda karşınıza aşağıdaki gibi bir görüntü gelecektir.


4 – Burada “ ok “ butonuna basın ve daha sonra aşağıdaki görüntü gelecektir:


5 – “ STM32F407VG “ yi seçin ve ok butonuna basın. Karşınıza aşağıdaki ekran gelecektir:


6 – Burada da Evet butonunu tıklayın. Yukarıdaki işlemleri yaptıktan sonra projenin startup dosyaları otomatik olarak projeye eklenmiş olacaktır.
7 – Son görüntü aşağıdaki gibi olacaktır. Buradan Target1 yazan klasörün “+” kısmına basarsanız  Source Group 1 dosyası açılacaktır. Onun da “+” kısmına basarsanız aşağıdaki görüntü ekrana gelecektir. 

 

8 – Burada Target üzerine sağ tıklayıp “Add Group” sekmesini tıklayın ve alt tarafta “New Group” klasörünü göreceksiniz. Oradan New Group ismini “CMSIS” diye değiştirin. Aynı işlemleri tekrarlayın ve yeni oluşan grup ismini de “Library” diye değiştirin.


9 – ekran görüntüsü aşağıdaki gibi olacaktır. (isim değişmeden önce CMSIS yerine New Group yazıyordu. Aynı şekilde Library klasörünün ismi de).
Aynı işlemleri tekrar yapın ve bir de USER klasörü oluşturun. (target üzerine sağ tık -> add new group ->çıkan klasörün ismini de USER diye değiştirin) 


10 – USER klasörüne sağ tıklayıp oradan “ Add New Item to Group USER” sekmesini tıklayın.


Karşınıza aşağıdaki ekran görüntüsü gelecektir. Buradan sol taraftaki “ C File (c) “ yi seçin ve alt tarafta Name: yazan yere “main.c” yazın ve Add butonuna basın.


11- Ekran görüntüsü aşağıdaki gibi olacaktır. (USER’in sol yanındaki +’ya tıklayın main dosyasına çift tıklayın büyük alanda main.c dosyası açılmış olacaktır.


12 – Sol tarafta bulunan daha önce eklemiş ve ismini CMSIS olarak değiştirdiğimiz klasöre çift tıklayın. Karşınıza yeni bir ekran çıkacaktır (aşağıdaki gibi bir ekran gelecektir). Burada daha önce indirdiğiniz kütüphaneden ( benim verdiğim linkteki için)
Libraries -> CMSIS -> ST -> STM32F4XX -> Source -> Templates -> system_stm32f4xx.c dosyasını seçin ve Add butonun basın. Sonra pencereyi kapatın. Dikkat edin C dosyası olması gerek.
Daha sonra yine Programın solundaki CMSIS klasörüne çift tıklayın:
Libraries -> CMSIS -> ST -> STM32F4XX -> Include -> system_stm32f4xx.h ve stm32f4xx.h dosyalarını seçin ve Add butonun basın. Sonra pencereyi kapatın.
Daha sonra yine Programın solundaki CMSIS klasörüne çift tıklayın:
Stm_dosyalari -> stm32f4xx_it.c  dosyasını seçin ve Add butonun basın. Sonra pencereyi kapatın.


13 – ekran görüntüsü aşağıdaki gibi olacaktır.


14 – Daha sonra yine Programın solundaki Library klasörüne çift tıklayın:
Libraries -> STM32F4xx_StdPeriph_Driver -> src -> misc.c , stm32f4xx_gpio.c ve stm32f4xx_rcc.c  dosyalarını seçin ve Add butonun basın. Sonra pencereyi kapatın.


Artık kütüphaneler kısmını halletmiş olduk. Şimdi sıra bu dosyaların yerini derleyiciye bildirmemiz gerekiyor.

1 – Derleyicinin üst tarafında bulunan Project -> Options For Target 1 kısmına aşağıdaki gibi tıklıyoruz.


*** Yada ikinci bir yöntem aşağıda gösterilen resme tıklıyoruz.


2 – karşımıza bir pencere açılacak.


Burada öncelikle Target kısmındaki Xtal (Mhz) kısmına 8.0 yazıyoruz. (kristalimiz 8 Mhz)


Daha sonra C/C++ kısmını açıyoruz ve Define kısmına:
 USE_STDPERIPH_DRIVER, HSE_VALUE=8000000, STM32F4xx  yazıyoruz.


3 - Daha sonra yine C/C++ kısmını açıyoruz ve include Paths kısmında aşağıdaki resimde gösterilen yere (…) tıklayın:


Burada aşağıdaki ekran görüntüsünde görüldüğü üzere bir pencere açılacaktır:


Burada önce 1.gösterilen yere tıkladıktan sonra 2.gösterilen yer beyaz olan boş sayfaya gelecektir. Buradan da 2. Gösterilen yere (… ) tıklayın.
Açılan pencerede daha önce yukarıda eklemiş olduğumuz ( c ) ve ( h ) dosyalarının olduğu klasörleri seçin. Aşağıda bir örneği resimde gösterilmiştir:


Burada daha önce indirdiğiniz kütüphaneden ( benim verdiğim linkteki için)
Libraries -> CMSIS -> ST -> STM32F4XX -> Source -> Templates klasörünü seçin ve Tamam butonun basın.
Yine beyaz olan boş sayfaya gelin ve buradan da altta oluşan kesikli çizgilerle kare şeklinde olan yerin sonundaki yere (… ) yine tıklayın. Libraries -> CMSIS -> ST -> STM32F4XX -> Include klasörünü seçin ve Tamam butonuna basın.
Yine aynı şekilde yukarıdaki resimde gösterildiği gibi 1.gösterilen yere tıklayın ve yine ardından altta oluşan kesikli çizgilerle kare şeklinde olan yerin sonundaki yere (… ) yine tıklayın. Stm_dosyalari klasörünü seçin ve Tamam butonuna basın.
Yine aynı şekilde yukarıdaki resimde gösterildiği gibi 1.gösterilen yere tıklayın ve yine ardından altta oluşan kesikli çizgilerle kare şeklinde olan yerin sonundaki yere (… ) yine tıklayın. Libraries -> STM32F4xx_StdPeriph_Driver -> src  klasörünü seçin ve Tamam butonuna basın.
Yine aynı işlemleri yaparak son olarak Libraries -> STM32F4xx_StdPeriph_Driver -> inc  klasörünü seçin ve Tamam butonuna basın.
Son ekran görüntüsü aşağıdaki gibi olacaktır:


3 - Daha sonra yine bu penceredeki Debug kısmına geçin ve aşağıdaki resimde gösterilen yerde Settings yazan yerin solundaki 1.gösterilen yere tıklayın ardından da ST-Link Debugger seçeneğini seçin.


4- Daha sonra yine bu penceredeki Utilities kısmına geçin ve aşağıdaki resimde gösterilen yerde Use Debug Driver yazan yerin tiki kaldırın ve sol tarafta – Use Debug Driver – yazan yere aşağıdaki gibi seçenek gelecektir. Ardından da ST-Link Debugger seçeneğini seçin.


5- Daha sonra yine bu penceredeki Settings butonuna basın ve aşağıdaki resimde gösterildiği gibi bir pencere açılacaktır. (NOT: eğer açılmadı ise Flash Download sekmesine tıklayın)  Buradan da 
Reset and Run yazan yere tik koyun. Eğer aşağıda gösterilen resimde Description altında STM32F4xx Flash ile başlayan kısım yok ise alttaki Add butonuna basın ve açılan pencereden                                      “STM32F4xx Flash                         1M “ yi seçin. 


Daha sonra yine son açılan penceredeki Debug sekmesine tıklayın. Aşağıdaki gibi bir görüntü elde edeceksiniz.


Burada da “Max Clock” kısmından “ SW “ seçeneğini işaretleyin. Ve sağ tarafa baktığınızda artık işlemcinizin IDCODE ve ADININ çıktığını göreceksiniz.

Pencereleri Tamam deyip kapatın.
****/////////////////////////////////////////////////////////////////////////////////////////////////////
Artık kod yazmaya başlayabilirsiniz.
Son olarak aşağıdaki resimde gösterilen kodları yazın ve resimde gösterilen yere tıklayın ve kodunuz derlenmiş olacaktır.

 

Daha sonra ilk kod denemesi için tekrar yükleme yapılacaktır.

                                                                                                                                              
STM32F407VGT6 Dersleri