色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

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

精通單片機與嵌入式 ? 來源:精通單片機與嵌入式 ? 作者:精通單片機與嵌入 ? 2022-11-15 11:03 ? 次閱讀

Q:什么是ISR?

A:ISR 是指中斷服務程序。 這些是存儲在特定內存地址的函數,當發生某種類型的中斷時會調用這些函數。 Cortex-M 處理器系列具有管理中斷執行的 NVIC

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

A:ISR 不返回任何內容并且不允許傳遞任何參數。

當硬件或軟件中斷發生時會調用 ISR,它不會被任何代碼調用,所以這就是沒有參數傳遞到 ISR 的原因。因為它不會被任何代碼調用,所以它不會有返回值。

Q:什么是 volatile 關鍵字?

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

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

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

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

本公眾號會更新一篇關于標準C語言與嵌入式C語言的區別,歡迎持續關注。

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

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

const int a = 0;

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

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

volatile int a;

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

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

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

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

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

定義的用法為:

int volatile * const PortRegister;

理解:

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

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

A:1、訪問內存映射外設寄存器或硬件狀態寄存器。

#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、在多個線程之間共享全局變量或緩沖區

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

volatile int giFlag = 0;


ISR(void)
{
    giFlag = 1;
}


int main(void)
{


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


    return 0;
}

Q:什么是中斷延遲?

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


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

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

Q:如何減少中斷延遲?

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

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

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

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

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

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

Q:在ISR中可以調用任何函數嗎?

A:是的,但是不建議在中斷中直接調用函數;建議在中斷中先設置相關標志或執行數據準備,在主循環中進行數據處理。

Q:什么是中斷嵌套?

A:在嵌套中斷系統中,即使正在執行中斷服務函數,也可以隨時隨地進行中斷。 但是,只有最高優先級的 ISR 會立即執行。 優先級次高的 ISR 將在最高優先級的 ISR 完成后執行。

嵌套中斷系統的規則是:

  • 所有中斷都必須被設定中斷優先級。

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

  • 如果低優先級 ISR 被高優先級中斷中斷,則執行高優先級 ISR。

  • 如果高優先級 ISR 被低優先級中斷中斷,則高優先級 ISR 繼續執行。

  • 必須按時間順序執行相同優先級的 ISR

Q:ARM Cortex 中的NVIC是什么?

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

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

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

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

A:可以。

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

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

  • 堆棧區的聲明

  • 堆區的聲明

  • 矢量表

  • 重置處理程序代碼

  • 其他異常處理程序代碼

Q:如何訪問內存的固定地址?

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:如果您的程序嘗試訪問超出可用堆棧內存的限制,則會發生堆棧溢出。換句話說,如果調用堆棧指針超出堆棧邊界,則可以說發生堆棧溢出。
如果發生堆棧溢出,程序可能會崩潰,或者可以說是堆棧溢出導致的分段錯誤

Q:I2C和SPI的區別是什么?

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

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

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

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

  • I2C 比 SPI 消耗更多功率。

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

  • 與 SPI 通信協議相比,I2C 的實現成本更低。

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

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

  • I2C 確保從設備接收發送的數據,而 SPI 不驗證數據是否正確接收。

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

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

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

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

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

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

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

Q:RS232RS485有什么區別?

A:RS232 和 RS485 之間的一些重要區別

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

審核編輯 :李倩


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    5083

    文章

    19133

    瀏覽量

    305656
  • GPIO
    +關注

    關注

    16

    文章

    1205

    瀏覽量

    52139
  • ISR
    ISR
    +關注

    關注

    0

    文章

    38

    瀏覽量

    14441

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

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

收藏 人收藏

    評論

    相關推薦

    嵌入式工程師常用的開發工具有哪些?

    嵌入式工程師常用的開發工具有哪些? 在嵌入式系統開發的廣闊領域中,嵌入式工程師們憑借著一系列強大的工具,將創意與技術完美融合,打造出高效、可
    發表于 12-20 15:29

    面試嵌入式都會問那些問題呢?

    作為一名電子工程專業的畢業生,我對嵌入式系統開發一直充滿熱情。當我決定踏入這個行業,尋找屬于自己的職業道路時,面試成為了我必須面對的挑戰。在這里,我想分享一些我在嵌入式系統
    的頭像 發表于 11-27 09:13 ?334次閱讀
    <b class='flag-5'>面試</b><b class='flag-5'>嵌入式</b>都會問那些問題呢?

    程序員面試只需一個技能征服所有面試官!

    個車輛工程專業的研究生面試面試官最后問他會不會嵌入式。雖然應聘的崗位不是嵌入式
    的頭像 發表于 11-05 19:35 ?207次閱讀
    程序員<b class='flag-5'>去</b><b class='flag-5'>面試</b>只需一個技能征服所有<b class='flag-5'>面試</b>官!

    嵌入式QT常見開發方式有哪些?

    嵌入式QT常見開發方式有哪些? 嵌入式工程師在學習和使用Qt進行開發時,常見的幾種開發方式包括: 1.Qt Widgets編程: 通過C++代碼直接編寫GUI應用程序,利用QtWidgets庫
    發表于 08-12 10:05

    面試嵌入式工作,會被問什么問題?

    面試嵌入式工作時,面試可能會從多個方面考察應聘者的知識、技能和經驗。以下是一些常見的嵌入式工作面試
    的頭像 發表于 07-17 09:26 ?2032次閱讀
    <b class='flag-5'>面試</b><b class='flag-5'>嵌入式</b>工作,會被問什么問題?

    嵌入式熱門領域有哪些?

    另一個備受關注的領域,已經在汽車行業展現出革命性的影響。在自動駕駛領域,嵌入式系統的重要性日益突出,它們廣泛應用于與傳感器和控制系統配合,實現車輛的自主運行。自動駕駛技術的急速發展為嵌入式系統
    發表于 07-16 09:23

    找STM32硬件開發兼職工程師

    上海做傳感器的公司,找STM32硬件開發兼職工程師,會硬件開發,嵌入式軟件開發,可項目外包。有意聯系:15900460170
    發表于 06-22 19:12

    嵌入式軟件工程師如何提升自己?

    嵌入式軟件工程師如何提升自己? 作為一名嵌入式軟件工程師,在這個充滿機遇和挑戰的領域里,如何提升自己顯得非常重要,它決定了你未來的發展方向和成就。接下來,我們一起探討一下。 1.奠定扎
    發表于 06-12 11:20

    嵌入式軟件工程師和硬件工程師的區別?

    嵌入式軟件工程師和硬件工程師的區別? 嵌入式軟件工程師 嵌入式軟件
    發表于 05-16 11:00

    大廠電子工程師常見面試題#電子工程師 #硬件工程師 #電路知識 #面試

    電子工程師電路
    安泰小課堂
    發布于 :2024年04月30日 17:33:15

    一款適合嵌入式工程師使用的在線工具

    一款適合嵌入式工程師使用的在線工具,工具有如下功能,如下圖所示: 1. 報文校驗功能,如下圖所示 2. UDP服務端測試工具:該UDP服務端工具可以理解為 “UDP服務端” 或者 “服務器
    發表于 04-09 22:20

    嵌入式工程師需要掌握哪些技術?

    嵌入式工程師需要掌握哪些技術? 嵌入式系統是當今科技領域中的重要組成部分,它們存在于我們生活的方方面面,從智能手機到汽車控制系統,從家電到醫療設備。因此,對于那些想要進入嵌入式行業的
    發表于 03-04 16:38

    嵌入式人工智能的就業方向有哪些?

    的發展方向有很多,門檻高低不一樣。下面給大家列舉一些相應崗位所需具備的技能: 一:嵌入式Linux,C語言開發工程師,Linux軟件開發工程師 LinuxC語言開發 LinuxC語言開發進階 Linux
    發表于 02-26 10:17

    一名嵌入式工程師的漲薪經歷

    下面是一位嵌入式工程師的漲薪經歷,希望可以幫助到你,幫到其他的在校學生。 ? 階段 1 大一到大三這個階段我與大多數學生相同: ? 一、學習本專業知識(電子信息類專業) 二、學習嵌入式軟件開發需要
    的頭像 發表于 01-05 08:39 ?454次閱讀
    主站蜘蛛池模板: 野花日本免费完整版高清版动漫| jaPanesmature儿母| 国产成人一区二区三中文| 日美一级毛片| 国产偷啪自怕网| 中文字幕亚洲第一| 人妖和美女玩| 精品国产乱码久久久久久夜深人妻 | 国产 高清 无码 在线播放| 亚洲AV国产国产久青草| 久久夜色噜噜噜亚洲AV0000| chinese极品嫩模videos| 驯服有夫之妇HD中字日本| 恋夜秀场支持安卓版全部视频国产 | 东北成人社区| 亚洲中文在线偷拍| 奇米网一区二区三区在线观看| 国产精品久久久久久久久LI无码| 再插深点嗯好大好爽| 色婷婷激情AV精品影院| 久久理论片| 国产第一页在线视频| 5g天天影院天天看天天爽| 午夜看片a福利在线观看| 蜜柚在线观看免费高清官网视频 | 毛片TV网站无套内射TV网站| 丰满少妇发泄14p| 在线中文字幕网站| 我要搞av| 欧美一区二区视频97色伦| 健身房被教练啪到腿软H| 边做边爱播放3免费观看| 亚洲中文字幕一二三四区苍井空 | 在线观看视频国产| 性夜影院爽黄A爽免费动漫| 泡妞高手在都市完整版视频免费| 狠狠人妻久久久久久综合九色| 啊灬啊别停灬用力啊在线观看视频| 一个人色导航| 亚洲大片免费看| 三级aa久久|