Önceki yazımda STM32 Discovery kartı için Keil geliştirme ortamında “Blinky” projesini incelemeye başlamıştık. Şimdi de kartın üzerindeki STM32F100RB işlemcisini tanımaya başlayalım:
STM’nin sitesindeki bilgilerde işlemcinin temel özellikleri:
- 32 Bit ARM Cortex-M3 çekirdek: 24 Mhz maksimum hız
- Bellek: 128 Kb Flash, 8 Kb SRAM
- 12 bit ADC
- 2 Adet 12 bit DAC
- 6 adet Timer
- 2 SPI, 2 I2C, 3 USART haberleşme birimi
- 51 adet IO
- CRC hesaplama ünitesi
- 7 Kanal DMA
- Serial Wire Debug (SWD) ve JTAG arabirimi
ARM Cortex-M3:
Daha önceki yazılarımda ARM mimarisi ile ilgili kısaca bilgi vermiştim. Cortex serisi ARM firmasının son yıllarda geliştirmeye başladığı bir seridir. M3 serisi genel olarak daha önceki ARM7 serisinin yerini almaya başlamış, 8-16 bit işlemcilerin kullanıldığı projelerde daha yüksek performansı aynı düşük güç tüketimiyle sağlamayı amaçlayan bir seridir. Cortex-M3 ile ilgili ayrıntılı bilgiyi referans dökümanında bulabilirsiniz.
[ad#ad-1]
STM32F100RB:
İşlemcimizin veri dökümanında işlemcimizin çevre birimleri ve çekirdeğinin blok diyagramı bulunmaktadır:
İşlemcinin dökümanları oldukça uzun ve karmaşık gibi görünebilir. Ama başta da söylediğim gibi en basitten başlayıp adım adım gitmekte fayda var. Elimizde hazır bir donanım olduğundan direk olarak birçok ayrıntıyı şimdilik atlayabiliriz.
[ad#ad-1]
CMSIS:
Projenin kodlarını incelemeye başlamadan önce CMSIS (Cortex Microcontroller Interface Standard) nedir bunu inceleyelim. CMSIS, ARM firması tarafından farklı firmalar tarafından üretilen bütün Cortex serisi çekirdeğe sahip işlemciler için ortak bir yazılım kütüphanesinin adıdır. CMSIS donanım birimleri ile uygulama yazılımı arasındaki ara soyutlama katmanını (hardware abstraction layer) oluşturuyor. Böylelikle üreticilere ve geliştirme araçlarına bağlı kalmadan genel olarak Cortex çekirdeğe sahip işlemciler için yazılım bileşenleri oluşturmak mümkün oluyor ve yazılım taşınabilirliği, yeniden-kullanım sağlanıyor. CMSIS ile ilgili daha ayrıntılı bilgiyi ARM ve Keil firmalarının sitelerinde bulabilirsiniz.
Projede butonlar ve LED çıkışları kullanıldığından önce ilgili kaydedicilerle IO portları ayarlarının yapılması gerekiyor. İşlemcimizde her bir çevre biriminin saat frekansı kontrol edilebiliyor. Böylelikle kullanılmayan çevre birimleri kapatılarak güç tasarrufu sağlanıyor.
Bir LED yakıp söndüren yazılım bile ne kadar karmaşık diye düşünüyor olabilirsiniz. Ama unutmayın “herşey bir LED’i yakmakla başlar”.