STM32 ve ARM Hakkında sorularım

Başlatan enrique_iglesias, 10 Şubat 2017, 22:49:46

enrique_iglesias

Arkadaşlar herkese merhaba;
İleri seviyeden biraz daha alt seviyede 8 Bit PIC kullanıcısıyım ve aynı seviyede picbasic,proton kullanıcısıyım, şuana kadar isteyipte yapamadığım şeyler elbette oldu ama genel olarak beni kurtardı...

Şimdi artık teknolojiye birazdaha yakınlaşarak 32 bit işlemcilere; STM32 mikrodenetleyiciler ile girmek istiyorum.1 Haftadır araştırıyorum kafam allak bullak oldu; Okumaktan, video izlemekten gözlerim şişti, aklıma takılan bazı sorular ve anladığımı doğrulamaya ihtiyacım var;

1 HAFTA İÇİNDE YAŞADIĞIM TECRÜBELER BUNLAR; (Psikolojimi anlayın diye yazıyorum)

1) STM32F072B işlemcili bir board siparişi vererek ilk işe koyuldum...

2) Keil uVision5 indirdim kurdum,kurcaladım,alakalı tüm videoları izledim,proje oluşturdum v.s.(Kod yazmadım!!!!)

3) Kod yazayım dedim kütüphaneler karşıma çıktı,altı üstü bir çıkış pini için satır satır ayarlama kodu yazdılar moralim çöktü.

4) Kütüphaneleri declare edeyim dedim,Device altında GPIO, Framework seçeneklerini bulamadım, videodaki görüntülerden farklı farklı şeyler önüme geldi paketler,downloadlar,kütüphane versiyonları v.s. gördüm moralim dahada çöktü sinirlerim bozuldu. Kendimi aptal gibi hissettim.

4) Kütüphaneleri v.s. çözmeye çalışırken CubeMx denen yardımcı generator ile tanıştım. İndirdim, kurdum, Kurcaladım v.s. çözdüm çok hoşuma gitti moralim yerine geldi. :)

5) Bir örneğe baktım direk registerlarla oynadılar, başka bir örneğe baktım Hal kütüphaneleri falan gördüm, beynim döndü ne yapıyorum diyerek ağlamaklı oldum.

SORULARIM;

1) stm32f030x6.h anladığım kadarıyla denetleyicinin tüm registerlerini tanımladığı benim ilk ve olmazsa olmaz kütüphanem doğru mu? Yani kütüphanem falan filanım yok ise buradaki registerleri işleyerek(bitsel işlemlerle) STM32'yi programlayabilir miyim?

2) hal kütüphanesi nedir? Bu kütüphanedemi çalışmam uygun yoksa üstte belirttiğim gibimi çalışmam daha uygun?

3) PIC'deki gibi boş bir sayfa açıp yazmaktan ziyade bir ton ayarlama yapmamız gerekiyor bunun en kolay yoluda CubeMX generator kullanmakmıdır?

4) CubeMX kullandığımda Keil'de soldaki ağaç penceresinde bir çok dosya include ediliyor.Ben yazmadığım için bunlar beni çok rahatsız ediyor. Hepsi gerekli mi? (necessary işaretliyorum)

5) Online olarak sürekli kütüphane (işlemci serisi) indiren bir IDE beni kendine mahkum etmiş olmuyor mu? Bu hizmetini ya durdurursa nasıl bir önlem almalıyım? Neye alışmalıyım?

6) GPIOD->ODR=0x4000 komutu PORTD.14 'ü high yapıyor doğru mu?

7) PIC'de hep binary yazardım PORTD=%10000000 gibi.
     STM32'de  GPIOD->ODR|= %0000000010000000 gibi mi yazmam gerekiyor?

8) HAL_GPIO_WritePin( GPIOD , GPIO_PIN_7 , GPIO_PIN_SET ); üstteki ile aynı anlam mı taşıyor?

9)
#include "stm32f0xx.h"                  // Device header

#define hepsilow GPIOA->ODR=0x0;
int main()
{
	hepsilow;
}


tüm portları low yaparmı kütüphaneden kasıt bunun gelişmiş halimidir? (BASIC kullanıcısı olarak yazdım)

10) Son sorum malum PIC'lerde tek bir datasheet varken STM32'de bir çok manuel var.... Program Manuel, Referans Manuel, birde datasheet var hangisi hangi amaçla yazılmış çözemedim.

Şimdilik ilk kafama takılanlar bunlar saçma sapan gelebilir mazur görün kafam yerinde değil doldu taştı, cevaplarınız için şimdiden teşekkür ederim....

Saygılarımla
Murat





skara1214

sorularına cevap verebileceğim kadar vereyim;
-cube mx kullan, internette örnek çok, hatta benimde 2 videom var inşallah devamını getireceğim.
-stm32f103 serisini kullan arm kullandığını o zaman anlarsın . stmf0da çok iyi ama başlangıç için stm32f103 iyidir.
-firma desteği kesmez. konuştugumuz firma basit bir çin firması değil koskoca st. desteği kesip kendi ayağına sıkmaz.
-normalde register kullanırım yanız pin set _reset etmek için hal libraryi kullandım. işin çok başında aklını karıştırma.
Herkes ölür ama herkes gerçekten yaşamaz

enrique_iglesias

Serkan Hocam merhaba;
2 videonuzu sanırım ezberledim :) ikincisini anladım ama bana biraz hard geldi, takip ediyorum sizi ayrıca teşekkür ederim... Board STM32F072 olarak artık elime ulaştı , yıllar önceki gibi led yak sön yapıyorum :) hatta polis ışığı ambulans ışığı falan kombinasyon v.s. yapıyorum, eşim bana gülüyor :P Neyse alışacağız ümit ediyorum...

Hal kütüphane örneklerini barındıran bir kaynak varsa pahlaşırsanız memnun olurum ayrıca....

Saygılarımla
Murat

ferdem

Benim de tecrübem yok ama 10. soruya cevabım:
10) Datasheet+ reference manuel olarak gidiyor. Datasheet genel bilgiler: pinout, pin functions, electrical characteristics...  reference manuelde ise donanımların detayı ve register lar ile ilgili bilgiler buluyorsunuz.

Soruları netleştirmek de önemli, yolun yarısı :)
HAL library konusu forumda konuşuluyordu, eski başlıklara bir bakabilirsiniz. Keil e alternatif olarak GNU-ARM compiler ı Embitz IDE si ile kullanabilirsiniz.

enrique_iglesias

İki led yakınca moralim yerinde geldi :)
3 günde HAL ile gönderme alma beceremedim güya işimizi kolaylaştıracak...
Bugün Allah'ın cezası HAL kütüphanelerini bir kenara atıp direk donanımla muhatap oldum USART kullandım....
Zaten basic kullanıcısıydım, c'ye geçmişim birde pic'i bir kenara bırakıp 32 bit denetleyiciye geçmişim herşey ters gitti sivilcelerim azdı :( neyse c'ye alıştıkça arm'yi daha iyi anlıyorum çok şükür :) sanırım biraz sabır etmem gerekiyor :)

muhittin_kaplan

3 gün bu kadar değişiklikten sonra (basic->c,  pic->stm32) 3 gün için şikayet etmeyin.


enrique_iglesias

Alıntı yapılan: muhittin_kaplan - 14 Şubat 2017, 23:15:28
https://www.picproje.org/index.php/topic,68158.msg524542.html#msg524542

Alıntı yapılan: muhittin_kaplan - 14 Şubat 2017, 23:15:28
https://www.picproje.org/index.php/topic,68158.msg524542.html#msg524542

Muhittin Hocam evet yeni doğmuş gibiyim...

Ayrıca link için teşekkürler baya baya anlatmışsınız. Bu videoyu kaçırmışım ben oda şundan kaynaklanıyor Forum Ana sayfası üzerinde konu başlıkları sanki biraz dağılmış gibi..

Yalnız videoda dikkatimi çekti, zaman çubuğunda 21:51'de ;
if (HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0)){ 
//v.s.........
}

Bu kodda hiç karşılaştırma kullanmadık ==1 veya ==0 gibi karşılaştırma kullanmamız gerekmiyormuydu?
Bu C canımı alacak benim...

pea

Alıntı yapılan: enrique_iglesias - 15 Şubat 2017, 10:24:10

if (HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0)){ 
//v.s.........
}

Bu kodda hiç karşılaştırma kullanmadık ==1 veya ==0 gibi karşılaştırma kullanmamız gerekmiyormuydu?
Bu C canımı alacak benim...


if bloğu, içerisinin 0 olup olmamasına bakar.
HAL_GPIO_ReadPin(Port, Pin) fonksiyonu da pin HIGH ise 1, LOW ise 0 dönüyordur zaten.

if(1==1) gibi bir karşılaştırmaya da gerek yok.

Farklı değerler dönen bir fonksiyon kullandığınızda karşılaştırma kullanırsınız, burada gerekmiyor.

JKramer

if (HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0))

if (HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0) == 1)

Bu ikisi ayni.

if (!HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0))

if (HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0) == 0)

Bu ikisi de ayni. (Unlem isaretine dikkat)

enrique_iglesias

Anlaşıldı çok teşekkür ederim....