單片機(jī)工程師面試時(shí)的經(jīng)典問題!你答的上來嗎

本筆記由chatGPT傾情提供!
1.講一下stm32的時(shí)鐘系統(tǒng)
答:STM32微控制器的時(shí)鐘系統(tǒng)由多個(gè)時(shí)鐘源、時(shí)鐘樹和時(shí)鐘控制器組成,用于提供系統(tǒng)時(shí)鐘和外設(shè)時(shí)鐘。以下是 STM32 時(shí)鐘系統(tǒng)的主要組成部分:
- 外部時(shí)鐘晶振:外部時(shí)鐘源為 STM32 提供了穩(wěn)定的時(shí)鐘信號(hào),通常為晶振或外部時(shí)鐘信號(hào)。
- 內(nèi)部振蕩器:STM32 還集成了一個(gè)內(nèi)部振蕩器,可用于在缺少外部時(shí)鐘源時(shí)提供基本時(shí)鐘。
- PLL(鎖相環(huán)):PLL 可以將輸入時(shí)鐘倍頻或分頻,提供更高的系統(tǒng)時(shí)鐘速度。PLL 還可以配置為多個(gè)時(shí)鐘域,以支持多個(gè)時(shí)鐘頻率和時(shí)鐘分頻。
- 時(shí)鐘樹:時(shí)鐘樹是一個(gè)包含多個(gè)時(shí)鐘分頻器和多路選擇器的層次結(jié)構(gòu),可將輸入時(shí)鐘源分配給各種系統(tǒng)和外設(shè)時(shí)鐘域。
- 時(shí)鐘控制器:時(shí)鐘控制器用于配置時(shí)鐘源、時(shí)鐘樹和時(shí)鐘分頻,以及為各種外設(shè)提供時(shí)鐘信號(hào)。
通過配置 STM32 的時(shí)鐘系統(tǒng),可以控制各種外設(shè)的時(shí)鐘速度和時(shí)鐘源,并提供穩(wěn)定的系統(tǒng)時(shí)鐘。這對(duì)于保證系統(tǒng)性能和穩(wěn)定性非常重要。
2.C語(yǔ)言中堆和棧的區(qū)別;推挽輸出是什么?
答:C語(yǔ)言中的堆和棧是內(nèi)存管理的兩種方式,主要區(qū)別如下:
- 分配方式:棧是自動(dòng)分配的,而堆是手動(dòng)分配的。
- 內(nèi)存分配大小:棧分配的內(nèi)存大小固定,堆分配的內(nèi)存大小可以根據(jù)需要?jiǎng)討B(tài)調(diào)整。
- 內(nèi)存釋放:棧的內(nèi)存由系統(tǒng)自動(dòng)管理,不需要手動(dòng)釋放;而堆的內(nèi)存必須由程序員手動(dòng)釋放,否則會(huì)造成內(nèi)存泄漏。
- 內(nèi)存訪問方式:棧的內(nèi)存訪問速度較快,因?yàn)樗鼈兪琼樞蚍峙涞?;而堆的?nèi)存訪問速度較慢,因?yàn)樗鼈兪莿?dòng)態(tài)分配的。
推挽輸出是一種電子電路輸出方式,用于將微控制器的數(shù)字輸出信號(hào)轉(zhuǎn)換為高電平或低電平的電壓輸出。推挽輸出通常由兩個(gè)晶體管(PNP 和 NPN)組成,其中一個(gè)負(fù)責(zé)輸出高電平,另一個(gè)負(fù)責(zé)輸出低電平。在推挽輸出電路中,當(dāng)輸出高電平時(shí),PNP晶體管打開,NPN晶體管關(guān)閉,反之亦然。推挽輸出電路常用于驅(qū)動(dòng)電機(jī)、燈光等負(fù)載,具有較高的輸出電流和電壓穩(wěn)定性。
3.假如一個(gè)單片機(jī)上電后不運(yùn)行,這是為什么?
答:
- 程序錯(cuò)誤:?jiǎn)纹瑱C(jī)程序中的錯(cuò)誤可能會(huì)導(dǎo)致單片機(jī)無法正常運(yùn)行,例如,程序邏輯錯(cuò)誤、死循環(huán)等。
- 外設(shè)故障:如果單片機(jī)依賴于外設(shè)進(jìn)行操作,外設(shè)故障可能會(huì)導(dǎo)致單片機(jī)無法正常運(yùn)行。例如,電源模塊、時(shí)鐘模塊、存儲(chǔ)器模塊等出現(xiàn)故障。
- 電源問題:如果單片機(jī)供電不足或者不穩(wěn)定,可能會(huì)導(dǎo)致單片機(jī)無法正常運(yùn)行。例如,電池電量不足、電源干擾等。
- 外部環(huán)境干擾:?jiǎn)纹瑱C(jī)可能會(huì)受到外部環(huán)境干擾,例如,電磁場(chǎng)干擾、靜電干擾等。
答:如果單片機(jī)上電后不運(yùn)行,需要進(jìn)行一系列的排查和調(diào)試。例如,檢查程序是否正確、檢查外設(shè)是否正常、檢查電源是否正常、檢查單片機(jī)是否受到外部干擾等。針對(duì)不同的問題,可能需要采取不同的解決方案。
4.一個(gè)溫度傳感器模塊,按照正確的使用方式和參數(shù)指標(biāo),對(duì)人體皮膚測(cè)量之后,得到的溫度一直都是35攝氏度,這是為什么?
答:如果一個(gè)溫度傳感器模塊,按照正確的使用方式和參數(shù)指標(biāo),對(duì)人體皮膚測(cè)量之后,得到的溫度一直都是35攝氏度,可能有以下原因:
- 溫度傳感器模塊工作不正常:溫度傳感器模塊可能出現(xiàn)故障或者損壞,導(dǎo)致無法正確測(cè)量溫度??梢試L試更換傳感器模塊或者進(jìn)行維修。
- 溫度傳感器模塊讀取數(shù)據(jù)不正確:溫度傳感器模塊讀取數(shù)據(jù)的方式可能不正確,導(dǎo)致讀取的數(shù)據(jù)始終為35攝氏度。可以檢查讀取數(shù)據(jù)的代碼是否正確。
- 測(cè)量位置不正確:人體皮膚溫度的測(cè)量位置可能不正確,導(dǎo)致得到的溫度始終為35攝氏度。可以嘗試改變測(cè)量位置,例如測(cè)量腋下溫度、耳溫等。
- 測(cè)量環(huán)境溫度恒定:如果測(cè)量環(huán)境的溫度恒定為35攝氏度,溫度傳感器模塊可能無法正確測(cè)量出人體皮膚的溫度??梢詫y(cè)量環(huán)境溫度調(diào)整到與人體皮膚溫度有一定差異的溫度。
需要綜合考慮以上因素進(jìn)行排查,找出導(dǎo)致測(cè)量結(jié)果異常的原因。
5.請(qǐng)說一下5單片機(jī)的中斷處理流程
答:51單片機(jī)的中斷處理流程通常包括以下步驟:
- 中斷請(qǐng)求:外部設(shè)備或者程序通過特定的方式發(fā)送中斷請(qǐng)求信號(hào),使得51單片機(jī)進(jìn)入中斷響應(yīng)狀態(tài)。
- 中斷優(yōu)先級(jí)判斷:當(dāng)出現(xiàn)多個(gè)中斷請(qǐng)求時(shí),51單片機(jī)會(huì)根據(jù)中斷優(yōu)先級(jí)進(jìn)行判斷,優(yōu)先處理優(yōu)先級(jí)高的中斷。
- 中斷向量定位:51單片機(jī)通過中斷向量表查找中斷處理程序的入口地址,從而定位中斷處理程序。
- 中斷處理程序執(zhí)行:51單片機(jī)跳轉(zhuǎn)到中斷處理程序的入口地址處開始執(zhí)行中斷處理程序。
- 中斷標(biāo)志清除:在中斷處理程序中,需要清除相應(yīng)的中斷標(biāo)志位,表示該中斷已被處理完畢。
- 恢復(fù)現(xiàn)場(chǎng):如果中斷處理程序改變了程序狀態(tài)和寄存器內(nèi)容,需要在中斷處理程序執(zhí)行完成后恢復(fù)現(xiàn)場(chǎng),返回到原來的程序流程中。
- 繼續(xù)執(zhí)行原程序:恢復(fù)現(xiàn)場(chǎng)之后,51單片機(jī)會(huì)繼續(xù)執(zhí)行原來的程序流程。
需要注意的是,中斷處理程序需要盡可能地短小精悍,避免執(zhí)行時(shí)間過長(zhǎng)導(dǎo)致其他中斷無法得到及時(shí)響應(yīng),從而影響系統(tǒng)的實(shí)時(shí)性。同時(shí),需要合理設(shè)置中斷優(yōu)先級(jí),確保各個(gè)中斷能夠得到合理的響應(yīng)和處理。
6.傳感器的輸出引腳是高阻抗好還是低阻抗好?
答:傳感器的輸出引腳是高阻抗還是低阻抗好,這要視具體的應(yīng)用場(chǎng)景和設(shè)計(jì)需求而定。
一般來說,傳感器的輸出引腳采用高阻抗設(shè)計(jì),可以減小對(duì)傳感器的負(fù)載,同時(shí)也有利于減小電源消耗,提高系統(tǒng)的靈敏度和精度。高阻抗輸出一般需要接入運(yùn)放等信號(hào)處理電路進(jìn)行信號(hào)放大和濾波,從而提高信號(hào)的穩(wěn)定性和可靠性。
但是,在一些特定的應(yīng)用場(chǎng)合中,低阻抗輸出也可能是更好的選擇。例如,在高速信號(hào)傳輸、大功率負(fù)載驅(qū)動(dòng)、長(zhǎng)距離信號(hào)傳輸?shù)葓?chǎng)合,采用低阻抗輸出可以降低信號(hào)傳輸線路的噪聲、抗干擾能力更強(qiáng)、驅(qū)動(dòng)能力更強(qiáng),同時(shí)也可以提高信號(hào)的可靠性和穩(wěn)定性。
因此,在設(shè)計(jì)傳感器輸出電路時(shí),需要根據(jù)具體的應(yīng)用場(chǎng)景和系統(tǒng)需求進(jìn)行綜合考慮,權(quán)衡高阻抗和低阻抗的優(yōu)缺點(diǎn),選擇合適的方案。