- ST-LINK V2
- STM32CubeMX
- Gerekli malzemeler
- Devre Şeması ve Bağlantılar
- Keil uVision ve ST-Link kullanarak bir program oluşturma ve STM32'ye yazma
- Keil Programlı STM32 Kartının Çıkışı
- Program
ARM Cortex M mimarisini kullanan STM32 Mikrodenetleyiciler artık popüler hale geliyor ve özelliği, maliyeti ve performansı nedeniyle birçok uygulamada kullanılıyor. Önceki eğitimlerimizde Arduino IDE'yi kullanarak STM32F103C8'i programladık. STM32'yi Arduino IDE ile programlamak basittir, çünkü çeşitli sensörlerin herhangi bir görevi yerine getirmesi için çok sayıda kitaplık mevcuttur, sadece bu kitaplıkları programa eklememiz gerekir. Bu kolay bir prosedürdür ve ARM işlemcileri hakkında derinlemesine öğrenmeye başlayamayabilirsiniz. Şimdi, ARM programlama adı verilen bir sonraki programlama düzeyine geçiyoruz. Bununla, sadece kod yapımızı iyileştirmekle kalmayabilir, aynı zamanda gereksiz kitaplıkları kullanmayarak bellek alanından da tasarruf edebiliriz.
STMicroelectronics, çevre birimlere ve seçilen STM32 kartına göre temel kod üreten STM32Cube MX adlı bir aracı tanıttı. Bu nedenle, temel sürücüler ve çevre birimleri için kodlama konusunda endişelenmemize gerek yok. Ayrıca üretilen bu kod, gereksinime göre düzenleme için Keil uVision'da kullanılabilir. Son olarak kod, STMicroelectronics'in ST-Link programcısı kullanılarak STM32'ye yazılır.
Bu eğitimde , STM32F103C8 Mavi Hap panosu ile bir düğme ve LED arabirimine basit bir proje yaparak Keil uVision ve STM32CubeMX kullanarak STM32F103C8'i nasıl programlayacağımızı öğreneceğiz. Kodu STM32Cube MX kullanarak oluşturacağız, ardından Keil uVision kullanarak kodu düzenleyip STM32F103C8'e yükleyeceğiz. Detaylara geçmeden önce ST-LINK programcısı ve STM32CubeMX yazılım aracını öğreneceğiz.
ST-LINK V2
ST-BAĞLANTI / V2 devre-ayıklayıcı ve programcı STM8 ve STM32 mikro ailelere. Bu ST-LINK'i kullanarak STM32F103C8 ve diğer STM8 & STM32 mikro denetleyicilerine kod yükleyebiliriz. Tek telli arabirim modülü (SWIM) ve JTAG / seri kablo hata ayıklama (SWD) arabirimleri, bir uygulama kartında bulunan herhangi bir STM8 veya STM32 mikro denetleyici ile iletişim kurmak için kullanılır. STM32 uygulamaları Atollic, IAR, Keil veya TASKING entegre geliştirme ortamlarıyla iletişim kurmak için USB tam hızlı arabirimini kullandığından, bu donanımı STM 8 ve STM32 mikrodenetleyicilerini programlamak için kullanabiliriz.
Yukarıda, STMicroelectronics'ten ST-LINK V2 dongle'ın görüntüsü, tüm STM32 SWD hata ayıklama arabirimini, basit bir 4 kablolu arabirimi (güç dahil) hızlı ve kararlı bir şekilde destekler. Çeşitli renklerde mevcuttur. Gövde alüminyum alaşımdan yapılmıştır. ST-LINK'in çalışma durumunu gözlemlemek için kullanıldığı için mavi bir LED göstergesine sahiptir. Yukarıdaki resimde görebileceğimiz gibi, pim isimleri kabuk üzerinde açıkça işaretlenmiştir. Bu edilebilir Keil yazılımla arayüz programı STM32 Microkontroller için parladı edilebilir. Öyleyse bu eğitimde bu ST-LINK programlayıcısının STM32 mikro denetleyicisini programlamak için nasıl kullanılabileceğini görelim. Aşağıdaki resimde ST-LINK V2 modülünün pinleri gösterilmektedir.
Not: ST-Link'i bilgisayara ilk kez bağlarken Cihaz sürücüsünün kurulmasına ihtiyacımız var. Aygıt sürücüleri, işletim sisteminize göre bu bağlantıda bulunabilir.
STM32CubeMX
STM32CubeMX aracı, STMicroelectronics STMCube'ün bir parçasıdır. Bu yazılım aracı, geliştirme çabasını, süresini ve maliyeti azaltarak geliştirmeyi kolaylaştırır. STM32Cube, grafik sihirbazları kullanarak C başlatma kodunun oluşturulmasına izin veren bir grafik yazılım yapılandırma aracı olan STM32CubeMX'i içerir. Bu kod keil uVision, GCC, IAR vb. Gibi çeşitli geliştirme ortamlarında kullanılabilir. Bu aracı aşağıdaki bağlantıdan indirebilirsiniz.
STM32CubeMX aşağıdaki özelliklere sahiptir
- Çatışma çözücüyü sabitle
- Bir saat ağacı ayarlama yardımcısı
- Güç tüketimi hesaplayıcı
- GPIO pinleri, USART vb. Gibi MCU çevre birimi yapılandırmasını gerçekleştiren bir yardımcı program
- USB, TCP / IP gibi ara yazılım yığınları için MCU çevre birimi yapılandırmasını gerçekleştiren bir yardımcı program
Gerekli malzemeler
Donanım
- STM32F103C8 Mavi Hap kurulu
- ST-LINK V2
- Butona basınız
- LED
- Breadboard
- Atlama Telleri
Yazılım
- STM32CubeMX Kod Oluşturma Aracı (Bağlantı)
- Keil uVision 5 (bağlantı)
- ST-Link V2 için sürücüler (bağlantı)
Devre Şeması ve Bağlantılar
Aşağıda, bir düğmeyi kullanarak STM32 kartına bir LED bağlamak için devre şeması verilmiştir.
ST-LINK V2 ve STM32F103C8 arasındaki bağlantı
Burada STM32 Mavi Hap panosu, bilgisayarın USB bağlantı noktasına bağlı olan ST-LINK'ten güç alır. Bu yüzden STM32'yi ayrı ayrı çalıştırmamıza gerek yok. Aşağıdaki tablo ST-Link ve Blue hap panosu arasındaki bağlantıyı göstermektedir.
STM32F103C8 |
ST-Link V2 |
GND |
GND |
SWCLK |
SWCLK |
SWDIO |
SWDIO |
3V3 |
3.3V |
LED ve Basma Düğmesi
LED, bir düğmeye basıldığında Mavi Hap panosundan çıkışı göstermek için kullanılır. LED'in anodu, Blue Pill panosunun PC13 pinine bağlanır ve katot topraklanır.
Blue Pill panosunun PA1 pinine giriş sağlamak için bir basma düğmesi bağlanmıştır. Ayrıca 10k değerinde bir yukarı çekme direnci kullanmalıyız çünkü düğme bırakıldığında pim herhangi bir giriş olmadan yüzebilir. Basma düğmesinin bir ucu toprağa bağlanır ve diğer ucu PA1 pinine ve 10k'lık bir çekme direnci de 3.3V Blue Pill panosuna bağlanır.
Keil uVision ve ST-Link kullanarak bir program oluşturma ve STM32'ye yazma
Adım 1: - İlk önce ST-LINK V2 için tüm aygıt sürücülerini, STM32Cube MX & Keil uVision yazılım araçlarını kurun ve STM32F103C8 için gerekli paketleri kurun.
Adım 2: - İkinci adım Açık >> STM32Cube MX
3. Adım: - Ardından Yeni Projeye tıklayın
Adım 4: - Daha sonra arama yapın ve mikrodenetleyicimizi STM32F103C8 seçin
Adım 5: - Şimdi STM32F103C8'in pin-out çizimi görünür, burada pin konfigürasyonlarını ayarlayabiliriz. Ayrıca projemize göre çevre birimleri bölümünden pinlerimizi seçebiliyoruz.
Adım 6: - Ayrıca doğrudan pin üzerine tıklayabilirsiniz ve bir liste görünür, şimdi gerekli pin yapılandırmasını seçin.
Adım 7: - Projemiz için GPIO INPUT olarak PA1, GPIO OUTPUT olarak PC13 ve SERIAL WIRE olarak SYS hata ayıklama seçtik , burada sadece ST-LINK SWCLK & SWDIO pinlerini bağlarız. Seçilen ve yapılandırılmış pimler YEŞİL renkte görünür. Bunu aşağıdaki resimde not edebilirsiniz.
Adım 8: - Ardından , Yapılandırma sekmesinin altında , seçtiğimiz pinler için GPIO pin yapılandırmalarını ayarlamak için GPIO'yu seçin.
Adım 9: - Sonraki bu pin yapılandırma kutusunda, kullandığımız pinler için Kullanıcı Etiketini yapılandırabiliriz , yani kullanıcı tanımlı pin adları.
Adım 10: - Bundan sonra Proje >> Kod Oluştur'a tıklayın.
Adım 11: - Şimdi proje ayarları iletişim kutusu görünür. Bu kutuda proje adınızı ve konumunuzu seçin ve geliştirme ortamını seçin. Keil kullanıyoruz, bu nedenle IDE olarak MDK-ARMv5'i seçin .
Adım 12: - Ardından, Kod Oluşturucu sekmesinin altında, Yalnızca gerekli kitaplık dosyalarını kopyala'yı seçin ve ardından Tamam'a tıklayın.
Adım 13: - Şimdi kod oluşturma iletişim kutusu belirir. Üretilen kodu Keil uvsion'da otomatik olarak açmak için Proje Aç'ı seçin.
Adım 14: - Şimdi Keil uVision aracı, STM32CubeMx'te oluşturduğumuz kodla, aynı proje adı ile gerekli kitaplık ve seçtiğimiz pinler için yapılandırılmış kodlarla açılır.
Adım 15: - Şimdi, düğmeye basıldığında ve GPIO girişinde (pin PA1) bırakıldığında çıkış LED'inde (pin PC13) bazı eylemler gerçekleştirmek için mantığı eklememiz gerekiyor. Bu yüzden bazı kodları dahil etmek için main.c programımızı seçin.
Adım 16: - Şimdi while (1) döngüsüne kodu ekleyin , kodu sürekli çalıştırmak için bu bölümü vurguladığım aşağıdaki resme bakın.
while (1) {if (HAL_GPIO_ReadPin (BUTN_GPIO_Port, BUTN_Pin) == 0) // => DETECTS Düğmesine Basıldığında {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 1); // Düğmeye basıldığında çıktıyı yüksek yapmak için d} else {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 0); // Düğmeye basıldığında çıkışı Düşük yapmak için}}
Adım 17: - Kodu düzenlemeyi bitirdikten sonra, hata ayıklama sekmesinin altındaki Hedef Seçenekleri simgesine tıklayın ST-LINK Hata Ayıklayıcıyı seçin
Ayrıca, Ayarlar düğmesine tıklayın ve ardından Flash İndirme sekmesinin altında Sıfırla ve Çalıştır onay kutusunu işaretleyin ve 'tamam'ı tıklayın.
Adım 18: - Şimdi tüm hedef dosyaları yeniden oluşturmak için Yeniden Oluştur simgesine tıklayın.
Adım 19: - Artık ST- LINK'i devre bağlantıları hazır haldeyken bilgisayara bağlayabilir ve DOWNLOAD simgesine tıklayabilir veya STM32F103C8'i oluşturduğunuz ve düzenlediğiniz kodla yanıp sönmek için F8 tuşuna basabilirsiniz.
Adım 20: - keil uVision penceresinin altında yanıp sönen göstergeyi fark edebilirsiniz.
Keil Programlı STM32 Kartının Çıkışı
Şimdi basma düğmesine bastığımızda LED Yanıyor ve bıraktığımızda LED sönüyor.
Program
Oluşturulan programa eklediğimiz ana bölüm aşağıda gösterilmiştir. Aşağıdaki kod, STM32CubeMX tarafından oluşturulan main.c programının while (1 ) kısmına dahil edilmelidir. Main.c programına nasıl eklenmesi gerektiğini öğrenmek için 15. Adıma geri dönebilirsiniz.
while (1) {if (HAL_GPIO_ReadPin (BUTN_GPIO_Port, BUTN_Pin) == 0) // => DETECTS Düğmesine Basıldığında {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 1); // Düğmeye basıldığında çıktıyı yüksek yapmak için d} else {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 0); // Düğmeye basıldığında çıkışı Düşük yapmak için}}
STM32 panosuna proje oluşturma ve yükleme işleminin tamamı da sonunda verilen videoda açıklanmıştır. Ayrıca main.c dosyasının tam kodu, yukarıda verilen kod dahil olmak üzere aşağıda verilmiştir.
Ayrıca, eksiksiz STM32 proje setimizi burada bulabilirsiniz.