kendi kütüphanemizi oluşturma

Başlatan engineer42, 22 Mart 2014, 21:01:36

engineer42

iyi akşamlar herkese..

stm32f103 için kendi kütüphanelerimi yazmak istiyorum. işlemcinin tüm registerlarına istediğim gibi erişmek istiyorum.. bazı struct-unionlar filan oluşturdum internette rastladığım örneklerden gördüğüm kadarı ile. ama oluşturduğum bu yapılara başka bi fonksiyon içinde erişmem lazım.. herşeyi adım adım kontrol ettim ama yapamadım.. değerli üstadların görüşünü almak istiyorum...


struct
					{
						 
						unsigned HSION:1;
						unsigned HSIRDY:1;
						unsigned RESERVED:1;
						unsigned HSITRIM:5;
						unsigned HSICAL:8;
						unsigned HSEON:1;
						unsigned HSERDY:1;
						unsigned HSEBYP:1;
						unsigned CSSON:1;
						unsigned RESERVED2:4;
						unsigned PLLON:1;
						unsigned PLLRDY:1;
						unsigned PLL2ON:1;
						unsigned PLL2RDY:1;
						unsigned PLL3ON:1;
						unsigned PLL3RDY:1;
						unsigned RESERVED1:2;
					} Bits;
				}_RCC_CR;

bunlar clock.h içindeki yapılar. bunlara init.cpp içerisinde erişmek istiyorum

elektronart

header dosyası içinde
#ifndef HEADER_H
#define HEADER_H

(header)

#endif

kullanıyor musunuz?
Açık Elektronik

engineer42

evet kullanıyorum.. sorunum init.cpp içinde fonksiyonda mesela RCC_CR-> yaptığımda hata almam.. bu şekilde yaparak register da bitleri kontrol etmek istiyorum.

Erhan YILMAZ

ST'nin kendi kütüphaneleri bu şekilde zaten çok güzel oturtmuş adamlar niye kendin yapmak istiyorsun? İllede yapıcam diyorsan onları incelemeni tavsiye ederim. Tüm yapıları tanımlamış kütüphane dosyalarıyla sonra o yapılardan pointer tanımlamış. Pointerlara da adres olarak ilgili birimin(reference manuelde yazar) base adresini vermiş sonrasında -> ile istediği gibi kullanmış.

CLR

Alıntı yapılan: Erhan YILMAZ - 24 Mart 2014, 00:28:46
ST'nin kendi kütüphaneleri bu şekilde zaten çok güzel oturtmuş adamlar niye kendin yapmak istiyorsun? İllede yapıcam diyorsan onları incelemeni tavsiye ederim. Tüm yapıları tanımlamış kütüphane dosyalarıyla sonra o yapılardan pointer tanımlamış. Pointerlara da adres olarak ilgili birimin(reference manuelde yazar) base adresini vermiş sonrasında -> ile istediği gibi kullanmış.

ST kütüphanesinde bitbanding yok, o nedenle bit bazında erişim bitbanding için önemli. Gerçi bununda değişiklik yolları var.

@engineer42
Aşağıdaki yazıyı ben yazdım, bu programdan faydalanabilirsin ama struct'ları bitbanding yaparsan o zaman mükemmel olur, ST lib'iylede mix kullanırsın
kritik yerlerde bitbanding içeren struct'ları , kritik olmayan yerlerde ST lib'in bit set ve reset'ini kullanırsın.

http://www.mcu-turkey.com/stm32f103-ozel-register-kullanimi-ve-systick/

Knowledge and Experience are Power

Erhan YILMAZ


CLR

Hiç kullanmıyorsan sana gerek yok ama bence çok önemli bir özellik. Zaten çok önemli olmasaydı arm core içine koymazdı.
Knowledge and Experience are Power

engineer42

@CLR hocam tam istediğim şey bu aslında. yazıya devam etmeyi düşünüyor musunuz?

Erhan YILMAZ

CLR falan nicki görünce çıkarmadım hocam. Siz diyorsanız doğrudur. Saygılar.