Stm32f4 discovery Debug hatası

Başlatan Kaanx, 09 Şubat 2013, 15:54:46

Kaanx

Merhaba arkasalar stm32f4 için atollic kullanıyorum ve yazdıgım bu basit kodu debug ederken sureklı su hatayı alıyorum hazır indirdğim kodları debug ederken sorun olmuyor fakat benım olusturdugum systeminit te bu hatayı verıyor yardımcı olursanız cok sevınırım.İyi günler
http://g1302.hizliresim.com/16/9/jycv0.png

z

Projeden main.c ve startup_????.s harici tüm dosyaları kaldır at.

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

fatih6761

#2
Bülent hocam sorun orada değil.
Atollic, CooCox gibi ARM IDE'lerde SystemInit fonksiyonu "system_stm32f4xx.c" dosyasında bulunuyor. Osilatör ayarları, harici RAM, FPU ayarları vs. yapmak için o dosyadaki SystemInit fonksiyonunu değiştirmek gerekiyor. Ayrıca bir SystemInit yazmaya gerek yok.
EVAL_AUDIO hataları ise ST nin Audio Codec sürücüsünü kullanmanızdan kaynaklanıyor. Bu sürücü ("stm32f4_discovery_audio.c") Callback fonkiyonlarla çalışıyor (yazılımsal kesme gibi).
Bu fonksiyonları da yazmanız yeterli yani main.c içinde en sona şunları ekleyin:
uint16_t EVAL_AUDIO_GetSampleCallBack(void)
{
    return 0; // ses çipini kullanıyorsanız tek sample veriyi burada return ile döndürün.
}
void EVAL_AUDIO_TransferComplete_CallBack(uint32_t pBuffer, uint32_t Size)
{
    return; // ses çipini kullanıyorsanız  burada çipe veri aktarımı DMA sona ermiş
}

Bir de Atollic'e çok benzeyen CooCox var, tamamen ücretsiz kod sınırı yok vs. Hem doğrudan kullanabiliyorsunuz, hem de kendi içinden ST Peripheral sürücülerini destekliyor.
Register'larla bit bit upraşmanız gerekmiyor. Özel fonksiyonlar var orjinal ST kütüphaneleri. Mesela:
#include <stm32f4xx.h>
#include <stm32f4xx_rcc.h>
#include <stm32f4xx_gpio.h>

int main()
{
        GPIO_InitTypeDef GPIO_InitStructure;

	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_UP;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
	GPIO_Init(GPIOD, &GPIO_InitStructure);
}

Hem böyle kod daha okunaklı oluyor. Kısmen çok az bir hız farkı olabilir, Init fonksiyonlarında cycle düzeyinde daha yavaş çalışır. Ama netice de 168MHz CPU var elimizde :)

Kaanx

Cok tesekkur ediyorum dedıklerınızı denedım.fakat baslık onaylanana kadar ben kendım bir kac çözum arayısına girdim onu paylasım sizlerle
System_stm32f4xx.c dosyasında systeminit de hata verıyor ve buraya olusturdugumuz system initi yazdım eski kayıtlı olanı silip sonra auido codec teki hata verdiği yerleri // yaparak iptal ettim o sekılde derledım saglıklı bi çözum olmayabilir ama kısa vadeli bir çözüm :)