इस स्निपेट में,
if (((RCC_OscInitStruct-> OscillatorType) & amp; RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI) {/ * स्टेटमेंट्स * /}
सदस्य ऑस्केलेटर टाईप
में निम्न में से कोई भी मान, या उनका संयोजन हो सकता है
#define RCC_OSCILLATORTYPE_NONE ((uint32_t) 0x00000000) #define RCC_OSCILLATORTYPE_HSE ((uint32_t) 0x00000001) #define RCC_OSCILLATORTYPE_HSI ((uint32_t) 0x00000002) #define RCC_OSCILLATORTYPE_LSE ((uint32_t) 0x00000004) #define RCC_OSCILLATORTYPE_LSI ( (Uint32_t) 0x00000008)
क्यों यदि
इस तरह से लिखा है? ऐसा क्यों नहीं बस?
यदि (RCC_OscInitStruct-> OscillatorType == RCC_OSCILLATORTYPE_HSI)
आरसीसी_ऑस्क इनटस्ट्रॉक्ट-> ऑस्सीलेटर टाईप
एक पूर्णांक मान में पैक किए गए बिट्स का एक संग्रह है, प्रत्येक बिट मानों ( RCC_OSCILLATORTYPE_HSE
, ...) में से एक का प्रतिनिधित्व करता है। यही कारण है कि वे 2 की शक्तियों में आते हैं। आपके द्वारा दिखाया गया कोड, बस जांचता है कि यदि RCC_OSCILLATORTYPE_HSI
से संबंधित बिट सेट है। यह बहुत संभव है कि अन्य मानों का बिट भी सेट हो।
उदाहरण के लिए यदि ऑस्सीलेटर टाईप
का द्विआधारी प्रतिनिधित्व 0 ... 011
है, तो पहले और दूसरा बिट सेट है, जिसका अर्थ है कि RCC_OSCILLATORTYPE_HSE
और RCC_OSCILLATORTYPE_HSI
मान चुने गए हैं।
No comments:
Post a Comment