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

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

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