Genel Yazılım C Dili

Başlatan a.ser20, 19 Aralık 2022, 04:34:49

a.ser20

  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


foseydon

2 ile çarpmış bit kaydırma ile

quarko

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)
"Aslanlar kendi hikayelerini yazmadıkça, avcıların kahramanlık hikayelerini dinlemek zorundayız."

Tagli

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.
Gökçe Tağlıoğlu