Stm32f4 Library komut mı register komut mu ?

Başlatan Kaanx, 09 Şubat 2013, 23:24:11

Kaanx

Merhaba arkadslar arm zor bir mcu ve bir cok register bulunmakta bu konuda zorluk yasamaktayım.Acaba kütüphaneleri kullanıp program gelıstırmek mi daha iyidir yoksa bit bit işlem yapıp registerlara yükleyip mi yapmak uygundur nasıl bir yol izlenmelidir sizce ? düsüncelerinizi paylasırsanız sevinirim.

LukeSkywalker

İlk olarak register düzeyinde programama yapın olayı çözene kadar, daha sonra eğer isterseniz kütüphane de kullanabilirsiniz.

mistek

Benim tavsiyem vaktiniz varsa datasheet karıştırarak temel düzeyde çalışın birini iyi öğrenin. Diğerleride benzer olacaktır zaten standart kütüphane kullanırsınız.
boş işlerin adamı ---- OHM Kanunu: I = V/R ---- Güç Formülü: P = V*I = I^2*R = V^2/R

Kaanx

#3
Msp430 ve Pıc te alıstık register islem yapmaya aslında bundada böyle gidelim diye dusundum ama cok zorlayıcı oluyor kutuphanesini bile çözmek ayrı bir zor  denebilir :) Kutuphaneyle yapılmıs pek turkce kaynakda bulmak ta zor buda otomatik olarak bizi bit bit işleme yöneltıyor kutuphane dosyalarının kullanımları ve ya karsılıkları ile ilgili dökuman bulunur mu ?

Klein

Kütüphane ile ilgili doküman bulmak kolay değil. Ancak örnek bulmak çok kolay. İlla registerlerle yapacağım diye kasmanın hiç gereği yok. Datasheet okumayı seviyorsanız, boş kaldıkça registerleri kurcalayabilir, kütüphane fonksiyonlarının registerleri nasıl kullandığını inceleyebilirsiniz. Hatta bu şekilde çip hakkında daha fazla şey öğrenebilirsiniz. 

pisayisi

Örneğin firmware kullanılarak yazılan basit bir kodda PD12 bitini set yapmak istediğimizde,

GPIO_SetBits(GPIOD, GPIO_Pin_12);


Bu kodun izini sürdüğünüzde stm32f4xx_gpio.c dosyasında GPIO_SetBits satırını arattığınızda,

void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
{
  /* Check the parameters */
  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
  assert_param(IS_GPIO_PIN(GPIO_Pin));

  GPIOx->BSRRL = GPIO_Pin;
}


Dolayısı ile firmware in yaptığı
GPIOx->BSRRL = GPIO_Pin;


register tabanlı tek satırlık kodu çalıştırmak olacaktır. Kütüphane dosyaları üzerinde merak yolu ile hiç bir dökümana bakmadan  registerlar konusunda pekçok şey öğrenebilirsiniz...
Murat