keil de input pin

Başlatan bulutay, 21 Haziran 2017, 02:41:29

bulutay

veri1=HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_3);
veri1=veri1*100;
veri2=HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_2);
veri2=veri2*10;
veri3=HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1);
veri4=veri1+veri2+veri3;

if(veri4==1)
{
	HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_SET);	
}
else  HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_RESET);


Daha kısa bir kod yazılabilir mi? Acaba üç tane pini nasıl maskeleriz?

bulutay


muhittin_kaplan

Hocam code etiketlerini kullanırsanız daha iyi olur sanırım.

bulutay


bulutay

muhittin bey kusura bakmayın

mehmet

[ code]
...
gerekli kodlar
...
[ /code]

Burada bilerek "[" işaretinden sonra bir boşluk
bıraktım belli olması açısından.



...
gerekli kodlar
...


Ek:
Noktalama işaretlerine de dikkat edelim.
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

Yuunus

#6
GPIOA->IDR & 0x1;

bulutay


bulutay

konu hakkında yardımcı olabilirmisin

Jamesbond79

#9
Maskelemek kastın nedir? Kodunda her pin sanki basamak analizi gibi 1 10 100 çarpmissin maskelemek pinleri ve işlemine tabi tutmak sizin yaptığınız girişleri ağırlık vermek acaba amaç girişleri sensör bağlayıp pid tarzı bir kontrol mu? Konuyla ilgili detay verirseniz. Daha doğru açıklama yapılabilir. Kısa kod for next ile pinleri tek kod ile oku
a=1;
For.....
veri(i)=HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_(i)*a);
a=a*10
Net i

Yuunus

Verix=(GPIOA->IDR & 0x1); //birinci pin oku
Veriy=(GPIOA->IDR & 0x2) >> 1; //ikinci pin oku vs.

bulutay

#11
Verix=(GPIOA->IDR & 0x1110);


bu şekilde olur mu peki



EK:
Sayın @bulutay; yazdıklarımı okumamışsınız.

fatal16

@bulutay
Hocam ilk mesajınızda bütün pinlerin durumunu tek tek okumuşsunuz ve pinlerin durumlarını sırayla 100, 10 ve 1 ile çarpmışsınız.
Burada bütün pinler 1 olduğunda veri4 111 değerini alır veya sadece 2. pinin 1 olması durumunda veri4 10 değerini alır.
Yani sadece veri3 pini 1 olduğu zaman veri4 1 olabilir.
Buna göre sadece veri3 pini kontrol ederek istediğimiz işlemi yapabiliriz.

bulutay

okudum ama anliyamadım.
df = (input_a ()& (0b1110)) ccs c de bu  şekilde oluyor. ama stm de aynısını yapamdım. sensor girişleri .

Yuunus

Ccs den cok anlamam ama burda sanki 3 pinden okuma yapmis
Verix=(GPIOA->IDR & 0xE);  seklinde okuyabilmen lazim.ilk pini dikkate almamis gibi.