位域是一種比字節還小的比特位數據,它可以是一個比特位,也可以是多個比特位一起組成。高級語言或許很少接觸位域的使用,但是從事嵌入式開發的工程師一定不會陌生,它簡潔明了,但是使用起來卻需要知道當前IDE存儲的數據是大端還是小端。
二、怎麼定義位域?位域數據的定義需要用到C語言關鍵字struct,它也是一種數據結構,可以對某些比特位進行特殊的聲明。比如某字節的含義如下圖:
位域
那麼它的聲明如下;
typedef struct w5500_control_phase { #ifdef LITTLE_ENDIAN uint8_t operation_mode:2; uint8_t access_mode_bit:1; uint8_t block_select_bits:5; #elif defined(BIG_ENDIAN) uint8_t block_select_bits:5; uint8_t access_mode_bit:1; uint8_t operation_mode:2; #endif }w5500_control_phase_t;
三、示例代碼。
位域示例源碼
由于我使用的是Windows PC,數據默認是小端模式,從上圖可以看到位域的使用方法與便捷。(BTW:其實上圖舉例的是W5500網卡驅動的某些數據的定義)。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!