Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => Diğer => Konuyu başlatan: a.ser20 - 19 Aralık 2022, 04:34:49

Başlık: Genel Yazılım C Dili
Gönderen: a.ser20 - 19 Aralık 2022, 04:34:49
  switch(irq_flags)
  {

    case (1 << (uint8_t)HAL_NRF_TX_DS):


Merhabalar yukarıda case (1 << (uint8_t)HAL_NRF_TX_DS): bu kısımda ne yapmak istemiş? 1<< şu kısım özellikle bit kaydırma ile mi ilgili? Teşekkürler

Başlık: Ynt: Genel Yazılım C Dili
Gönderen: foseydon - 19 Aralık 2022, 06:05:18
2 ile çarpmış bit kaydırma ile
Başlık: Ynt: Genel Yazılım C Dili
Gönderen: quarko - 19 Aralık 2022, 07:41:34
HAL_NRF_TX_DS kaçıncı bite denk geliyorysa, binary veya hex olarak yazmaktansa 1 değerini bit numarası kadar kaydırıp case açmış.

2 ile çarpma yok burada. İki ile çarpmak için örnek (value * 2) ==> (value << 1)
Başlık: Ynt: Genel Yazılım C Dili
Gönderen: Tagli - 19 Aralık 2022, 09:33:11
HAL_NRF_TX_DS muhtemelen o bitin register'da kaçıncı bit olduğunu tanımlayan bir sabit. irq_flags değişkenini (veya register'ını) maskeleyerek ilgili bitin 1 olup olmadığını kontrol etmiş. uint8_t'ye cast etmesi muhtemelen gereksiz (C++ kodunda enum class falan kullanılmamışsa). Ayrıca, işin doğrusu 1 yerine 1u yazmaktır. Genel olarak işaretli değişkenlerde kaydırma işlemi uygulanması tavsiye edilmez.