Stm32f4 kodları atıyorum ama kitte gözükmüyor

Başlatan l0rd, 11 Mayıs 2015, 01:13:58

l0rd

Merhaba ;

Ben stm32f4 ile programlamaya yeni başladım boş vakitlerimde uğraşmaya çalışıyorum.Karta registerları kullanarak kodladığım programı yükleyince ledlerde değişim görüyorum.Fakat standart peripheral kütüphanesi ile aynı kodu yazdığımda ledlerde hiç bir değişiklik yok.Yaptığım aşamaları aşağıya yazacağım hatamı bulan cevap yazabilirse çok iyi olur :)

Öncelikle yazdığım kod bu (Ledler ve Buton çalışıyor mu diye kontrol etmek istemiştim)

#include "stm32f4xx.h"
#include "stm32f4xx_rcc.h"
#include "stm32f4xx_gpio.h"

GPIO_InitTypeDef GPIO_InitStructure;


void Delay(__IO uint32_t nCount);

int main(){

//Ledler ayarlaniyor
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD,ENABLE);
	
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;
GPIO_InitStructure.GPIO_Speed	= GPIO_Speed_100MHz;
GPIO_Init(GPIOD,&GPIO_InitStructure);
	

//Buton ayarlaniyor.	
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
 
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);


//Ledler kontrol ediliyor
GPIO_SetBits(GPIOD, GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15 );
Delay(0x7FFFFF);
GPIO_ResetBits(GPIOD, GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15);
Delay(0x7FFFFF);
	

while(1){
	
	//Buton kontrol ediliyor
	if (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0)){
	GPIO_SetBits(GPIOD, GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15 );
	}
	else{
  GPIO_ResetBits(GPIOD, GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15);
      }
		}
	}

void Delay(__IO uint32_t nCount){

	while(nCount--){

}
	}


Project Menümde bunlar var



File Extensionsu kontrol ettim bütün dosyalar yerli yerinde.

Target seçeneğim;
Device:STM32F407VG çipi seçili
Target:Xtal 8 Mhz olarak değiştirdim.
Output:Hex kodu için tick işareti koydum.
C/C++ : Define seçeneğine USE_STDPERIPH_DRIVER,STM32F4XX  yazdım ve include pathdan bütün header dosyalarını gösterdim.
Debug:St-Link Debuggeri seçtim ve SW moduna ayarladım.
Utilities:St-Link debuggeri seçtim , STM32f4xx 1 mb flash hafıza ekledim  Core Clocku 168 Mhz ayarladım.

Daha sonra Derlediğimde hatasız derlendi.LOAD  butonuna bastığımda ise hatasız olarak çipe yükledi kartın reset tuşuna basmama rağmen ledlerde hiç bir değişiklik yok.

Nereyi yanlış yapmış olabilirim :)
what you do that defines you

Klein

Çalışmaması iin bir sebep göremedim.
Debug modunda bi bakın. Muhtemelen "Hardware fault" vektörüne gidiyor.
proj seçeneklerinde "Hardvare FPU"  açıksa onu kapatın.

RaMu

#2
Ek:
https://www.picproje.org/index.php/topic,42626.0.html
Konusuna bir bakın, "startup_stm32f4xx.s" ile ilgili durum olabilir.


Butona basmadığında yanacak şekilde değiştirip deneyebilir misin?
Şunun gibi:

    //Buton kontrol ediliyor
    if (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0)){
  GPIO_ResetBits(GPIOD, GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15);
    }
    else{
    GPIO_SetBits(GPIOD, GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15 );
      }
        }
    }


mesaj birleştirme:: 11 Mayıs 2015, 01:48:19

Birde if in içine
if (   GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == 1  )

yazmakta fayda var bence.
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

l0rd

Alıntı yapılan: Klein - 11 Mayıs 2015, 01:41:09
Çalışmaması iin bir sebep göremedim.
Debug modunda bi bakın. Muhtemelen "Hardware fault" vektörüne gidiyor.
proj seçeneklerinde "Hardvare FPU"  açıksa onu kapatın.

@Klein hocam dediğiniz gibi Target menüsünden  Floating Point Hardware seçeneğini Not Used  olarak değiştirdim ve kodu kite attığımda çalıştı.Bu nasıl oldu ? Yani ne değişmiş oldu da benim program çalıştı ? Çok şaşırdım valla ledleri yanık görünce :)

Birde debug yap demişsiniz onun ne olduğunu bilmiyorum yararlı bir şeyse araştırayım hemen bugün :)   Güzel anlatan link biliyorsanız atarsanız memnun olurum.
what you do that defines you

Klein


l0rd

Alıntı yapılan: Klein - 11 Mayıs 2015, 13:19:29
http://www.youtube.com/watch?v=tNUEqQnxEUk
Başlangıç için yeterli.

Teşekkürler hocam izleyeceğim şimdi , peki Keil de Floating Point Hardware seçeneğini Not Used  olarak değiştirince ne değiştide benim program çalıştı ?
what you do that defines you