STM32F407 Cortex M4 şamataları

Başlatan bunalmis, 16 Ekim 2011, 17:14:50

sseedat

teşekkürler görmemişim orayı.
Görünmez bir mezarlıktır Zaman...

sseedat

stm kiti üzerinden veriyi gönderip PB10 ile PB11 i birbirine bağlayıp veriyi tekrar okumaya çalışıyorum fakat bi türlü veriyi alamadım kodlar şu şekilde nerde hata yapıyorum acaba?

#include "STM32F4xx.h"
#include "Delay.c"
#include "HD44780.c"
#include "stdio.h"

void SystemInit()
{
unsigned int i;
      for (i=0;i<0x00100000;i++);     // OSC oturtma ve kurtarma rutini
      RCC->CFGR |= 0x00009400;        // AHB ve APB hizlarini max degerlere set edelim
      RCC->CR |= 0x00010000;          // HSE Xtal osc calismaya baslasin       
      while (!(RCC->CR & 0x00020000));// Xtal osc stabil hale gelsin
      RCC->PLLCFGR = 0x07402A04;      // PLL katsayilarini M=4, N=168, P=2 ve Q=7 yapalim   168 Mhz
      RCC->CR |= 0x01000000;          // PLL calismaya baslasin  (Rehber Sayfa 95)
      while(!(RCC->CR & 0x02000000)); // Pll hazir oluncaya kadar bekle
      FLASH->ACR = 0x00000605;        // Flash ROM icin 5 Wait state secelim ve ART yi aktif edelim (Rehber Sayfa 55)
      RCC->CFGR |= 0x00000002;        // Sistem Clk u PLL uzerinden besleyelim
      while ((RCC->CFGR & 0x0000000F) != 0x0000000A); // Besleninceye kadar bekle
      RCC->AHB1ENR |= 0x0000001F;     // GPIO A,B,C,D,E clock'u aktif edelim
     GPIOD->MODER = 0x55000055;     // GPIOD nin 15, 14, 13, 12 pinleri cikis tanimlandi (LEDler icin) 0..7 arasıda çıkış
     GPIOB->MODER = 0x00000500;     // GPIOB 4 ve 5 i çıkış yaptık.

     GPIOA->OSPEEDR= 0x00000000;   // GPIOD nin tum cikislarinı Max. 2 Mhz de kullanacağız.
     GPIOB->OSPEEDR= 0x00000000;	  // AYnı şey GPIOB içinde geçerli
     GPIOC->OSPEEDR= 0xFFFFFFFF;
     GPIOD->OSPEEDR= 0x00000000;
}
 

void usart_init()
{
      RCC->APB1ENR|=0x00040000;
	  GPIOB->MODER|=0x2AA00000;  
      GPIOB->AFR[1]=0x07777700;       
      USART3->BRR=0X1112;    // 9600 Baud 
      USART3->CR1|=0x0000202C;  // USART3 enable

}

void ilet(char *veri)
{
      while(*veri)
        {
          while(!(USART3->SR&0x80));
           USART3->DR=*veri++;
        } 
}
 
 
char oku()
{
  while(!(USART3->SR&0x20));
   	
      return(USART3->DR);
	  
}
  
int main()
{

unsigned char diz[]="";
      usart_init();
	  lcd_init();
      ilet("veri");

      while(1)
	  {
	  lcd_git(1,1);  
	  sprintf(diz,"%c",USART3->DR);
	  lcd_yaz(diz);
	  
	  }
}


Görünmez bir mezarlıktır Zaman...

SpeedyX

Alıntı yapılan: muhittin_kaplan - 20 Ekim 2012, 13:43:52
    GPIOA->CRL &= 0x00000000;   //Aportu analog giriş
    GPIOA->CRL |= 0x00000000;     
    GPIOA->CRH &= 0x00000000;
    GPIOA->CRH |= 0x00000000;    
    DAC->CR |=0x00000003; 		//DAC Channel1 Enable, Buffer Disable
//-------------------------------------------------------------------------------------------------	
    GPIOC->CRL &= 0x00000000;
    GPIOC->CRL |= 0x33333333;     //PC0-7 Çıkış olarak ayarlandı (Max 50MHz)
    
    GPIOC->CRH &= 0x00000000;
    GPIOC->CRH |= 0x33333333;    //PC8-15 Çıkış olarak ayarlandı (Max 50MHz)


Yukarıdaki kodda 0x00 ile and leyip yine 0x00 ile or luyor. Bir altında 0x00 ile and leyip, 0x333.. ile or luyor.
Bunların yerine ilkinde 0x00 a eşitlesek, ikincisinde de 0x333.. e eşitlesek olmaz mı?

    GPIOA->CRL = 0x00000000;     //Aportu analog giriş
    GPIOA->CRH = 0x00000000;
    DAC->CR |=0x00000003; 		//DAC Channel1 Enable, Buffer Disable
//-------------------------------------------------------------------------------------------------	
    GPIOC->CRL = 0x33333333;     //PC0-7 Çıkış olarak ayarlandı (Max 50MHz)
    GPIOC->CRH = 0x33333333;    //PC8-15 Çıkış olarak ayarlandı (Max 50MHz)

9 satır kod için aslında bu 5 satır yeterli değil mi?

muhittin_kaplan

Hocam Hatırlmıyorum ama denemiş bir problem görmüş (belki oradan kaynaklı değildi) değiştirmemiştim.
Olması gerekir.

Klein

Alıntı YapYukarıdaki kodda 0x00 ile and leyip yine 0x00 ile or luyor. Bir altında 0x00 ile and leyip, 0x333.. ile or luyor.
Bunların yerine ilkinde 0x00 a eşitlesek, ikincisinde de 0x333.. e eşitlesek olmaz mı?

Olur.

LukeSkywalker

GPIOA->AFR[0] demek GPIOA->AFRL demek midir?

ilhan_mkp

#1161
abiler cok cahilce bir soru olacak ama stm32 bir mcu ile 1adc 10giriş 10 çıkışlı birşeyler yapmak istiyorum.
yazılımdam önce en kaba kılıfta örnek projerlerden faydalanabileceğim bir mcu secmek istiyorum.
burdan sonra sorunlarım başlıyor kitle çalışrken takıyorum usb kablu at kodu gidiyo kendi tasarladığım pcbde kodumu atmam için gerekli olan nedir debug yapma şansım varmı.
yalansöylemiyeyim balık cevaplar çok işime gelir ama en azından bir mcu belirleyip datasheetin neresine kafayı gömecem ona yardımcı olsanız o bile süper olur.

yani kit haricinde kullanırken minimum gereksinimlerimiz nedir.
stm32discover kitindedi örnekler ve kütüphaneler başka mcular için yardımcı olurmu.

muhittin_kaplan

MCU, 5-6 adet kondansatör 3.3v kaynak,
Diskovery kitin varsa yükleyiciye ve debugger e de ihtiyacın yok.

brlesc

Üstatlarım kolay gelsin
STM32F4 ile vaktim oldukça bi şeyler yapmaya çalışıyorum bu gün  Bülent hocanın forumdaki uart  örneklerinden birini birazcık değiştirdim yani pc den gönderdiğim karaktere göre kit üzerindeki istediğim ledi yakıyorum fakat ledi bi kez yaktıktan sonara söndürmek için kod gönderdiğimde led tam olarak sönmüyor cok az da olsa bi yerlerden akım çekiyor bunun nedenini bi türlü anlamadım.. usb-rs232 dönüştürü olarak daha önce de piclerle de sorunsuz kullandığım tusb3410 entegreli bi dönüştürücü kullanıyorum. bu durumun sebebi ne olabilir yardım edebilirmisiniz
edeb ya hu...

ilhan_mkp

Alıntı yapılan: muhittin_kaplan - 01 Şubat 2013, 23:51:18
MCU, 5-6 adet kondansatör 3.3v kaynak,
Diskovery kitin varsa yükleyiciye ve debugger e de ihtiyacın yok.

hocam kit sizlere ömür birde aklıma şöyle bişi geliyor basicle hobisine bişiler yaptım mikroişlemcilerle tanışmış oldum.
biraz avr asm olayına gireyim dedim gerbay hocamın deyimiyle sonrasına bir faydası olmayacak arm ağır geliyor.
ben en iyisi armdan önce bir stm8 kiti alıp onla biraz c idmanı yapıp döneyim.
arm kiti yakında bir abim getirecek ama benim için hala çok zor sanki stm8 örnekleri daha acemilere göre.
fikirleriniz görüşleriniz benim için çok önmli basit sorunlarıda forumda yazmak istemiyorum.
c öğren gel falan gibi cevaplar alıyorum.
kendim bişiler tasarlamak istiyorum c öğrenmek amacıyla.

LukeSkywalker

Benim soru kaynadi mi arada?
C idmanini elinde pic varsa onunla da yapabilirsin.

muhittin_kaplan

#1166
Alıntı yapılan: ilhan_mkp - 02 Şubat 2013, 00:41:42
hocam kit sizlere ömür birde aklıma şöyle bişi geliyor basicle hobisine bişiler yaptım mikroişlemcilerle tanışmış oldum.
biraz avr asm olayına gireyim dedim gerbay hocamın deyimiyle sonrasına bir faydası olmayacak arm ağır geliyor.
ben en iyisi armdan önce bir stm8 kiti alıp onla biraz c idmanı yapıp döneyim.
arm kiti yakında bir abim getirecek ama benim için hala çok zor sanki stm8 örnekleri daha acemilere göre.
fikirleriniz görüşleriniz benim için çok önmli basit sorunlarıda forumda yazmak istemiyorum.
c öğren gel falan gibi cevaplar alıyorum.
kendim bişiler tasarlamak istiyorum c öğrenmek amacıyla.
Amacın ARM 32 ile çalışmaksa hiç uğraşma 8 e felan.
sana önerim şu olur. her halukarda bir debugger programmer gerekli. STM discovery kitin neresi bozuldu ? PC ye taktığında ST link i görmüyormu yoksa sadece işlemcimi gitti.
bir adet expkit in yada elektrotasarımın çevirici PCB sinden al işlemcine göre. bende 32f103rb nin lqfp64 paketine göre olanı var onu kullanıyorum. Böyle bir çalışma yapabilirsin. C gözünde büyüteceğin kadar zor değil. Halledilir.
Kolay gelsin

mesaj birleştirme:: 02 Şubat 2013, 10:02:50

Alıntı yapılan: LukeSkywalker - 01 Şubat 2013, 20:52:55
GPIOA->AFR[0] demek GPIOA->AFRL demek midir?
Evet Mantık Olarak Aynı, Ama AFRL olarak Kullanımını Görmedim. KOntrol gerektirir.

LukeSkywalker


muhittin_kaplan

Debug ederek deneme yapmak lazım.

ttg

#1169
arkadaşlar ben konuları yeni okuyorum. Keil i yeni indirdim ve sanırım varsayılan kütüphane dosyaları bende farklı. Derlerken hata vermiyor fakat led yakma uygulaması bile çalışmıyor. Burdaki projeleri indirip indirdiğim projelerde yer alan kütüphane dosyalarını kullandığımda yine derleniyor ve çalışmaya başlıyor.

Bu işlemin sebebini bilen bir arkadaş var mıdır? Kütüphane dosyasını program dizininde bulup eski dosyayı atmaktan daha iyi bir çözüm arıyorum.
4 Buçuk Saatlik Python Eğitimi [Ücretsiz] www.youtube.com/gryyldrm