嵌入式筆試題目

2021-09-29 21:48:32 字數 2533 閱讀 1085

1 wlan和wifi有什麼區別?

wlan是wireless local network的縮寫,代表無線區域網,不特指某項技術。實現wlan的特定技術實際上有多種,802.11是其中應用最為廣泛的一種wlan技術。wifi實際上指的是wifi聯盟,它負責802.11的商業推廣,裝置的標準認證,但是最後卻演變為802.11的代名詞,進而又演變為wlan的代名詞

__interrupt double compute_area(double radius)

double area = pi*radius*radius;

printf();

return area;

1、isr不能有返回值,必須用void;

2、isr不能傳遞引數,必須用void;

3、isr應該是短而高效的,所以不推薦在isr中做浮點運算,應該只由中斷發出訊息或置位標誌然後由應用層去處理其他工作;

4、isr中不應該有重入和效能上的問題,因此使用pintf()函式也是不好的。

3 乙個引數即可以是const還可以是volatile嗎?

乙個定義為volatile的變數是說這變數可能會被意想不到地改變,這樣,編譯器就不會去假設這個變數的值了。精確地說就是,優化器在用到這個變數時必須每次都小心地重新讀取這個變數的值,而不是使用儲存在暫存器裡的備份

volatile修飾符告訴complier變數值可以以任何不被程式明確指明的方式改變,最常見的例子就是外部埠的值,它的變化可以不用程式內的任何賦值語句就有可能改變的,這種變數就可以用volatile來修飾,complier不會優化掉它。

const修飾的變數在程式裡面是不能改變的,但是可以被程式外的東西修改,就象上面說的外部埠的值,如果僅僅使用const,有可能complier會優化掉這些變數,加上volatile就萬無一失了。

4 乙個指標可以是volatile嗎?

當然可以。

volatile 修飾指標,一般用在共享指標上面。

即這個指標是被其它**共享的,經常變化的,

這時候,加上 volatile 關鍵字,可以防止被編譯器優化。

5 c語言中static說明是什麼意思?

static對全域性變數的修飾,可以認為是限制了只能是本檔案引用此變數。有的程式是由好多.c檔案構成。彼此可以互相引用變數,但加入static修飾之後,只能被本檔案中函式引用此變數。

static對棧變數的修飾,可以認為棧變數的生命週期延長到程式執行結束時。一般來說,棧變數的生命週期由os管理,在退棧的過程中,棧變數的生命也就結束了。但加入static修飾之後,變數已經不再儲存在棧中,而是和全域性變數一起儲存。同時,離開定義它的函式後不能使用,但如再次呼叫定義它的函式時,它又可繼續使用, 而且儲存了前次被呼叫後留下的值。

static對函式的修飾與對全域性變數的修飾相似,只能被本檔案中的函式呼叫,而不能被同一程式其它檔案中的函式呼叫。

6 大小端如何區分?

大端模式(big_endian)   -- 字資料的高位元組儲存在低位址中,而字資料的低位元組則存放在高位址中。

小端模式(little_endian)-- 字資料的高位元組儲存在高位址中,而字資料的低位元組則存放在低位址中。

7 用預處理指令#define宣告乙個常數,用以表明一年中有多少秒(忽略閏年問題)

8 寫乙個「標準」巨集判斷乙個數是否是2的冪(power of 2),說明程式中巨集和inline函式的區別是什麼?

9 嵌入式系統中經常要用到無限迴圈,你怎麼樣用c編寫死迴圈呢?

這個問題用幾個解決方案。我首選的方案是:

while(1)

一些程式設計師更喜歡如下方案:

for(;;)

這個實現方式讓我為難,因為這個語法沒有確切表達到底怎麼回事。如果乙個應試者給出這個作為方案,我將用這個作為乙個機會去**他們這樣做的基本原理。如果他們的基本答案是:「我被教著這樣做,但從沒有想到過為什麼。」這會給我留下乙個壞印象。

第三個方案是用 goto

loop:

…goto loop;

10 嵌入式系統總是要使用者對變數或暫存器進行位操作。給定乙個整型變數a,寫兩段**,第乙個設定a的bit3和bit5,第二個清除a的bit3和bit5.在以上兩個操作中,要保持其他位置不變。

#define bit3 (0x1 << 3)

static int a;

void set_bit3(void)

void clear_bit3(void)

11 在計算機系統中,大小端是指什麼?請使用c編寫程式判斷機器的大小端情況?

據這個特性,假設我們初始化了乙個int變數i為0x12345678,其位址為0x100,根據定義在小端模式下

0x100乙個位元組內的值為0x78,類推0x101=>0x56,0x102=>0x34,0x103=0x12,根據這個程式設計如下

int checksystem2(void)

12 嵌入式系統經常具有要求程式設計師去訪問某特定的記憶體位置的特點。在某工程中,要求設定一絕對位址為0x67a9的整型變數的值為0xaa66.編譯器是乙個純粹的ansi編譯器。寫**去完成這一任務。

int *ptr;

ptr = (int *)0x67a9;

*ptr = 0xaa55;

嵌入式筆試題目(二)

1 寫出簡單的hello world字元裝置驅動?include include include include static int init hello init void 初始化模組時執行 static void exit hello exit void 解除安裝模組時執行 module li...

嵌入式筆試題

考查逗號表示式 main 這段程式的輸出是 a c 3 d 3 b c 5 d 3 c c 3 d 5 d c 5 d 5 應該選c。c語言提供一種特殊的 運算子,逗號運算子,優先級別最低,它將兩式聯接起來,如 3 5,6 8 稱為逗號表示式,其求解過程先表示式1,後表示式2,整個表示式值是表示式2...

嵌入式 筆試題

指出下列程式的執行結果 int main memcpy a 3,a,5 for int i 0 i 10 i return 0 解答 0 1 2 0 1 5 6 7 8 9 注意 1 陣列a作為引數時,轉化為普通指標 a 3 按照char長度計算 2 memcpy的原型是 void memcpy v...