嵌入式系統中union的用法

2021-07-25 16:25:44 字數 1163 閱讀 6269

在嵌入式實際應用中,大多數的協議結構定義中,都會使用union型別來定義。

使用聯合來將較大的物件分解成組成這個物件的各個位元組。

typedef uniondata;

可以使用data.udata陣列來訪問data.bytes[4]欄位的各個位元組。

注意:char            佔 1 位元組

short           佔 2 位元組,

int 、float    佔 4 位元組,

double          佔8 位元組

使用用法:在利用 flash中儲存資料資訊時

#include "stm32f0xx_flash.h"

#define flash_page_size 

((uint32_t)0x00000400) 

#define flash_user_start_addr 

((uint32_t)0x0800fc00) 

#define flash_user_end_addr 

((uint32_t)0x08010000) 

//定義需儲存使用者設定資料的結構

typedef struct //構造結構體

personal_information_typedef;

//為了方便變數的使用和在flash裡面的存貯,定義一聯合(

union

)typedef union

settings_information;

//申明變數,注意一定要四位元組對齊

volatile settings_information user_seting;

void user_infor_read(void)

}由於 user_seting

.dataall[i] ,與 user_seting.infor

datai 共用一塊記憶體,

所以可以通過:

user_seting.

infor

datai .name;

user_seting.

infor

datai .height;

user_seting.

infor

datai .weight;

訪問資料結構的資料

嵌入式中 volatile 用法

volatile 影響編譯器編譯的結果,指出,volatile 變數是隨時可能發生變化的,與volatile變數有關的運算,不要進行編譯優化,以免出錯,vc 在產生release版可執行碼時會進行編譯優化,加volatile關鍵字的變數有關的運算,將不進行編譯優化。例如 volatile int i...

嵌入式系統

嵌入式開發的相關領域 搞嵌入式若能熟悉嵌入式應用的一些主要領域,這樣的人更受企業歡迎。主要的相關 領域包括 a 數字影象壓縮技術 這是嵌入式最重要最熱門的應用領域之一,主要是應掌握mpeg 編譯碼演算法和技術,如 pda 高精電視 機頂盒等都涉及mpeg高速解碼問 題。b 通訊協議及程式設計技術 這...

嵌入式系統

嵌入式系統就是計算機系統的一類,就是被塞進其他裝置的計算機作業系統。我的嵌入式老師只用了三個詞語就總結了嵌入式系統的精髓 專用的可裁剪的 計算機系統。包括嵌入式軟體開發的知識體系和背景 先說背景 計算機,領域內,知識體系,按層次分,可以分為 其中 此處,暫且不討論上層的純軟體,以及底層的硬體,只是簡...