STM32F1開發(fā)標(biāo)準(zhǔn)教程董磊課后參考答案_第1頁
STM32F1開發(fā)標(biāo)準(zhǔn)教程董磊課后參考答案_第2頁
STM32F1開發(fā)標(biāo)準(zhǔn)教程董磊課后參考答案_第3頁
STM32F1開發(fā)標(biāo)準(zhǔn)教程董磊課后參考答案_第4頁
STM32F1開發(fā)標(biāo)準(zhǔn)教程董磊課后參考答案_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第1章STM32開發(fā)平臺和工具1.簡述STM32與ST公司和ARM公司的關(guān)系。STM32是基于ARM?Cortex?M3處理器內(nèi)核的32位閃存微控制器,是一種包含與被包含的關(guān)系。STM32為MCU用戶開辟了一個全新的自由開發(fā)空間,并提供了各種易于上手的軟硬件輔助工具。STM32的內(nèi)核是ARM推出的基于專為要求高性能、低成本、低功耗的嵌入式應(yīng)用專門設(shè)計的ARMCortex-M3內(nèi)核。STM32是ARM7架構(gòu)中的一員。ARM是賣內(nèi)核的,相當(dāng)于賣CPU的Intel,ST是賣單片機(jī)的,相當(dāng)于賣PC的HP或DELL。ARM是做核的,但自己不生產(chǎn)也不賣芯片,而是向芯片廠家授權(quán);ST是他們的已經(jīng)授權(quán)廠家,拿到授權(quán)后容,再做二次開發(fā),像STM32F系列就是ARM的M3系列的芯片。但ST的產(chǎn)品不止商城ARM芯片,還有其他的芯片,像邏輯芯片,老式的單片機(jī)芯片。2.通信-下載模塊接口電路中使用了一個紅色LED(PWR)作為電源指示,請問如何通過萬用表檢測LED的正、負(fù)端?萬用表選擇電阻檔R,不大于100Ω萬用表紅黑兩線搭LED發(fā)光二極管兩級(可隨意搭)觀察萬用表是否有讀數(shù)。如果沒有讀數(shù),調(diào)換紅黑兩線的搭線位置,有讀數(shù)后搭紅線端為正,黑線端為負(fù),3.通信-下載模塊接口電路中的電阻(R9)有什么作用?該電阻阻值的選取標(biāo)準(zhǔn)是什么?R9電阻起到限流的作用,防止紅色LED被燒壞。4.電源轉(zhuǎn)換電路中的5V電源網(wǎng)絡(luò)能否使用3.3V電壓?請解釋原因。一般情況下,5V電源網(wǎng)絡(luò)不能直接用于3.3V電壓電路。主要原因是因為3.3V和5V之間存在電壓差異,以及電源網(wǎng)絡(luò)的電流傳輸能力。首先,3.3V電路需要的電壓級別是3.3V,如果直接使用5V電源,電壓過高可能會導(dǎo)致電路中的元件工作不正常甚至損壞。此外,3.3V電壓一般是嵌入式系統(tǒng)、微控制器等低功耗電子設(shè)備中常用的工作電壓,對電壓穩(wěn)定性要求較高。其次,電源網(wǎng)絡(luò)的電流傳輸能力也是考慮的因素。如果3.3V電路的負(fù)載電流較大,而5V電源網(wǎng)絡(luò)的電流傳輸能力不足以滿足需求,那么3.3V電壓將會下降,導(dǎo)致電路無法正常工作。為了解決這個問題,可以使用適當(dāng)?shù)碾妷航档推鳎ㄈ绶€(wěn)壓芯片)來降低5V電源來滿足3.3V電路的需求。這樣可以確保3.3V電壓穩(wěn)定且適合電路要求。另外,還需要注意將電源和電路之間的地線連接好,以保證電路的正常工作和電壓的穩(wěn)定性。5.電源轉(zhuǎn)換電路中,二極管(VD1)上的壓差為什么不是一個固定值?這個壓差的變化有什么規(guī)律?請結(jié)合SS210的數(shù)據(jù)手冊進(jìn)行解釋。二極管上的壓差不是一個固定值,主要由于二極管的特性和工作條件的影響。首先,二極管的壓降與其正向偏置電流有關(guān)。正向偏置電流越大,二極管的壓降就越小,反之亦然。這是因為二極管在正向偏置下會產(chǎn)生一個導(dǎo)通通道,從而使電流流過,形成壓降。當(dāng)正向偏置電流較小時,導(dǎo)通通道較窄,壓降較大;而正向偏置電流較大時,導(dǎo)通通道擴(kuò)大,壓降較小。其次,溫度也會對二極管的壓降產(chǎn)生影響。溫度升高會導(dǎo)致導(dǎo)通通道的導(dǎo)電性增強(qiáng),從而使壓降減小。這是因為隨著溫度的升高,二極管內(nèi)部的載流子數(shù)量會增加,造成電流的導(dǎo)通更加容易,進(jìn)而降低了壓降。對于SS210這款二極管,你可以參考其數(shù)據(jù)手冊,查找關(guān)于壓降特性的信息。數(shù)據(jù)手冊中通常會提供一張正向特性曲線圖,其中顯示了二極管正向壓降與正向電流之間的關(guān)系。通過觀察曲線,你可以了解到在不同正向偏置電流下,二極管上的壓降是如何變化的。此外,數(shù)據(jù)手冊還可能提供關(guān)于溫度對壓降的影響的信息,你可以查閱這些細(xì)節(jié)來更好地理解二極管壓降的變化規(guī)律。6.什么是低壓差線性穩(wěn)壓電源?請結(jié)合AMS1117-3.3的數(shù)據(jù)手冊,簡述低壓差線性穩(wěn)壓電源的特點。低壓差線性穩(wěn)壓電源是一種用于提供.3V的輸出電壓,壓降僅為1.1V。2.穩(wěn)定輸出電壓:AMS1117-3.3具有良好的線性調(diào)整特性,可以在輸入電壓變化的情況下保持輸出電壓的穩(wěn)定性。它的輸出電壓精度為±2%。3.過熱保護(hù):AMS1117-3.3內(nèi)部集成了過熱保護(hù)功能,當(dāng)芯片溫度達(dá)到一定值時會自動降低輸出電壓以保護(hù)芯片不被過熱損壞。4.過負(fù)載保護(hù):這個芯片還具備過負(fù)載保護(hù)功能,當(dāng)輸出電流超過其最大額定值時,會自動切斷輸出以保護(hù)芯片和外部電路的安全性。5.快速響應(yīng)時間:AMS1117-3.3的響應(yīng)時間很快,可以在輸入電壓變化時迅速調(diào)整輸出電壓,以保持穩(wěn)定的輸出。總而言之,低壓差線性穩(wěn)壓電源如AMS1117-3.3具有低壓差、穩(wěn)定輸出、過熱保護(hù)、過負(fù)載保護(hù)和快速響應(yīng)等特點,適用于需求穩(wěn)定電源的電子設(shè)備。7.低壓差線性穩(wěn)壓電源的輸入端和輸出端均有電容(C16、C17、C18),請問這些電容的作用是什么?輸入和輸出端都有電容的低壓差線性穩(wěn)壓電源,這些電容起著以下作用:1.平滑輸入電流:輸入端的電容(C16)可以平滑電源輸入電流的波動,避免電源噪聲和干擾對電壓穩(wěn)定性的影響。它能濾除輸入端電源線上的噪聲、干擾和高頻擾動,保持輸入電壓的穩(wěn)定性。2.儲存能量:輸出端的電容(C17、C18)可以儲存能量,以滿足負(fù)載瞬時需求的特性。當(dāng)負(fù)載突然變化或需要更大功率時,輸出端的電容可以通過放電提供額外的電流,以保持輸出電壓的穩(wěn)定性。3.過濾輸出紋波:輸出端的電容(C17、C18)也有助于減小輸出紋波,使輸出電壓更為穩(wěn)定。電容可以吸收和補(bǔ)償由于線路和負(fù)載變化引起的紋波信號,以保持輸出電壓的平穩(wěn)性??傊@些電容在低壓差線性穩(wěn)壓電源中起到了平滑輸入電流、儲存能量和過濾輸出紋波的作用,以確保電源的穩(wěn)定性和可靠性。8.電路板上的測試點有什么作用?哪些位置需要添加測試點?請舉例說明。測試點是電路板上專門用于連接測試設(shè)備的位置,用于檢測和驗證電路板的功能和性能。通過測試點,測試儀器可以接入電路板的各個關(guān)鍵節(jié)點,進(jìn)行信號測量、電壓測量、電流測量、時序分析等測試操作。測試點通常需要在電路板設(shè)計階段就預(yù)留,并在布局布線過程中添加。一般來說,以下位置需要添加測試點:1.電源線和地線:為了測量電源電壓和電流,測試點需要放置在電源引腳處,以便測量電源電壓和電流的穩(wěn)定性。2.輸入輸出端口:輸入輸出端口是電路板與外部連接的接口,測試點需要放置在輸入輸出端口的連接點處,以便驗證信號的正確性和穩(wěn)定性。3.電源過濾電容器:測試點可以放置在電源過濾電容器的引腳處,以便測量電容器的電壓穩(wěn)定性。4.關(guān)鍵信號節(jié)點:關(guān)鍵信號節(jié)點是電路板中重要的信號路徑,測試點需要放置在這些節(jié)點的連接點處,以便驗證信號的質(zhì)量和時序。5.調(diào)試用信號:為了方便調(diào)試和故障排除,測試點可以放置在一些特定信號路徑上,用于監(jiān)測信號波形和時序。舉例來說,如果設(shè)計一個音頻放大器電路板,測試點可以添加在以下位置:電源輸入端、音頻輸入端、音頻輸出端、放大器芯片引腳等位置。通過這些測試點,可以檢測電源電壓、音頻信號的輸入和輸出情況,以確保音頻放大器電路板的正常工作和性能達(dá)到要求。9.電源電路中的電感(L2)和電容(C19)有什么作用?二極管起整流作用,把交流電壓變成脈動直流電壓。電感起隔離交流電壓的作用,因負(fù)載對電源輸出電壓紋波要求較高,而開關(guān)管的輸出電流是方波,加電容后輸出電壓近似于三角波(自激式開關(guān)電源常利用此紋波電壓作信號源),故需用電感隔離(電阻也有近似效果,但效率太低,沒有實用意義),在電感后加電容即可得到質(zhì)量較高的低紋波電壓源。電容起濾波作用,大幅度降低電源紋波,使輸出電壓變成較為平直的直流電壓。10.獨立按鍵電路中的電容有什么作用?單相電動機(jī)產(chǎn)生的是橢圓磁場,因為不是旋轉(zhuǎn)磁場,所以啟動時不轉(zhuǎn)。這時轉(zhuǎn)子需用手扳動半圈,或由啟動繞組加電容,使轉(zhuǎn)子轉(zhuǎn)過半圈開始切割磁力線,產(chǎn)生轉(zhuǎn)子電流才開始正常旋轉(zhuǎn)。還有運(yùn)行電容電動機(jī),電機(jī)啟動后,電容不斷開,他和啟動繞組參與運(yùn)行,等于增加一臺小電動機(jī)的功率。11.獨立按鍵電路為什么要通過一個電阻連接3.3V電源網(wǎng)絡(luò)?為什么不直接連接3.3V電源網(wǎng)絡(luò)?獨立按鍵電路通常需要通過一個電阻連接到電源網(wǎng)絡(luò),而不是直接連接到3.3V電源。這是因為電阻可以用來限制按鍵電流的流動,起到保護(hù)電路的作用。當(dāng)按鍵被按下時,電流會通過按鍵電路流入電源網(wǎng)絡(luò)。通過添加一個適當(dāng)?shù)碾娮?,可以限制電流的大小,防止電流過大而損壞電路或電源。這種限流電阻的選擇要根據(jù)電路的特性和要求進(jìn)行合理的設(shè)計。此外,電阻還可以起其他作用。例如,通過選擇適當(dāng)?shù)碾娮柚?,可以防止按鍵被無意識地短路,造成電路的誤操作。電阻還可以用于防止電源網(wǎng)絡(luò)中的電流過載或電壓過高。因此,使用電阻連接獨立按鍵電路到電源網(wǎng)絡(luò)是為了保護(hù)電路、限制電流并提高系統(tǒng)的穩(wěn)定性。第2章實驗1——F103基準(zhǔn)工程1.為什么要對Keil進(jìn)行軟件標(biāo)準(zhǔn)化設(shè)置?對Keil軟件進(jìn)行標(biāo)準(zhǔn)化設(shè)置,比如將編碼格式改為ChineseGB2312(Simplified),這樣可以防止代碼文件中輸入的中文亂碼現(xiàn)象;將縮進(jìn)的空格數(shù)設(shè)置為2個空格,同時將Tab鍵也設(shè)置為2個空格,這樣可以防止使用不同的編輯器閱讀代碼時出現(xiàn)代碼布局不整齊的現(xiàn)象。2.STM32核心板上的STM32芯片的型號是什么?該芯片的內(nèi)部Flash和內(nèi)部SRAM的大小分別是多少?核板上STM32芯片的型號是STM32F103RCT6,STM32核心板上的STM32F103RCT6芯片的內(nèi)部Flash容量為256KB,芯片的內(nèi)部SRAM容量為48KB。3.在創(chuàng)建STM32基準(zhǔn)工程時,使用了兩個宏定義,分別是STM32F10XHD和USESTDPERIPHDRIVER,這兩個宏定義的作用是什么?STM32F10XHD和USESTDPERIPHDRIVER,一個宏定義表示使用在大容量的STM32芯片,第二個宏定義表示使用標(biāo)準(zhǔn)庫。4.在創(chuàng)建STM32基準(zhǔn)工程時,為什么要勾選UseMicroLIB?為了方便調(diào)試,本書在很多地方都使用了printf語句,在Keil中使用printf,需要勾選UseMicroLIB5.在創(chuàng)建STM32基準(zhǔn)工程時,為什么要勾選CreateHEXFile?Keil默認(rèn)編譯時不生成.hex文件,如果需要生成.hex文件,則需要勾選CreateHEXFile6.通過查找資料,總結(jié).hex、.bin和.axf文件的區(qū)別。axf文件、hex文件與bin文件都是可以運(yùn)行在我們的stm32上的,它們都存儲了編譯器根據(jù)源代碼生成的機(jī)器碼,根據(jù)應(yīng)用場合的不同,它們又有所區(qū)別。1axf文件:包含調(diào)試信息。2hex文件:包含地址信息。3bin文件:最直接的代碼映像。axf文件是編譯默認(rèn)生成的文件,不僅包含代碼數(shù)據(jù),而且還包含著調(diào)試信息,在MDK里進(jìn)行debug調(diào)試用的就是這個文件。hex文件在MDK里要勾選如下選項才可以生成:hex文件是一種使用十六進(jìn)制符號表示的代碼記錄,記錄了代碼應(yīng)該存儲到FLASH的哪個地址,下載器可以根據(jù)這些信息輔助下載。bin文件是根據(jù)axf文件生成的,需要在MDK下添加類似如下格式命令來生成對應(yīng)的bin文件:bin文件就是最小的可以運(yùn)行的文件了,其包含最直接的代碼映像。這三個文件中axf文件最大,hex文件次之,bin文件最小。7.通過網(wǎng)絡(luò)下載并安裝STM32ST-LINKUtility軟件,嘗試通過ST-Link工具和STM32ST-LINKUtility軟件將.hex文件下載到STM32核心板。略第3章實驗2——串口電子鐘1.Proc2msTask函數(shù)的核心語句塊如何實現(xiàn)每2ms執(zhí)行一次?Timer模塊的TIM2用于產(chǎn)生2ms標(biāo)志,TIM5用于產(chǎn)生1s標(biāo)志,Main模塊通過獲取和清除2ms、1s標(biāo)志,實現(xiàn)Proc2msTask函數(shù)中的核心語句塊每2ms執(zhí)行一次,Proc1SecTask函數(shù)中的核心語句塊每1s執(zhí)行一次。2.Proc1SecTask函數(shù)的核心語句塊如何實現(xiàn)每秒執(zhí)行一次?Timer模塊的TIM2用于產(chǎn)生2ms標(biāo)志,TIM5用于產(chǎn)生1s標(biāo)志,Main模塊通過獲取和清除2ms、1s標(biāo)志,實現(xiàn)Proc2msTask函數(shù)中的核心語句塊每2ms執(zhí)行一次,Proc1SecTask函數(shù)中的核心語句塊每1s執(zhí)行一次。3.PauseClock函數(shù)如何實現(xiàn)電子鐘的運(yùn)行和暫停?Main模塊調(diào)用RunClock模塊的PauseClock函數(shù)啟動時鐘運(yùn)行,通過SetTimeVal函數(shù)設(shè)置初始時間值;Proc2msTask函數(shù)調(diào)用RunClock模塊的RunClockPer2Ms函數(shù),實現(xiàn)RunClock模塊內(nèi)部靜態(tài)變量siHour/siMin/siSec的計數(shù)功能,進(jìn)而實現(xiàn)時鐘的運(yùn)行;時間顯示是由RunClock模塊的DispTime函數(shù)調(diào)用printf語句輸出實現(xiàn)的,Proc1SecTask函數(shù)每秒調(diào)用一次DispTime函數(shù)。4.RunClockPer2Ms函數(shù)為什么要每2ms執(zhí)行一次?RunClockPer2Ms函數(shù)的功能是以2ms為最小單位運(yùn)行時鐘系統(tǒng)第4章實驗3——GPIO與流水燈1.簡述GPIO都有哪些工作模式??梢酝ㄟ^GPIO寄存器將STM32的GPIO配置成8種模式,這8種模式又分為4種輸入模式和4種輸出模式。4種輸入模式分別為輸入浮空、輸入上拉、輸入下拉和模擬輸入,4種輸出模式分別為開漏輸出、推挽式輸出、推挽式復(fù)用功能和開漏復(fù)用功能。2.GPIO都有哪些寄存器?CRL和CRH的功能是什么?每個GPIO端口有7個寄存器,本實驗涉及的GPIO寄存器包括2個32位端口配置寄存器(GPIOxCRL,GPIOxCRH)、1個32位端口輸出數(shù)據(jù)寄存器(GPIOxODR)、1個32位端口位設(shè)置/清除寄存器(GPIOxBSRR)、1個32位端口位清除寄存器(GPIOxBRR)。CRL和CRH用于控制GPIO端口的輸入/輸出模式及輸出速度,CRL用于控制GPIO端口(A~G)低8位的輸入輸出模式及輸出速度,CRH用于控制GPIO端口(A~G)高8位的輸入輸出模式及輸出速度。3.計算GPIOE→BRR的絕對地址。0E40011400+0E0C4.GPIOInit函數(shù)的作用是什么?該函數(shù)具體操作了哪些寄存器?GPIOInit函數(shù)的功能是設(shè)定A、B、C、D、E、F、G端口的任一個引腳的輸入/輸出的配置信息,通過向GPIOx→CRL或GPIOx→CRH寫入?yún)?shù)來實現(xiàn),同時,該函數(shù)還可以按需要初始化STM32的I/O口狀態(tài),通過向GPIOx→BRR或GPIOx→BSRR寫入?yún)?shù)來實現(xiàn)。具體描述如表4-8所示。5.如何通過RCC→APB2ENR使能GPIOA端口時鐘,且其他模塊時鐘狀態(tài)不變?RCCAPB2PeriphClockCmd函數(shù)的功能是打開或關(guān)閉APB2上相應(yīng)外設(shè)的時鐘,通過向RCC→APB2ENR寫入?yún)?shù)來實現(xiàn)。6.如何通過固件庫函數(shù)使能GPIOD端口時鐘?GPIO固件庫函數(shù)包括GPIOInit、GPIOWriteBit和GPIOReadOutputDataBit,這3個函數(shù)在stm32f10xgpio.h文件中聲明,在stm32f10xgpio.c文件中實現(xiàn)。第5章實驗4——GPIO與獨立按鍵輸入1.GPIO的IDR的功能是什么?IDR是查看引腳電平狀態(tài)用的寄存器,ODR是引腳電平輸出的寄存器。2.計算GPIOC→IDR的絕對地址。0C0011400+0CC3.GPIOReadInputDataBit函數(shù)的作用是什么?該函數(shù)具體操作了哪些寄存器?GPIOReadInputDataBit函數(shù)的功能是讀取指定外設(shè)端口引腳的電平值,每次讀取一位,高電平為1,低電平為0,通過讀取GPIOx→IDR來實現(xiàn)。4.如何通過寄存器操作讀取PC4的電平?通過寄存器操作的方式,將PC4輸出設(shè)置為高電平,且GPIOC端口的其他引腳電平不變。temp=GPIOC->ODR;temp=(temp&0xFFFFFFEF)10x00000010;GPIOC->ODR=temp;5.如何通過固件庫操作讀取PC4的電平?(1)STM32核心板的LED1和LED2分別與STM32F103RCT6芯片的PC4和PC5相連接,因此需要通過RCCAPB2PeriphClockCmd函數(shù)使能GPIOC時鐘。該函數(shù)涉及APB2ENR的IOPCEN,IOPCEN用于使能GPIOC的時鐘,可參見圖4-13和表4-14。(2)通過GPIOInit函數(shù)將PC4和PC5配置為推挽輸出模式,并將兩個I/O的最大輸出速度配置為50MHz。該函數(shù)涉及GPIOxCRL、GPIOxBSRR和GPIOxBRR。GPIOxCRL用于配置輸入/輸出模式及I/O的最大輸出速度,可參見圖4-7、圖4-8、圖,4-11、圖4-12,以及表4-4、表4-6、表4-7。(3)通過GPIOWriteBit函數(shù)將PC4和PC5的默認(rèn)電平分別設(shè)置為高電平和低電平。該函數(shù)也涉及GPIOxBSRR和GPIOxBRR,通過GPIOxBSRR設(shè)置高電平,通過GPIOxBRR設(shè)置低電平。6.在函數(shù)內(nèi)部定義一個變量,加static與不加static關(guān)鍵字有什么區(qū)別?1、函數(shù)加上static,該函數(shù)就失去了全局可見性,只在該函數(shù)所在的文件作用域內(nèi)可見;2、在類的成員函數(shù)前面加上static標(biāo)識符,成員函數(shù)是屬于類的而非對象的。第6章實驗5——串口通信1.如何通過USARTCR1設(shè)置串口的奇偶校驗位?如何通過USARTCR1使能串口?向USART_CR1的TE寫入1,即可啟動數(shù)據(jù)發(fā)送,發(fā)送移位寄存器的數(shù)據(jù)會按照一幀數(shù)據(jù)格式(起始位+數(shù)據(jù)幀+可選的奇偶校驗位+停止位)通過TX引腳一位一位輸出,一幀數(shù)據(jù)的最后一位發(fā)送完成且TXE為1時,USART_SR的TC將由硬件置為1,表示數(shù)據(jù)傳輸完成,此時,如果USART_CR1的TCIE為1,則產(chǎn)生中斷。在發(fā)送過程中,除了發(fā)送完成(TC=1)可以產(chǎn)生中斷,發(fā)送寄存器為空(TXE=1)也可以產(chǎn)生中斷,即TDR中的數(shù)據(jù)被硬件轉(zhuǎn)移到發(fā)送移位寄存器時,TXE將被硬件置位,此時,如果USART_CR1的TXEE為1,則產(chǎn)生中斷。UART,EnableUARTTx函數(shù)用于使能串口發(fā)送static voidEnableUARTTx(void); //使能串口發(fā)送,在WriteUARTx中調(diào)用,每次發(fā)送數(shù)據(jù)之2.如何通過USARTCR2設(shè)置串口的停止位?STOP[1:0]用于設(shè)置停止位3.USARTDR包含兩個寄存器,分別是TDR和RDR,這兩個寄存器的作用分別是什么?一個給發(fā)送用(TDR),一個給接收用(RDR),因此該寄存器兼具讀和寫的功能。4.如果某一串口的波特率為9600,應(yīng)該向USARTBRR寫什么?略5.串口的一幀數(shù)據(jù)發(fā)送完成后,USARTSR哪個位會發(fā)生變化?1:RTS中斷使能,只有接收緩沖區(qū)內(nèi)有空余的空間時才請求下一個數(shù)據(jù)。當(dāng)前數(shù)據(jù)發(fā)送完成后,發(fā)送操作就需要暫停下來。如果可以接收數(shù)據(jù)了,將nRTS輸出置為有效(拉至低電平)。6.為什么可以通過printf輸出調(diào)試信息?完成了fputc函數(shù)的實現(xiàn)之后,還需要在Keil集成開發(fā)環(huán)境中,勾選OptionsforTarget→Target→UseMicroLIB,這樣就相當(dāng)于啟用了微庫(MicroLIB)。因此,我們不但要重寫fputc,還要啟用微庫,才能使用printf輸出調(diào)試信息。7.能否使用STM32的UART2輸出調(diào)試信息?如果可以,怎樣實現(xiàn)?STM32微控制器的集成開發(fā)環(huán)境,如Keil、IAR等也同樣支持標(biāo)準(zhǔn)庫函數(shù),本書基于Keil集成開發(fā)環(huán)境,"實驗1F103基準(zhǔn)工程"中已經(jīng)涉及printf,并且printf輸出的內(nèi)容通過UART1發(fā)送到計算機(jī)上的串口助手顯示。第7章實驗6——定時器1.如何通過TIMxCR1設(shè)置時鐘分頻系數(shù)、計數(shù)器計數(shù)方向?DIR用于設(shè)置計數(shù)器計數(shù)方向,CMS[1:0]用于選擇中央對齊模式,CKD[1:0]用于設(shè)置時鐘分頻系數(shù)2.如何通過TIMxCR1使能定時器?要通過TIMxCR1寄存器使能定時器,你可以按照以下步驟進(jìn)行操作:1.首先,找到TIMx_CR1寄存器的地址,其中TIMx表示你想要使用的具體定時器,例如TIM1、TIM2等等。通常,這個地址是時器的基地址加上相應(yīng)的偏移量。2.通過寫操作,將要設(shè)置的位設(shè)置為1以啟用定時器。根據(jù)TIMx_CR1寄存器的位配置,請確保只修改使能定時器的位,而不影響其他位的值。你可以使用位操作方法,例如按位或操作,來設(shè)置相應(yīng)的位。3.等待定時器使能。在你設(shè)置TIMx_CR1寄存器后,你需要等待一定時間,以確保定時器完全啟動。3.如何通過TIMxDIER使能或除能更新中斷?如果TIMxDIER的CCxIE為1,則產(chǎn)生CCxI中斷4.如果某通用計數(shù)器設(shè)置為遞增計數(shù),當(dāng)產(chǎn)生溢出時,TIMxSR哪個位會發(fā)生變化?當(dāng)TIM2遞增計數(shù)產(chǎn)生溢出時,UIF由硬件置為1,并產(chǎn)生更新中斷,執(zhí)行TIM2IRQHandler函數(shù)。會執(zhí)行TIM2IRQHandler函數(shù)。5.如何通過TIMxSR讀取更新中斷標(biāo)志?當(dāng)產(chǎn)生更新事件時該位由硬件置為1,由軟件清零。0:無更新事件產(chǎn)生;1:更新中斷等待響應(yīng)。當(dāng)寄存器被更新時該位由硬件置為1:若TIMxCR1的UDIS=0、URS=0,當(dāng)TIMxEGR的UG=1時產(chǎn)生更新事件(軟件對計數(shù)器CNT重新初始化);若TIMxCR1的UDIS=0、URS=0,當(dāng)計數(shù)器CNT被觸發(fā)事件重新初始化時產(chǎn)生更新事件6.TIMxCNT、TIMxPSC和TIMxARR的作用分別是什么?略第8章實驗7——SysTick1.簡述DelayNus函數(shù)產(chǎn)生延時的原理。微秒級的延時與毫秒級的延時實現(xiàn)不同,微秒級的延時是通過一個while循環(huán)語句內(nèi)嵌一個for循環(huán)語句和一個siTimCnt變量遞減語句實現(xiàn)的,for循環(huán)語句和sTimCnt變量遞減語句執(zhí)行時間大約是1us。參數(shù)nus一開始就賦值給sTimCnt變量,然后在while表達(dá)式中判斷siTimCnt變量是否為0,如果不為0,則執(zhí)行for循環(huán)語句和siTimCnt變量遞減語句;否則,退出DelayNus函數(shù)。for循環(huán)語句執(zhí)行完之后,sTimCnt變量執(zhí)行一次減1操作,接著繼續(xù)判斷siTimCnt是否為0。如果nus為5,則可以實現(xiàn)5μs延時。2.DelayNus函數(shù)的時間計算精度受什么因素影響?DelayNus函數(shù)的時間計算精度受以下幾個因素影響:1.系統(tǒng)時間精度:計算機(jī)操作系統(tǒng)的時間精度對于計算時間延遲是很關(guān)鍵的。如果系統(tǒng)時間的精度較低,比如只精確到毫秒級別,那么計算時間延遲也將受到限制,無法達(dá)到亞毫秒級的精度。2.硬件性能:計算時間延遲的精度還取決于計算機(jī)硬件的性能。比如,處理器的時鐘頻率越高,單個指令執(zhí)行的時間就越短,計算延遲的精度也就越高。3.代碼實現(xiàn)和算法復(fù)雜度:程序代碼的實現(xiàn)和算法的復(fù)雜度也會對計算時間延遲的精度產(chǎn)生影響。如果算法實現(xiàn)過于復(fù)雜,或者存在大量的循環(huán)和條件語句,那么計算時間延遲的精度可能會降低。綜上所述,DelayNus函數(shù)的時間計算精度受系統(tǒng)時間精度、硬件性能以及代碼實現(xiàn)和算法復(fù)雜度等因素的影響。3.STM32芯片中的通用定時器與SysTick定時器有什么區(qū)別?STM32芯片中的通用定時器和SysTick定時器是兩種不同類型的定時器。通用定時器是STM32芯片內(nèi)置的多功能定時器,可以配置為不同的工作模式,如定時器、輸入捕獲或輸出比較等。可以通過編程設(shè)置定時器的時鐘源、預(yù)分頻系數(shù)和計數(shù)周期,以實現(xiàn)不同的定時功能。通用定時器具有更高的靈活性和功能,適用于更復(fù)雜的定時任務(wù)。SysTick定時器是一種簡單的定時器,專門為系統(tǒng)計時和任務(wù)調(diào)度而設(shè)計。它是一個基于內(nèi)核的定時器,在STM32芯片上有固定的時鐘頻率,通常為CPU時鐘頻率的1/8或1/16。SysTick定時器具有內(nèi)置的計數(shù)器和自動重載寄存器,并且可以用于生成中斷,以實現(xiàn)周期性的系統(tǒng)定時??偟膩碚f,通用定時器適用于更復(fù)雜的定時需求,而SysTick定時器則是用于簡單的系統(tǒng)計時和任務(wù)調(diào)度。選擇使用哪種定時器取決于具體的需求和應(yīng)用場景4.如何通過寄存器將SysTick時鐘頻率由72MHz更改為9MHz?要將SysTick時鐘頻率從72MHz更改為9MHz,需要針對系統(tǒng)時鐘進(jìn)行相應(yīng)的配置更改。以下是一種可能的方法:1.找到系統(tǒng)時鐘的源,通常是從主時鐘(主OSC)產(chǎn)生的。假設(shè)主OSC頻率為72MHz。2.定義一個要達(dá)到的目標(biāo)頻率,即9MHz。3.計算需要的分頻因子。將主OSC頻率除以目標(biāo)頻率,即:72MHz/9MHz=8。4.在芯片的寄存器中找到與SysTick相關(guān)的寄存器。通常,SysTick控制寄存器(SysTick_CTRL)和SysTick加載寄存器(SysTick_LOAD)是需要配置的。5.將SysTick控制寄存器的時鐘源(CLKSOURCE)位設(shè)置為0,以使用外部時鐘源(系統(tǒng)時鐘)。6.將SysTick加載寄存器的值設(shè)置為分頻因子減1。即如果分頻因子為8,則將加載寄存器設(shè)置為7。第9章實驗8——RCC1.什么是有源晶振,什么是無源晶振?1.無源晶振是有2個引腳的無極性元件,需要借助于時鐘電路才能產(chǎn)生振蕩信號,自身無法振蕩起來2.有源晶振有4只引腳,是一個完整的振蕩器,其中除了石英晶體外,還有晶體管和阻容元件主要看你應(yīng)用到的電路,如果有時鐘電路,就用無源,否則就用有源無源晶體需要用DSP片內(nèi)的振蕩器,無源晶體沒有電壓的問題,信號電平是可變的,也就是說是根據(jù)起振電路來決定的,同樣的晶體可以適用于多種電壓,可用于多種不同時鐘信號電壓要求的DSP,而且價格通常也較低,因此對于一般的應(yīng)用如果條件許可建議用晶體,這尤其適合于產(chǎn)品線豐富批量大的生產(chǎn)者。有源晶振不需要DSP的內(nèi)部振蕩器,信號質(zhì)量好,比較穩(wěn)定,而且連接方式相對簡單(主要是做好電源濾波,通常使用一個電容和電感構(gòu)成的PI型濾波網(wǎng)絡(luò),輸出端用一個小阻值的電阻過濾信號即可),不需要復(fù)雜的配置。電路有個點標(biāo)記的為1腳,按逆時針(管腳向下)分別為2、3、4。有源晶振通常的用法:一腳懸空,二腳接地,三腳接輸出,四腳接電壓。相對于無源晶體,有源晶振的缺陷是其信號電平是固定的,需要選擇好合適輸出電平,靈活性較差,而且價格高。2.簡述RCC模塊中的各個時鐘源及其配置方法。RCC模塊中的主要時鐘源包括:1.HSI(High-SpeedInternal)時鐘:內(nèi)部高速時鐘源,通常為16MHz,可通過相關(guān)寄存器配置。2.HSE(High-SpeedExternal)時鐘:外部高速時鐘源,可以通過從晶振或外部時鐘源引入。通過設(shè)置寄存器來配置HSE的頻率范圍和穩(wěn)定性參數(shù)3.PLL(Phase-LockedLoop)時鐘:通過將HSI或HSE時鐘源與PLL倍頻器相連接,產(chǎn)生更高頻率的時鐘。PLL可以根據(jù)需要配置成不同的倍頻倍數(shù),用于系統(tǒng)的主時鐘。配置這些時鐘源的方法如下:1.配置HSI時鐘:通過對RCC_CR寄存器中的HSION位進(jìn)行設(shè)置或清除,來使能或禁用HSI時鐘。通過RCC_CFGR寄存器的相關(guān)位來配置HSI時鐘的分頻系數(shù)。2.配置HSE時鐘:通過對RCC_CR寄存器中的HSEON位進(jìn)行設(shè)置或清除,來使能或禁用HSE時鐘。通過RCC_CR寄存器的HSEBYP位來選擇是否繞過HSE時鐘。通過RCC_CFGR寄存器的相關(guān)位來配置HSE時鐘的分頻系數(shù)。3.配置PLL時鐘:通過對RCC_PLLCFGR寄存器中的相關(guān)位進(jìn)行設(shè)置,來配置PLL的輸入時鐘源(HSI或HSE)以及PLL的倍頻系數(shù)。通過RCC_CR寄存器中的PLLON位來使能或禁用PLL時鐘。在配置完時鐘源后,還需要對系統(tǒng)時鐘進(jìn)行配置,將所需的時鐘源作為系統(tǒng)的主時鐘:1.配置系統(tǒng)時鐘源:通過RCC_CFGR寄存器的SW位來選擇所需的時鐘源,可以選擇HSI、HSE或PLL作為系統(tǒng)主時鐘。2.配置AHB、APB1和APB2的分頻系數(shù):通過RCC_CFGR寄存器的相關(guān)位來配置這些總線的分頻系數(shù),以使得它們能夠按照所需的頻率工作。3.簡述RCCDeInit函數(shù)功能。RCCDeInit函數(shù)的功能是將外設(shè)RCC寄存器重設(shè)為默認(rèn)值,通過向RCC→CR、RCC→CFGR和RCC→CIR寫入?yún)?shù)來實現(xiàn)。4.在RCCGetSYSCLKSource函數(shù)中通過直接操作寄存器完成相同的功能。RCCGetSYSCLKSource函數(shù)的功能是返回用作系統(tǒng)時鐘的時鐘源,通過讀取RCC→CFGR來實現(xiàn)。5.本實驗為什么要通過FLASHSetLatency函數(shù)將時延設(shè)置為兩個等待狀態(tài)?通過FLASHSetLatency函數(shù)將時延設(shè)置為兩個等待狀態(tài)。該函數(shù)涉及FLASHACR的LATENCY[2:0],系統(tǒng)時鐘SYSCLK時鐘頻率在0~24MHz時,LATENCY[2:0]取值為000(零等待狀態(tài));時鐘頻率在24~48MHz時,取值為001(一個等待狀態(tài));時鐘頻率在48~72MHz時,取值為010(兩個等待狀態(tài)),可參見圖9-5和表9-20。第10章實驗9——外部中斷1.簡述什么是外部輸入中斷。外部中斷一般是由計算機(jī)外設(shè)發(fā)出的中斷請指求,如:鍵盤中斷、打印機(jī)中斷、定時器中斷等。外部中斷是可以屏蔽的中斷,也就是說,利用中斷控制器可以屏蔽這些外部設(shè)備的中斷請求。2.簡述外部中斷服務(wù)函數(shù)中斷標(biāo)志位的作用,說明應(yīng)該在什么時候清除中斷標(biāo)志位,如果不清除中斷標(biāo)志位會有什么后果。外部中斷服務(wù)函數(shù)中斷標(biāo)志位用于標(biāo)記是否發(fā)生了中斷事件,例如硬件中斷請求或軟件中斷請求。當(dāng)中斷觸發(fā)時,中斷標(biāo)志位會被置位,告知處理器發(fā)生了中斷事件。應(yīng)該在中斷服務(wù)函數(shù)中清除中斷標(biāo)志位。清除中斷標(biāo)志位的目的是讓處理器能夠接受新的中斷請求。如果不清除中斷標(biāo)志位,處理器會持續(xù)地處理之前觸發(fā)的中斷事件,無法接受新的中斷請求。如果不清除中斷標(biāo)志位,會導(dǎo)致以下后果:1.處理器無法響應(yīng)新的中斷請求,導(dǎo)致系統(tǒng)無法及時處理其他重要事件。2.在中斷服務(wù)函數(shù)中,如果發(fā)生了其他中斷,可能會引發(fā)嵌套中斷的問題,使系統(tǒng)陷入混亂狀態(tài)。3.若中標(biāo)志位未清除且發(fā)生了循環(huán)中斷,則可能導(dǎo)致系統(tǒng)無法正常運(yùn)行,甚至崩潰。因此,為了保證系統(tǒng)的穩(wěn)定運(yùn)行和處理器的響應(yīng)能力,應(yīng)及時清除中斷標(biāo)志位。3.在本實驗中,假設(shè)有一個全局int型變量giCnt,該變量在TIM2中斷服務(wù)函數(shù)中執(zhí)行乘9操作,而在KEY3按鍵按下的中斷服務(wù)函數(shù)中對giCnt執(zhí)行加5操作。若某一時刻兩個中斷恰巧同時發(fā)生,且此時全局變量giCnt的值為20,則兩個中斷都結(jié)束后,全局變量giCnt的值應(yīng)該是多少?略第11章實驗10——0LED顯示1.簡述OLED顯示原理。OLED顯示技術(shù)具有自發(fā)光的特性,采用非常薄的有機(jī)材料涂層和玻璃基板,當(dāng)有電流通過時,有機(jī)材料就會發(fā)光。OLED顯示屏幕可視角度大,節(jié)省電能。另外,LCD需要背光源,而OLED不需要,因此,同樣的顯示,OLED效果要比LCD更好一些。2.簡述SSD1306芯片工作原理。SSD1306是一種常見的單色OLED(有機(jī)發(fā)光二極管)顯示驅(qū)動芯片,它用于驅(qū)動OLED顯示屏的像素。以下是SSD1306芯片的工作原理簡述:1.內(nèi)部RAM:SSD1306芯片內(nèi)部包一塊RAM,用于存儲顯示內(nèi)容的像素數(shù)據(jù)。這塊RAM的尺寸與屏幕的分辨率相關(guān),可以存儲每個像素的亮度信息。2.控制信號:SSD1306通過I2C或SPI接口與主控板連接,接收來自主控板的控制信號。3.顯示緩存:主控板需要將要顯示的內(nèi)容寫入SSD1306的顯示緩存中,通過向SSD1306的RAM寫入對應(yīng)的像素數(shù)據(jù)進(jìn)行更新。4.顯示模式:SSD1306支持多種顯示模式,例如整個屏幕點亮、局部區(qū)域點亮、反色顯示等。主控板可以通過發(fā)送命令來設(shè)置不同的顯示模式。5.刷新顯示:一旦主控板完成了對顯示緩存的更新,它會向SSD1306芯片發(fā)送命令來刷新顯示。SSD1306會將顯示緩存中的像素數(shù)據(jù)傳輸?shù)絆LED屏幕上??偟膩碚f,SSD1306芯片負(fù)責(zé)接收主控板發(fā)來的控制信號,并將像素數(shù)據(jù)存儲在內(nèi)部RAM中,最后將其傳輸?shù)絆LED屏幕上以實現(xiàn)圖像的顯示。3.簡述SSD1306芯片控制OLED顯示原理。首先,配置OLED相關(guān)的GPIO,其次,將OLEDRES拉低10ms之后再將OLEDRES拉高,對SSD1306進(jìn)行復(fù)位,接著,關(guān)閉顯示,配置SSD1306,配置完SSD1306之后再開啟顯示,并執(zhí)行清屏操作,然后寫STM32上的GRAM,最后,將STM32上的GRAM更新到SSD1306上,這樣就完成了OLED的顯示。4.基于F103微控制器的OLED驅(qū)動的API函數(shù)包括InitOLED、OLEDDisplayOn、OLEDDisplayOff、OLEDRefreshGRAM、OLEDClear、OLEDShowNum、OLEDShowChar、OLEDShowString,簡述這些函數(shù)的功能?;贔103微控制器的OLED驅(qū)動的API函數(shù)包括:1.InitOLED:初始化OLED屏幕,設(shè)置通信接口和相關(guān)參數(shù)。2.OLEDDisplayOn:將OLED屏幕打開,使其顯示內(nèi)容。3.OLEDDisplayOff:將OLED屏幕關(guān)閉,停止顯示內(nèi)容。4.OLEDRefreshGRAM:刷新OLED屏幕的顯存,將新的圖像數(shù)據(jù)寫入到屏幕。5.OLEDClear:清除OLED屏幕上的所有內(nèi)容,將屏幕恢復(fù)為初始狀態(tài)。6.OLEDShowNum:顯示一個數(shù)字到OLED屏幕,可以指定顯示的位置和字體大小。7.OLEDShowChar:顯示一個字符到OLED屏幕,可以指定顯示的位置和字體大小。8.OLEDShowString:顯示一個字符串到OLED屏幕,可以指定顯示的位置和字體大小。第12章實驗11——獨立看門狗1.簡述獨立看門狗的作用??撮T狗(WDT)是一個定時器??撮T狗是用來防止萬一單片機(jī)程序出錯造成重大損失的。防錯的原理很簡單,它在硬件上就是一個定時器,當(dāng)它溢出的時候就會讓單片機(jī)強(qiáng)制復(fù)位使程序重新開始執(zhí)行。正常的情況下是不能讓它溢出的,所以在程序上每隔一段時間要給他置一次值(俗稱喂狗),只要程序中正常給它喂他就不會溢出。一旦程序跑飛了,有干擾或者進(jìn)入死循環(huán)之類的情況時,不能正常執(zhí)行程序了,那么就永遠(yuǎn)執(zhí)行不到喂狗的指令了,但此時定時器是硬件控制的,仍然會走,所以溢出了,單片機(jī)就復(fù)位了。一般安全性要求比較高的,系統(tǒng)跑飛了會造成重大事故的都會加一個“狗”保安全。通常,看門狗的溢出時間越短越靈敏,跑飛之后復(fù)位的時間越短,也就越安全,但是,喂狗的操作也要更頻繁。2.簡述延時函數(shù)如何影響?yīng)毩⒖撮T狗的喂狗。延時函數(shù)可以對獨立看門狗的喂狗功能產(chǎn)生影響。獨立看門狗通常是一種硬件設(shè)備,用于監(jiān)視系統(tǒng)的正常運(yùn)行,并在系統(tǒng)出現(xiàn)故障或停止響應(yīng)時采取適當(dāng)?shù)拇胧?,例如重新啟動系統(tǒng)。獨立延時函數(shù)在獨立看門狗(watchdog)的喂狗過程中起到重要的作用。獨立看門狗是一種硬件計時器,用于檢測系統(tǒng)是否處于正常運(yùn)行狀態(tài)。為了避免系統(tǒng)崩潰或死鎖,我們需要在特定時間間看門狗的喂狗機(jī)制是通過定期向獨立看門狗發(fā)送喂狗信號來避免系統(tǒng)進(jìn)入無響應(yīng)狀態(tài)。如果系統(tǒng)正常運(yùn)行,延時函數(shù)的執(zhí)行時間應(yīng)小于獨立看門狗的喂狗時間間隔。也就是說,在一定的時間內(nèi),延時函數(shù)需要執(zhí)行完畢,并且喂狗信號被正確發(fā)送,以保持獨立看門狗的活動狀態(tài)。否則,如果延時函數(shù)的執(zhí)行時間超過了喂狗時間間隔,獨立看門狗會認(rèn)為系統(tǒng)發(fā)生故障,并采取相應(yīng)的措施,例如重啟系統(tǒng)。因此,隔內(nèi)喂狗,也就是定期重置獨立看門狗計時器。延時函數(shù)的作用是在一段指定的時間內(nèi)暫停程序的執(zhí)行。在喂狗過程中,延時函數(shù)用于確保系統(tǒng)在規(guī)定的時間范圍內(nèi)完成任務(wù)并執(zhí)行重置獨立看門狗的操作。如果延時時間過長,可能會導(dǎo)致獨立看門狗認(rèn)定系統(tǒng)出現(xiàn)故障,進(jìn)而執(zhí)行相應(yīng)的保護(hù)機(jī)制。而如果延時時間過短,則可能無法完成系統(tǒng)中的重要任務(wù),也會導(dǎo)致獨立看門狗觸發(fā)報警機(jī)制。因此,在編寫程序時,我們需要根據(jù)系統(tǒng)的要求和任務(wù)的復(fù)雜程度,合理設(shè)定延時函數(shù)的時間,以確保獨立看門狗能正常工作并提供系統(tǒng)保護(hù)。這樣一來,獨立看門狗可以持續(xù)監(jiān)控系統(tǒng)的運(yùn)行狀態(tài),一旦檢測編寫延時函數(shù)時需要考慮獨立看門狗的喂狗時間間隔,并確保延時函數(shù)的執(zhí)行時間不會超過該時間間隔,以保證系統(tǒng)正常工作并避免不必要的重啟。這可以通過合理設(shè)置延時函數(shù)的參數(shù)和調(diào)整代碼邏輯來實現(xiàn)。故障或異常,它將采取相應(yīng)的措施,如重啟系統(tǒng)或觸發(fā)報警,以確保系統(tǒng)的穩(wěn)定性和可靠性。3.嘗試通過寄存器實現(xiàn)獨立看門狗的配置。1.找到相關(guān)寄存器:首先,查閱芯片手冊,找到與獨立看門狗相關(guān)的寄存器。通常包括看門狗控制寄存器(IWDG_CR)和看門狗預(yù)分頻器寄存器(IWDG_PR)。2.配置預(yù)分頻器:獨立看門狗的預(yù)分頻器用于設(shè)置看門狗的溢出計數(shù)時間。根據(jù)你的需求,配置預(yù)分頻器寄存器(IWDG_PR)以設(shè)置適當(dāng)?shù)姆诸l系數(shù)。3.配置重裝載寄存器:重裝載寄存器(IWDG_RLR)用于設(shè)置看門狗的重裝載值,即看門狗的計數(shù)器在達(dá)到此值之前應(yīng)被喂狗,否則會發(fā)生復(fù)位。通過寫入適當(dāng)?shù)闹档街匮b載寄存器,以根據(jù)你的需求設(shè)置看門狗的喂狗時間。4.喂狗:在執(zhí)行主要任務(wù)的過程中,定時地喂狗。通過定期寫入固定值到看門狗關(guān)鍵字寄存器(IWDG_KR)的特定序列,實現(xiàn)喂狗操作。請確保在配置IWDG寄存器之前,先初始化并使能相關(guān)的時鐘,以及正確設(shè)置芯片的訪問權(quán)限。對于具體的寄存器地址和位字段的值,請參考芯片手冊。第13章實驗12——讀/寫內(nèi)部Flash1.微控制器的內(nèi)部Flash和內(nèi)部SRAM有什么區(qū)別?1.性質(zhì)不同F(xiàn)lash是由macromedia公司推出的交互式矢量圖和Web動畫的標(biāo)準(zhǔn),由Adobe公司收購。SRAM是隨機(jī)存取存儲器的一種。2.中文名不同F(xiàn)lash中文名是固態(tài)存儲器與動畫編輯器,SRAM中文名是靜態(tài)隨機(jī)存取存儲器。3.用途不同F(xiàn)lash是一種動畫創(chuàng)作與應(yīng)用程序開發(fā)于一身的創(chuàng)作軟件,AdobeFlashProfessionalCC為創(chuàng)建數(shù)字動畫、交互式Web站點、桌面應(yīng)用程序以及手機(jī)應(yīng)用程序開發(fā)提供了功能全面的創(chuàng)作和編輯環(huán)境。SRAM主要用于二級高速緩存(Level2Cache)。它利用晶體管來存儲數(shù)據(jù)。2.STM32采用的是大端存儲模式還是小端存儲模式?STM32采用的是小端模式,將較高的字節(jié)存放在較高的地址,較低的字節(jié)存放在較低的地址,簡單記憶為高放高,低放低為小水,而另外-種存放方式為人端模式,即高放低,低放高為大]。3.程序是存放在內(nèi)部Flash還是內(nèi)部SRAM中?程序可以存放在微控制器芯片的內(nèi)部Flash或內(nèi)部SRAM中,具體取決于程序的大小和執(zhí)行的需求。內(nèi)部Flash是一種非易失性存儲器,用于存儲程序代碼和常量數(shù)據(jù)。通常,較大的程序或需要長期保存的數(shù)據(jù)會存儲在內(nèi)部Flash中。Flash存儲器的數(shù)據(jù)被擦除和編程,因此可以多次寫入。內(nèi)部SRAM是一種易失性存儲器,用于存儲程序運(yùn)行時使用的臨時變量和堆棧。SRAM速度快,但斷電后,其中的數(shù)據(jù)將被清除。通常,較小臨時數(shù)據(jù)和頻繁訪問的變量會存儲在內(nèi)部SRAM中。選擇存放位置要根據(jù)需要進(jìn)行評估。如果程序較大并且需要長期保存,通常會選擇內(nèi)部Flash。如果程序需要頻繁地讀寫臨時數(shù)據(jù)或變量,并且速度很重要,那么內(nèi)部SRAM可能更合適。有些情況下可能會同時使用兩者,將程序代碼存放在Flash中,而將需要頻繁讀寫的數(shù)據(jù)存放在SRAM中。4.使用寫內(nèi)部Flash函數(shù)修改內(nèi)存地址為0x08000000的內(nèi)容會有什么后果?說明并解釋原因。更改內(nèi)存地址為0x08000000的內(nèi)容可能會導(dǎo)致嚴(yán)重的問題,并且可能會導(dǎo)致系統(tǒng)崩潰或不可預(yù)測的行為。這是因為0x08000000是專門用于存儲編譯后的程序代碼的區(qū)域,也被稱為Flash存儲器。Flash存儲器中存儲了程序的指令。這些指令是由開發(fā)者編寫的代碼,并在編譯后被存儲在Flash存儲器中。當(dāng)系統(tǒng)啟動時,處理器會從Flash存儲器中讀取指令,并按照指令的順序執(zhí)行相應(yīng)的操作。如果你直接修改了0x08000000地址處的內(nèi)容,會導(dǎo)致原本存儲在Flash中的指令被篡改或覆蓋。這將導(dǎo)致處理器無法正確獲取或執(zhí)行原始指令,從而導(dǎo)致系統(tǒng)運(yùn)行異?;虮罎?。此外,F(xiàn)lash存儲器通常具有特殊的訪問權(quán)限和保護(hù)機(jī)制,以防止未經(jīng)授權(quán)的修改。如果嘗試直接修改Flash存儲器的內(nèi)容,系統(tǒng)可能會拒絕訪問或觸發(fā)保護(hù)機(jī)制,從而導(dǎo)致修改操作失敗。5.簡述Flash.c的內(nèi)部靜態(tài)函數(shù)STM32FlashWriteWord進(jìn)行內(nèi)部Flash寫操作的流程。Flash.c中的內(nèi)部靜態(tài)函數(shù)STM32FlashWriteWord是用于進(jìn)行內(nèi)部Flash寫操作的函數(shù)。下面是其大致流程:1.首先,函數(shù)會調(diào)用內(nèi)部靜態(tài)函數(shù)STM32FlashUnlock()對Flash解鎖,即解除Flash的寫保護(hù)。2.然后,函數(shù)會調(diào)用內(nèi)部靜態(tài)函數(shù)STM32FlashClearStatusFlags()來清除Flash的狀態(tài)標(biāo)志。3.接下來,函數(shù)會調(diào)用內(nèi)部靜態(tài)函數(shù)STM32FlashSetProgramming()來設(shè)置Flash編程模式。4.然后,函數(shù)會將待寫入的數(shù)據(jù)轉(zhuǎn)換為字大小,因為Flash只能按字(32位)進(jìn)行寫入。5.函數(shù)會利用STM32的內(nèi)部函數(shù)HAL_FLASH_Program()來將轉(zhuǎn)換后的數(shù)據(jù)寫入到Flash的指定地址。6.最后,函數(shù)會調(diào)用內(nèi)部靜態(tài)函數(shù)STM32FlashLock()來鎖定Flash,重新啟用Flash的寫保護(hù)。第14章實驗13——PWM輸出1.在SetPWM函數(shù)中通過直接操作寄存器完成相同的功能。當(dāng)我們在編寫程序時,可以使用特定的函數(shù)來設(shè)置PWM(脈沖寬度調(diào)制)輸出。這些函數(shù)通常由硬件廠商提供,并通過操作特定的寄存器來實現(xiàn)。如果要通過直接操作寄存器實現(xiàn)相同的功能,首先需要了解在一些嵌入式系統(tǒng)開發(fā)中,可以通過直接操作寄存器來完成某些功能,包括設(shè)置PWM(脈沖寬度調(diào)制)的功能。這種方法一般需要了解硬件的寄存器映射及其用法。具體而言,在一些芯片或微控你使用的具體硬件平臺和寄存器的映射方式。2.通用定時器有哪些計數(shù)模式?可以通過哪些寄存器配置這些計數(shù)模式?通用定時器有四種計數(shù)模式:A、停止/保持吧、模式(TxCON.TMODE1~TMODE0=00)B、連續(xù)增計數(shù)模式(TxCON.TMODE1~TMODE0=01)C、定向增/減計數(shù)模式(有外部引腳決定,xCON.TMODE1~TMODE0=11D、連續(xù)增減計數(shù)模式(TxCON.TMODE1~TMODE0=10)通過定時器控制寄存器TxCON的12~11位決定,3.根據(jù)本實驗中的配置參數(shù),計算PWM輸出實驗輸出方波的周期,與示波器中測量的周期進(jìn)行對比。根據(jù)您提供的信息,我們可以使用以下配置參數(shù)計算PWM輸出方波的周期:1.確定輸入信號的周期(單位:秒)。2.計算PWM的占空比(運(yùn)行時間與周期的比值)。3.使用PWM的占空比乘以輸入信號的周期,計算PWM輸出方波的周期。例如,假設(shè)輸入信號的周期為0.1秒,PWM的占空比為50%,則計算PWM輸出方波的周期:PWM輸出方波的周期=輸入信號周期×PWM的占空比=0.1秒×0.5=0.05秒4.STM32F103RCT6芯片還有哪些引腳可以用作PWM輸出?STM32F103RCT6芯片具有多個引腳可以用作PWM輸出。以下是一些常用的引腳:1.PA0-PA7:GPIOA的引腳0到7可以用作PWM輸出。2.PB0-PB7:GPIOB的引腳0到7可以用作PWM輸出3.PC0-PC7:GPIOC的引腳0到7可以用作PWM輸出。4.PD12-PD15:GPIOD的引腳12到15可以用作PWM輸出。5.PE5-PE15:GPIOE的引腳5到15可以用作PWM輸出。這只是一些常見的引腳,實際上,STM32F103芯片有多個引腳可以用作PWM輸出。第15章實驗14——輸入捕獲1.本實驗如何通過設(shè)置下降沿和上升沿捕獲,計算按鍵按下時長?當(dāng)siCaptureSts的bit6為1,表示前一次已經(jīng)捕獲到下降沿,那么這次就表示捕獲到上升沿,因此,將siCaptureSts的bit7置為1,同時,通過TIMGetCapture1函數(shù)讀取TIM5CCR1的值,并將該值賦給siCaptureVal。最后,再通過TIMOC1PolarityConfig函數(shù)將TIM5的CH1設(shè)置為下降沿觸發(fā),為下一次捕獲KEY3按下做準(zhǔn)備。否則,如果siCaptureSts的bit6為0,表示前一次未捕獲到下降沿,那么這次就是第一次捕獲到下降沿,因此,將siCaptureSts和siCaptureVal均清零,并通過TIMSetCounter函數(shù)將TIM5的計數(shù)器清零,同時,將siCaptureSts的bit6置為1,標(biāo)記已經(jīng)捕獲到了下降沿。最后,再通過TIMOC1PolarityConfig函數(shù)將TIM5的CH1設(shè)置為上升沿觸發(fā),為下一次捕獲KEY3松開做準(zhǔn)備。2.計算本實驗的低電平最大捕獲時長。略3.在TIMGetCapture1函數(shù)中通過直接操作寄存器完成相同的功能。在使用函數(shù)TIM_GetCapture1時,通過直接操作寄存器完成相同的功能是可能的。當(dāng)直接操作寄存器時,你需要了解寄存器的地址和相關(guān)的位域(bitfield)信息。這個過程可能會因硬件平臺和編程環(huán)境的不同而有所差異。首先,你需要查閱芯片廠商提供的文檔,以便了解到與TIM_GetCapture1函數(shù)相對應(yīng)的寄存器是哪個,以及如何設(shè)置和讀取其中的值??赡艿馁Y源包括芯片的參考手冊、數(shù)據(jù)手冊或編程手冊。一旦你了解到了寄存器的地址和需要操作的位域信息,你可以使用合適的寄存器訪問方法來讀取或?qū)懭雽?yīng)的寄存器。這通常包括以下幾個步驟:1.確定寄存器的地址。寄存器地址通常是一個十六進(jìn)制值,可以通過參考文檔獲得。2.寫入或讀取寄存器的值。你可以使用編程環(huán)境提供的相應(yīng)的寄存器操作函數(shù)或者直接訪問內(nèi)存地址的方式來實現(xiàn)。3.對寄存器值進(jìn)行位操作。根據(jù),你可以設(shè)置或清除特定的位,或者以其他方式修改寄存器的值。4.如何通過TIMITConfig函數(shù)使能TIM5的更新中斷和捕獲1中斷?這兩個中斷與TIM5IRQHandler函數(shù)之間有什么關(guān)系?要通過TIMITConfig函數(shù)使能TIM5的更新中斷和捕獲1中斷,可以使用以下代碼:```TIM_ITConfig(TIM5,TIM_IT_Update|TIM_IT_CC1,ENABLE);```這將使能TIM5的更新中斷和捕獲1中斷。TIM_IT_Update表示更新中斷,TIM_IT_CC1表示捕獲1中斷。第一個參數(shù)TIM5表示要配置的定時器。關(guān)于TIM5IRQHandler函數(shù)和這兩個中斷之間的關(guān)系,IRQHandler函數(shù)是用來處理中斷的回調(diào)函數(shù)。當(dāng)發(fā)生更新中斷或者捕獲1中斷時,系統(tǒng)會自動調(diào)TIM5IRQHandler函數(shù)進(jìn)行處理。你需要在TIM5IRQHandler函數(shù)中編寫相應(yīng)的中斷處理代碼,以實現(xiàn)你需要的功能。也就是說,當(dāng)發(fā)生更新中斷時,TIM5IRQHandler函數(shù)會被調(diào)用來處理更新中斷相關(guān)的操作;當(dāng)發(fā)生捕獲1中斷時,TIM5IRQHandler函數(shù)會被調(diào)用來處理捕獲1中斷相關(guān)的操作。第16章實驗15——DAC1.簡述本實驗中DAC的工作原理。DAC(數(shù)字模擬轉(zhuǎn)換器)是一種電子設(shè)備,用于將數(shù)字信號轉(zhuǎn)換為模擬信號。它在許多應(yīng)用中起到重要的作用,包括音頻設(shè)備、通信系統(tǒng)和控制系統(tǒng)等。DAC的工作原理如下:1.量化:在這一步中,DAC使用一個參考電壓來測量抽樣和保持的電壓,并將其轉(zhuǎn)換為與輸入數(shù)字表示相對應(yīng)的模擬信號。此過程可以通過幾種不同的方法實現(xiàn)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論