Merhaba,STM32F030 işlemci kullanıyorum.Resetten sonra SWD pinlerini(SWDIO ve SWCLK) I/O olarak kullanmak istiyorum. Datasheetinde resetten sonra I/O olarak kullanabileceğim yazıyor ancak SWDIO sürekli lojik 1, SWCLK lojik 0 da kalıyor.Bu konuyla uğraşan birisi varsa yardımcı olursa memnun olurum.İyi çalışmalar.Kod:
RCC->AHBENR |= 0x00020000; //A port clock enable
GPIOA->PUPDR = 0; //A port No pull up, no pull down
GPIOA->MODER |= 0x04000000; //A13 output
GPIOA->ODR |= 0x00002000; //A13 logic 1
GPIOA->MODER |= 0x10000000; //A14 output
GPIOA->ODR |= 0x00004000; //A14 logic 1
Buldum arkadaşlar, GPIO->MODER registerini ilgili pinlerini( A13 ve A14) çıkış olarak tanımlamadan önce resetlemek gerekiyormuş.Çok ilgilenen olmadı ama pin sıkıntısı çekip bu pinleri kullanmak zorunda kalanlar için faydası olması dileğiyle, iyi çalışmalar.
Kodun son hali:
GPIOA->MODER &= 0xC3FFFFFF; //A13(SWDIO) ve A14(SWCLK) reset
GPIOA->MODER |= 0x14000000; //A13 ve A14 output
GPIOA->PUPDR &= 0x00000000; //A port No pull up, no pull down
GPIOA->ODR |= 0x00004000; //A14 logic 1
GPIOA->ODR |= 0x00002000; //A13 logic 1
stm32F103 serisinde I/O'ya çevirdikten sonra swd'den tekrar program atılmıyordu yalnız STM32F030 serisinde de aynı olabilir. Program güncellemek için dahili bootloader'ı kullanmak zorunda kalabilirsin.
Buna 2 şekilde engel olunabilmesi lazım.
1. yöntemde reset rutininin başında mesela yarım saniyelik gecikme konur.
2. Yöntemde SWClk ve SVDIO ya ilave olarak NRST pini kullanılır.
Dediğiniz doğru STM32030 da da aynısı oluyor.Bunların hiçbirine gerek yok.Kullandığınız derleyicinin ST Link ayarlarında RESET ayarlarını "CONNECT DURING RESET" yapmanız yeterli olacaktır.
Sadece Clk ve DIO pinlerini kullanirken de oluyormu?
Evet olur,
Bende j-link v8 var, st-link yok, normalde NRST yapıp connect yapınca gpiolar ayarlanmadan swd kullanılabiliyor olması gerekiyordu ama j-link ayarlarından, normal, NRST seçeneklerini denedim bir türlü tekrar atamamıştım, demek ki nrst'ten işlemci kalkıncaya kadar j-link connect yapamıyor, RESET DURING RESET kesin çalışması gerekir, nedense onu görmemişim ve denememişim.
Herhangi bir tanesi çıkış olarak tanımlandığında bile bu durum oluyor.MODER çıkış olarak tanımlandığında AF moddan çıktığı için debug yapamıyorsun ve derleyici ST Link ayarları default değerinde(NORMAL) olarak kaldığında tekrar kod atamıyorsun.
Merhaba ;
anladığım kadarı ile buradaki arkadaşlar discovery boardtan gerçek hayata geçebilmiş arkadaşlar . Bir sorum olacak boot0 pini boş bıraksak çalışırmı yada direk şaseye birleştirsek ? şimdiden teşekkürler .
Boş bırakırsan çalışmaz. Datasheette boot modları var. Normal bi çalışma durumu için (flash hafızana başlama) boot0 pinini 10k gibi bi dirençle gndye bağlaman lazım.
Boot modunu değiştirmeyeceksen eğer, doğrudan GND'ye bağlayabilirsin.
gecikme rutinini SystemInit fonksiyonu içerisine mi yazmamız gerekiyor?
Bu gecikme rutinini ilk başlarda koyuyorduk ama eğer programlaycıda NRST pinini de kullanıyorsak gerek yok galiba.
Bu durumu inceleyen oldu mu?
Besleme oturuncaya kadar init işlemlerine geçmemeyi garantilediği için rutinlerimde hala bu gecikmeyi kullanıyorum.
Alıntı yapılan: Zoroaster - 19 Kasım 2016, 15:30:49
Bu gecikme rutinini ilk başlarda koyuyorduk
stm32 konusunda yeniyim ilk başlarda derken
SystemInit
fonksiyonunun en başına mı yazmam gerekiyor?
Pin Init rutinlerinin hemen öncesine koyabilirsin.
Alıntı yapılan: Zoroaster - 19 Kasım 2016, 15:30:49
Bu gecikme rutinini ilk başlarda koyuyorduk ama eğer programlaycıda NRST pinini de kullanıyorsak gerek yok galiba.
Bu durumu inceleyen oldu mu?
Besleme oturuncaya kadar init işlemlerine geçmemeyi garantilediği için rutinlerimde hala bu gecikmeyi kullanıyorum.
Reset pini kullanılıyorsa gerek olmayacaktır. Hiç programlayıcıda reset pini kullanmadım. Fakat SWD pinlerini kullandığım projeklerde elle reset yaparak programlıyorum. Elle oluyorsa, programayıcı da yapabiliyordur.
ustalara bir sorum olacak ? Stm32f0 serisi için soruyorum ? stm32 işlemcisi için programı yazdım kartı çizdim çalışıyor herhangi bir sıkıntı yok şükür . Ayrıca picten geçecek arkadaşlara tavsiye ederim .
kafamı kurcalayan sorun ise şu çalışan kartta ölçüm yapmak için skope probunun şasesini bağlarken 5 6 seferde bir işlemci programdan çıkıyor ve enerjiyi kesip verene kadar bir daha düzgün çalışmıyor . Skope girişinde izolasyon trafosu var . Pictede ara sıra böyle oluyordu ama pic kendi kendini resetliyor böyle durumlarda .program baştan çalışmaya başlıyor . pek bir sorun yaratmıyor .
Stm32 için piclerdeki gibi pwrt ve boden veya muadili özellikleri nasıl aktif edebilirim ?