嵌入式筆試面試題目系列(五)
本系列將按照類別對題目進行分類整理,重要的地方標上星星,這樣有利于大家打下堅實的基礎。
第六章 單片機常見面試題
1、ROM與RAM
這一點我另一篇文章講解過,這里放鏈接:
ROM與RAM的區別
2、 IO口工作方式(學過STM32的人應該很熟悉)
上拉輸入、下拉輸入、推挽輸出、開漏輸出。
3、請說明總線接口USRT、I2C、USB的異同點
(串/并、速度、全/半雙工、總線拓撲等)
4、IIC協議時序圖
必須會畫出來,我面試被問到過,讓我畫,我畫了個大概。(面試驅動崗必須會)
IIC協議有兩根線,一根SCL時鐘線,一根SDA數據線,如圖可以看到開始信號和結束信號的電平狀態。開始后,因為IIC總線可以掛在很多設備(不超過8個),所以先發送一個設備地址,選中這個設備,設備地址最后一位代表了是寫還是讀。選中設備后,再發送寄存器地址,代表選中某個寄存器,再開始傳輸數據。
八位設備地址=7位從機地址+讀/寫
給地址添加一個方向位位用來表示接下來數據傳輸的方向,
0表示主設備向從設備(write)寫數據,
1表示主設備向從設備(read)讀數據

開始信號:SCL 為高電平時,SDA 由高電平向低電平跳變,開始傳送數據。
結束信號:SCL 為高電平時,SDA 由低電平向高電平跳變,結束傳送數據。
應答信號:接收數據的 IC 在接收到 8bit 數據后,向發送數據的 IC 發出特定的低電平脈沖,表示已收到數據。CPU 向受控單元發出一個信號后,等待受控單元發出一個應答信號,CPU 接收到應答信號后,根據實際情況作出是否繼續傳遞信號的判斷。若未收到應答信號,由判斷為受控單元出現故障。
IIC信號在數據傳輸過程中,當SCL=1高電平時,數據線SDA必須保持穩定狀態,不允許有電平跳變,只有在時鐘線上的信號為低電平期間,數據線上的高電平或低電平狀態才允許變化。SCL=1時 數據線SDA的任何電平變換會看做是總線的起始信號或者停止信號。
IIC我也有一篇文章有講解,請看鏈接:
IIC總線最多可以掛多少個設備
5、單片機的SP指針始終指向
棧頂
6、IIC總線在傳送數據過程中共有三種類型信號:
它們分別是:開始信號、結束信號和應答信號。
7、FIQ中斷向量入口地址:
FIQ和IRQ是兩種不同類型的中斷,ARM為了支持這兩種不同的中斷,提供了對應的叫做FIQ和IRQ處理器模式(ARM有7種處理模式)。
FIQ的中斷向量地址在0x0000001C,而IRQ的在0x00000018。
8、SPI四種模式,簡述其中一種模式,畫出時序圖
面試驅動崗位,需要會畫其中一種方式。模式0或者模式3。畫出通信時序圖。
在芯片資料上極性和相位一般表示為CPOL(Clock POLarity)和CPHA(Clock PHAse), 極性和相位組合成4種工作模式。

spi四種模式SPI的相位(CPHA)和極性(CPOL)分別可以為0或1,對應的4種組合構成了SPI的4種模式(mode)
Mode 0 CPOL=0, CPHA=0
Mode 1 CPOL=0, CPHA=1
Mode 2 CPOL=1, CPHA=0
Mode 3 CPOL=1, CPHA=1
時鐘極性CPOL: 即SPI空閑時,時鐘信號SCLK的電平(1:空閑時高電平; 0:空閑時低電平) 時鐘相位CPHA: 即SPI在SCLK第幾個邊沿開始采樣(0:第一個邊沿開始; 1:第二個邊沿開始)
sd卡的spi常用的是mode 0 和mode 3,這兩種模式的相同的地方是都在時鐘上升沿采樣傳輸數據,區別這兩種方式的簡單方法就是看空閑時,時鐘的電平狀態,低電平為mode 0 ,高電平為mode 3。
具體的通信過程請自行百度,2021年秋招大疆筆試題考了這道題。
第七章 雜項面試題
1、講一講馮諾依曼和哈佛體系的區別
哈佛結構是一種將程序指令存儲和數據存儲分開的存儲器結構。目前使用哈佛結構的中央處理器和微控制器有很多,ARM9、ARM10和ARM11,51單片機屬于哈佛結構。
馮·諾伊曼結構也稱普林斯頓結構,是一種將程序指令存儲器和數據存儲器合并在一起的存儲器結構。
2、面向對象編程的三大特性
以及重載的意思。重載,是指允許存在多個同名函數,而這些函數的參數表不同(或許參數個數不同,或許參數類型不同,或許兩者都不同)。
3、http默認端口號
80
4、linux中mysql數據庫默認的端口是
3306
5、編程習慣小知識點
C語言編程中,單片機平臺,一般有.c和.h文件,如果一個人在.h文件中定義了一個變量,會有什么后果。(討論編程習慣的問題,我一般是只在.h文件中聲明函數,不會做變量定義;另外,編程中每一個模塊都會有對應的.c和.h文件,最終的總程序自己定義一個comm.c和comm.h去調用各個模塊,這樣的習慣我覺得還行)
if語句中如果是或運算( | ),第一個條件滿足時,第二個條件還會判斷嗎?;蜻\算的話,當然不會,因為 0|1=1,中斷了
對于代碼整潔方面,我已經在我的技術交流群發了文件,推薦《代碼整潔之道》、《編碼:隱匿在計算機軟硬件背后的語言》、《程序員的自我修養》、《華為內部代碼規范》