91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

嵌入式工程師去面試可能被問到的問題集錦

精通單片機與嵌入式 ? 來源:精通單片機與嵌入式 ? 作者:精通單片機與嵌入 ? 2022-11-15 11:03 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Q:什么是ISR?

A:ISR 是指中斷服務(wù)程序。 這些是存儲在特定內(nèi)存地址的函數(shù),當(dāng)發(fā)生某種類型的中斷時會調(diào)用這些函數(shù)。 Cortex-M 處理器系列具有管理中斷執(zhí)行的 NVIC

Q:我們可以給ISP傳遞參數(shù)或從ISR返回一個值嗎?為什么?

A:ISR 不返回任何內(nèi)容并且不允許傳遞任何參數(shù)。

當(dāng)硬件或軟件中斷發(fā)生時會調(diào)用 ISR,它不會被任何代碼調(diào)用,所以這就是沒有參數(shù)傳遞到 ISR 的原因。因為它不會被任何代碼調(diào)用,所以它不會有返回值。

Q:什么是 volatile 關(guān)鍵字?

A:volatile 關(guān)鍵字是一個類型限定符,可防止對象進行編譯器優(yōu)化。根據(jù) C 標準,具有 volatile 限定類型的對象可能會以實現(xiàn)未知的方式進行修改或具有其他未知的副作用。您也可以說 volatile 限定對象的值可以隨時更改,而無需代碼采取任何操作。如果對象由 volatile 限定符限定,則每次程序訪問該對象時,編譯器都會從內(nèi)存中重新加載該值,這意味著它可以防止將變量緩存到寄存器中。從內(nèi)存中讀取值是檢查值不可預(yù)測變化的唯一方法。

Q:標準C語言嵌入式C語言有什么區(qū)別?

A:C語言:是一種通用編程語言,廣泛用于設(shè)計任何類型的基于桌面的應(yīng)用程序。 它是一種用于開發(fā)操作系統(tǒng)的系統(tǒng)編程語言。 C 語言的主要特點包括對內(nèi)存的低級訪問、一組簡單的關(guān)鍵字和干凈的風(fēng)格,這些特點使 C 語言適用于操作系統(tǒng)或編譯器開發(fā)等系統(tǒng)編程。 本質(zhì)上它采用原生平臺開發(fā)方案,即它開發(fā)的應(yīng)用程序是平臺相關(guān)的,只能在單一平臺上使用。

嵌入式 C:是標準C的擴展,而不能說是標準C的一部分。嵌入式C語言用于開發(fā)基于微控制器的應(yīng)用程序。 嵌入式C語言對標準C的擴展是I/O硬件尋址、定點算術(shù)運算、訪問地址空間等。

本公眾號會更新一篇關(guān)于標準C語言與嵌入式C語言的區(qū)別,歡迎持續(xù)關(guān)注。

Q:C 中的 const 和 volatile 限定符有什么區(qū)別?

A:const 關(guān)鍵字是編譯器強制執(zhí)行的,它表示程序無法更改對象的值,這意味著它使對象成為不可修改的類型。 讓我們看一個例子,

const int a = 0;

如果我們嘗試修改“a”的值,我們將得到編譯器錯誤,因為“a”用 const 關(guān)鍵字限定,防止更改“a”(整數(shù)變量)的值。

volatile 會阻止任何編譯器優(yōu)化,并表示對象的值可以被程序控制之外的東西更改,因此編譯器不會對對象做出任何假設(shè)。 看個例子,

volatile int a;

當(dāng)編譯器看到上面的聲明時,它會避免對“a”做出任何假設(shè),并在每次迭代中從分配給“a”的地址讀取值。

Q:C中的變量可以既是const又是volatile嗎?

A:是的,可以同時使用 const 和 volatile。

將 volatile 和 const 關(guān)鍵字一起使用的一個重要用途是在訪問 GPIO 寄存器時。在 GPIO被配置為輸入的情況下,讀取到的值將取決于外部因素(如開關(guān)或其他設(shè)備的輸出信號)的改變。在這種情況下, volatile 發(fā)揮著重要作用,并確保編譯器始終從 GPIO 地址讀取值并避免做出任何優(yōu)化。

使用 volatile 關(guān)鍵字后,無論何時訪問端口,您都會獲得正確的值,但仍然存在另一個問題,因為指針不是 const 類型,當(dāng)您的程序更改了指針的指向地址時,所獲取的數(shù)值就是錯誤的,這樣我們就必須創(chuàng)建一個帶有 volatile 關(guān)鍵字的常量指針。

定義的用法為:

int volatile * const PortRegister;

理解:

60b770fc-6472-11ed-8abf-dac502259ad0.png

Q:常用的使用volatile的場合?

A:1、訪問內(nèi)存映射外設(shè)寄存器或硬件狀態(tài)寄存器。

#define COM_STATUS_BIT  0x00000006


uint32_t const volatile * const pStatusReg = (uint32_t*)0x00020000;


unit32_t GetRecvData()
{
    unit32_t RecvData;
    
    //Code to receive data
    while (((*pStatusReg)  & COM_STATUS_BIT) == 0)
    {
        // Wait until flag does not set
        //Received data in RecvData


    }
    return RecvData;
}
2、在多個線程之間共享全局變量或緩沖區(qū)

3、在中斷例程或信號處理程序中訪問全局變量

volatile int giFlag = 0;


ISR(void)
{
    giFlag = 1;
}


int main(void)
{


    while (!giFlag)
    {
        //do some work
    }


    return 0;
}

Q:什么是中斷延遲?

A:中斷延遲是處理器響應(yīng)中斷請求所用的時鐘周期數(shù)。 這個時鐘周期數(shù)是在中斷請求的發(fā)生和中斷處理程序的第一條指令之間計數(shù)。


Cortex-M 處理器的中斷延遲非常低。 在下表中列出了 Cortex-M 處理器的中斷延遲。

60caa992-6472-11ed-8abf-dac502259ad0.png

Q:如何減少中斷延遲?

A:中斷延遲取決于許多因素,我在下面的陳述中提到了一些因素。

  • 平臺和中斷控制器。

  • CPU 時鐘速度。

  • 定時器頻率

  • 緩存配置。

  • 應(yīng)用程序。

因此,通過正確選擇平臺和處理器,我們可以輕松減少中斷延遲。 我們還可以通過縮短 ISR 并避免在 ISR 內(nèi)調(diào)用函數(shù)來減少中斷延遲。

Q:在中斷服務(wù)程序(ISR) 中調(diào)用printf() 是否安全?

A:不建議在接ISR中調(diào)用printf()

Q:可以在 ISR 中放置斷點嗎?

A:可以設(shè)置斷點,但是不建議這么做。

Q:在ISR中可以調(diào)用任何函數(shù)嗎?

A:是的,但是不建議在中斷中直接調(diào)用函數(shù);建議在中斷中先設(shè)置相關(guān)標志或執(zhí)行數(shù)據(jù)準備,在主循環(huán)中進行數(shù)據(jù)處理。

Q:什么是中斷嵌套?

A:在嵌套中斷系統(tǒng)中,即使正在執(zhí)行中斷服務(wù)函數(shù),也可以隨時隨地進行中斷。 但是,只有最高優(yōu)先級的 ISR 會立即執(zhí)行。 優(yōu)先級次高的 ISR 將在最高優(yōu)先級的 ISR 完成后執(zhí)行。

嵌套中斷系統(tǒng)的規(guī)則是:

  • 所有中斷都必須被設(shè)定中斷優(yōu)先級。

  • 初始化后,任何中斷都可以隨時隨地發(fā)生。

  • 如果低優(yōu)先級 ISR 被高優(yōu)先級中斷中斷,則執(zhí)行高優(yōu)先級 ISR。

  • 如果高優(yōu)先級 ISR 被低優(yōu)先級中斷中斷,則高優(yōu)先級 ISR 繼續(xù)執(zhí)行。

  • 必須按時間順序執(zhí)行相同優(yōu)先級的 ISR

Q:ARM Cortex 中的NVIC是什么?

A:Cortex-M 處理器系列中的嵌套向量中斷控制器 (NVIC) 是具有極其靈活的中斷優(yōu)先級管理的中斷控制器的一個示例。 它支持可編程優(yōu)先級、自動嵌套中斷支持以及對多個中斷屏蔽的支持,同時仍然非常易于程序員使用。

NVIC 的 Cortex-M3 和 Cortex-M4 處理器支持多達 240 個中斷輸入,具有 8 個多達 256 個可編程優(yōu)先級。

60dea17c-6472-11ed-8abf-dac502259ad0.png

Q:可以更改 Cortex-M 處理器系列的中斷優(yōu)先級嗎?

A:可以。

Q:什么是啟動代碼,在進入main函數(shù)前芯片都做了什么工作?

A:芯片上電后,進入main 函數(shù)之前調(diào)用的代碼是啟動代碼,一般是用匯編語言編寫的一小段代碼。
啟動代碼至少包括以下部分

  • 堆棧區(qū)的聲明

  • 堆區(qū)的聲明

  • 矢量表

  • 重置處理程序代碼

  • 其他異常處理程序代碼

Q:如何訪問內(nèi)存的固定地址?

A:

//Memory address, you want to access
#define RW_FLAG 0x1FFF7800


//Pointer to access the Memory address
volatile uint32_t *flagAddress = NULL;


//variable to stored the read value
uint32_t readData = 0;


//Assign addres to the pointer
flagAddress = (volatile uint32_t *)RW_FLAG;


//Read value from memory
* flagAddress = 12; // Write


//Write value to the memory
readData = * flagAddress;

Q:什么是堆棧溢出?

A:如果您的程序嘗試訪問超出可用堆棧內(nèi)存的限制,則會發(fā)生堆棧溢出。換句話說,如果調(diào)用堆棧指針超出堆棧邊界,則可以說發(fā)生堆棧溢出。
如果發(fā)生堆棧溢出,程序可能會崩潰,或者可以說是堆棧溢出導(dǎo)致的分段錯誤

Q:I2C和SPI的區(qū)別是什么?

A:嵌入式系統(tǒng)中,I2C和SPI都扮演著重要的角色。這兩種通信協(xié)議都是同步通信的例子,但仍然有一些重要的區(qū)別。I2C 和 SPI 通信協(xié)議之間的重要區(qū)別。

  • I2C 支持半雙工,而 SPI 是全雙工通信。

  • I2C 只需要兩線進行通信,而 SPI 需要三線或四線進行通信(取決于要求)。

  • 與 SPI 通信相比,I2C 速度較慢。

  • I2C 比 SPI 消耗更多功率。

  • I2C 比 SPI 更不易受噪聲影響。

  • 與 SPI 通信協(xié)議相比,I2C 的實現(xiàn)成本更低。

  • I2C 工作在線路和邏輯上,它有一個上拉電阻,而在 SPI 的情況下不需要上拉電阻。

  • 在 I2C 通信中,我們在每個字節(jié)后獲得確認位,SPI 通信協(xié)議不需要。

  • I2C 確保從設(shè)備接收發(fā)送的數(shù)據(jù),而 SPI 不驗證數(shù)據(jù)是否正確接收。

  • I2C 支持多主機通信,而 SPI 不支持多主機通信。

  • I2C 和 SPI 之間的一大區(qū)別在于,I2C 支持同一總線上的多個設(shè)備,而無需任何額外的選擇線(基于設(shè)備地址工作),而 SPI 需要額外的信號(從選擇線)線來管理同一總線上的多個設(shè)備。

  • I2C 支持仲裁,而 SPI 不支持仲裁。

  • I2C 支持時鐘延長,而 SPI 不支持時鐘延長。

  • I2C 可以被一個未能釋放通信總線的設(shè)備鎖定。

  • 由于起始位和停止位,I2C 有一些額外的開銷。

  • I2C 更適合長距離,而 SPI 更適合短距離。

Q:RS232RS485有什么區(qū)別?

A:RS232 和 RS485 之間的一些重要區(qū)別

61090aca-6472-11ed-8abf-dac502259ad0.png

審核編輯 :李倩


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5198

    文章

    20449

    瀏覽量

    334060
  • GPIO
    +關(guān)注

    關(guān)注

    16

    文章

    1328

    瀏覽量

    56230
  • ISR
    ISR
    +關(guān)注

    關(guān)注

    0

    文章

    38

    瀏覽量

    15200

原文標題:【知識分享】嵌入式工程師去面試可能被問到的問題集錦-1(建議收藏)

文章出處:【微信號:精通單片機與嵌入式,微信公眾號:精通單片機與嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    什么是BSP工程師

    一、嵌入式系統(tǒng) 要明白什么是嵌入式軟件工程師,我們先從嵌入式系統(tǒng)(嵌入式設(shè)備)說起。維基百科上對嵌入式
    發(fā)表于 01-13 06:54

    系統(tǒng)嵌入式的學(xué)習(xí)路線

    ,供各位嵌入式初學(xué)者參考,希望對大家有所幫助。嵌入式工程師需要掌握的內(nèi)容非常廣泛,主要包括嵌入式軟件、嵌入式硬件、以及相關(guān)行業(yè)、產(chǎn)品的專業(yè)知
    發(fā)表于 12-16 07:49

    ARM嵌入式這樣學(xué)

    ,世事也在變,前幾年大熱的公務(wù)員,現(xiàn)在也逐漸被人嫌棄。所以在濃厚的興趣使然下,才有可能成功。 另外,嵌入式這個魚塘也有攪渾水般的存在,據(jù)了解,某知乎er最近面試的十幾個平均工作年齡超三年的硬件
    發(fā)表于 12-04 07:48

    嵌入式就業(yè)形勢好不好?

    。 許多工作多年的工程師,由于長期停留在“調(diào)板子、寫裸機代碼”的階段,而逐漸市場邊緣化。因此,持續(xù)學(xué)習(xí)、緊跟技術(shù)潮流,成為了嵌入式工程師保持競爭力的關(guān)鍵。 五、行業(yè)選擇的重要性
    發(fā)表于 11-10 11:48

    為什么嵌入式驅(qū)動開發(fā)工程師可以拿高薪

    嵌入式驅(qū)動開發(fā)工程師能拿到高薪,核心在于這個崗位剛好踩中了行業(yè)剛需、技術(shù)壁壘高、人才缺口大這三個關(guān)鍵節(jié)點,而且這種需求還在隨著智能硬件的普及持續(xù)擴大。首先得明確,嵌入式驅(qū)動是硬件和軟件之間
    的頭像 發(fā)表于 10-30 16:37 ?706次閱讀
    為什么<b class='flag-5'>嵌入式</b>驅(qū)動開發(fā)<b class='flag-5'>工程師</b>可以拿高薪

    硬件工程師嵌入式軟件哪個更有前途?

    不少人琢磨硬件工程師嵌入式軟件到底哪個更有前途,其實從實際職場情況和成長路子看,差別還挺清楚的。先說說天花板這事,一般來講,硬件工程師的職業(yè)天花板還真比嵌入式軟件低 —— 硬件崗位大
    的頭像 發(fā)表于 09-10 10:43 ?1107次閱讀

    招鑲?cè)?b class='flag-5'>式工程師1個,硬件工程師一個,

    東莞市研生科技有限公司是一家藍牙方案公司,主營藍牙方案的設(shè)計開發(fā),產(chǎn)品包括藍牙BLE/4G透傳/AI智能體方案開發(fā),因公司發(fā)展需要需對外招聘嵌入式軟件開發(fā)工程師,對藍牙音頻/BLE以及智能IC讀卡器有三年實操經(jīng)驗,能單獨完成項目的軟件開發(fā),男女不限,投簡歷郵箱:65905
    發(fā)表于 08-29 02:14

    電子發(fā)燒友工程師看!電子領(lǐng)域評職稱,技術(shù)之路更扎實

    人才的重要標準。這類職稱評審會看重實操能力(如嵌入式系統(tǒng)優(yōu)化、代碼效率提升案例)和技術(shù)認證(如 ARM 相關(guān)認證)。有位開發(fā)者提到,曾因缺少職稱,在大廠面試中敗給經(jīng)驗相當(dāng)?shù)膶κ?;評上 “高級嵌入式
    發(fā)表于 08-20 13:53

    嵌入式工程師為什么要學(xué)QT?

    Qt對嵌入式工程師來說,真的很重要嗎? Qt是一個跨平臺的C++應(yīng)用程序開發(fā)框架,非常適合嵌入式系統(tǒng)的開發(fā),Qt在嵌入式開發(fā)中具有很重要的作用。 在項目實踐中可以看出,Qt在工業(yè)自動化
    發(fā)表于 08-14 15:15

    嵌入式工程師的進階之路

    嵌入式工程師的進階之路 (一)初級工程師(0-3 年)核心技能: 單片機開發(fā):STM32F103系列 GPIO/USART/SPI 外設(shè)驅(qū)動,能完成 LED 呼吸燈、按鍵檢測、串口通信等基礎(chǔ)項目
    發(fā)表于 08-13 11:08

    盤點嵌入式就業(yè)所需要的技能有哪些?

    基礎(chǔ),能夠進行高性能計算和數(shù)據(jù)處理。 - 了解自動駕駛技術(shù)的基本原理,如傳感器融合、路徑規(guī)劃等。 - 具備良好的溝通能力和團隊合作精神,能夠與不同領(lǐng)域的工程師協(xié)作。 2.智能手機行業(yè): - 熟悉嵌入式編程
    發(fā)表于 08-11 15:43

    如何成為一名嵌入式軟件工程師?

    如何成為一名嵌入式軟件工程師? 01明確崗位的角色與定位 嵌入式軟件工程師主要負責(zé)開發(fā)運行在特定硬件平臺上的軟件,這些軟件通常與硬件緊密集成,以實現(xiàn)特定的功能。 不僅需要精通編程語言
    發(fā)表于 04-15 14:37

    一招拿捏電子工程師#AI拿捏了 #電子工程師 #電子電工

    電子工程師
    安泰小課堂
    發(fā)布于 :2025年03月25日 17:30:51

    嵌入式系統(tǒng)開發(fā)圣經(jīng)【干貨】

    內(nèi)容包括:嵌入式系統(tǒng)的介紹、嵌入式SoC硬件系統(tǒng)概論、嵌入式系統(tǒng)軟件開發(fā)。適用于產(chǎn)品主管、系統(tǒng)設(shè)計分析人員及欲進入該領(lǐng)域的工程師。本資料詳細的理論講解,廣泛深入地分析相關(guān)的
    發(fā)表于 03-12 13:58