版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
[20]。所以選擇了方案二。采用了STM32F103C8T6單片機。該系列產(chǎn)品基于超低功耗的ARMCortex-M0處理器內(nèi)核,整合增強的技術(shù)和功能,瞄準(zhǔn)超低成本預(yù)算的應(yīng)用。該系列微控制器縮短了采用8位和16位微控制器的設(shè)備與采用32位微控制器的設(shè)備之間的性能差距,能夠在經(jīng)濟型用戶終端產(chǎn)品上實現(xiàn)先進且復(fù)雜的功能。STM32F103C8T6是一款全系列省電方案的設(shè)計和實現(xiàn)。包括12位模數(shù)轉(zhuǎn)換器、定時器、PWM定時器、標(biāo)準(zhǔn)和高級通訊接口。其引腳圖及實物圖如下。圖2-2STM32F103C8T6引腳圖圖2-3STM32F103C8T6實物圖第3章系統(tǒng)硬件部分設(shè)計3.1系統(tǒng)總體設(shè)計本系統(tǒng)的設(shè)計主要為高海拔人體環(huán)境監(jiān)測與預(yù)警系統(tǒng)設(shè)計,而整個系統(tǒng)設(shè)計主要包括了大氣壓感應(yīng)器、氧氣傳感器、溫度傳感器、OLED顯示屏、蜂鳴器以及單片機,而硬件系統(tǒng)設(shè)計則需完成以下的各模塊設(shè)計部分。圖3-1總體原理圖3.2系統(tǒng)主要功能模塊設(shè)計高海拔人體生存環(huán)境檢測預(yù)警系統(tǒng)設(shè)計主要是由大氣壓傳感器模塊、溫度傳感器模塊、氧氣傳感器模塊、顯示屏、蜂鳴器以及單片機最小系統(tǒng)設(shè)計。3.2.1大氣壓傳感器功能模塊設(shè)計大氣壓傳感器是高海拔人體生存環(huán)境檢測預(yù)警系統(tǒng)中非常重要的組成部分,因為大氣壓是高海拔環(huán)境中的另一個重要參數(shù)REF_Ref7469\r\h[21]。選擇合適的傳感器類型非常重要。在高海拔環(huán)境中,因為空氣稀薄,壓強很小,因此需要選擇高靈敏度的BMP180大氣壓傳感器。根據(jù)手冊提供公式,可以根據(jù)氣壓計算出海拔高度,但此式過于復(fù)雜。在3000米范圍內(nèi),每升高12米,大氣壓減小1mmHg,大約133Pa。海拔高度為0的大氣壓強大約是101325pa,所以據(jù)此可以進行簡單近似的計算:公式(1)圖3-2大氣壓傳感器原理圖3.2.2溫度傳感器功能模塊設(shè)計溫度傳感器是高海拔人體生存環(huán)境檢測預(yù)警系統(tǒng)中非常重要的組成部分,因為高海拔環(huán)境中溫度變化較大,可能對人體產(chǎn)生負面影響。選擇合適的傳感器類型非常重要。需要選擇高精度的傳感器,以便更準(zhǔn)確地測量溫度變化REF_Ref7492\r\h[22],因此選擇使用DS18B20溫度傳感器。DS18B20溫度傳感器同時達到了9-Bit和12-Bit的高攝氏溫度測量精度,并且擁有了一個用戶可編程的非易失性和同時具有高速和低觸發(fā)報警的特性。該傳感器的溫度測量范圍為零下55攝氏度至125攝氏度,并且在溫度范圍超過了零下10度至85度之外時就達到了正負0.5攝氏度的誤差。此外,DS18B20還可以直接使用數(shù)據(jù)線供電而不使用外置電源供電。 圖3-3溫度傳感器原理圖3.2.3氧氣傳感器功能模塊設(shè)計氧氣傳感器是高海拔人體生存環(huán)境檢測預(yù)警系統(tǒng)中非常重要的組成部分,因為高海拔環(huán)境中氧氣濃度變化較大,可能對人體產(chǎn)生負面影響。MQ-135空氣質(zhì)量傳感器,其特點是具有電源指示燈和TTL信號輸出指示燈,對檢測氣體具有較高的靈敏度和良好的選擇性,具有長期的使用壽命和可靠的穩(wěn)定性以及其具有快速的響應(yīng)回復(fù)特性等REF_Ref7515\r\h[23]。如果氣體濃度超過空氣中的閾值限制,則數(shù)字輸出引腳變?yōu)楦唠娖?。模擬輸出電壓是從傳感器的模擬引腳獲得的,它給出了空氣中存在的氣體濃度的近似值。圖3-4氧氣傳感器原理圖3.2.4顯示屏功能模塊設(shè)計在高海拔人體生存環(huán)境檢測預(yù)警系統(tǒng)中,顯示屏是一個非常重要的硬件部件,它可以實時顯示系統(tǒng)檢測到的環(huán)境參數(shù),提供實時監(jiān)測和預(yù)警功能。OLED是一種低光自發(fā)光物質(zhì),雖然沒有背光電源等,但其視野較廣、成像效果均勻、反應(yīng)快、也較容易彩化,而且感光效率高,具有較好的光學(xué)特性、生產(chǎn)成本低、易于制造和提高了生產(chǎn)經(jīng)濟性,所以適用于輕薄短小的產(chǎn)品理念,目前主要應(yīng)用為中小尺寸面板。它的分辨率為128*64,具有主動發(fā)光、寬視角、反應(yīng)快、畫面質(zhì)量穩(wěn)定、高亮度、多種色彩和超高圖像分辨率等的優(yōu)點。另外,OLED屏幕還可以在很低的機械壓力下正常運行,而且耗電量也很低。所以選用了0.96寸的OLED顯示屏。圖3-5OLED原理圖3.2.5藍牙模塊設(shè)計本系統(tǒng)應(yīng)用了HC-05藍牙串口通信模塊,EDR藍牙協(xié)議數(shù)傳模塊運用的基礎(chǔ)是BluetoothSpecificationV2.0,它的最大支持頻段是2.4GHzISM,調(diào)制方案則是GFSK。它的無線信號發(fā)射功率特別高,并且的靈敏性也非常高,不過如果采用PCB天線,一般也需要3米到5米的近距離的距離就可以實現(xiàn)的。采用BC417芯片,這種芯片靈活性較好,不僅能支持AT指令,還能改變主模式、串口位頻以及設(shè)備名,具有雙工兼容性的優(yōu)點作模式,一種是自動連接工作模式,另一種是藍牙掃描工作模式。安卓手機的藍牙作為主機板,打開手機只要可以掃描到HC-05藍牙模塊,便可以進行連接。 圖3-6藍牙模塊原理圖3.2.6蜂鳴器模塊設(shè)計蜂鳴器是一種比較常見的電聲元件,結(jié)構(gòu)簡單,小巧,重量輕,制造費用便宜,聲音頻率范圍通常在幾赫茲至十幾赫茲之間,在各種的電子設(shè)備上廣泛應(yīng)用。通用無源蜂鳴器的電阻是16歐,驅(qū)動方式則與普通放音器相同。無源蜂鳴器的意思是,需要加音頻驅(qū)動信號才能使其發(fā)出的聲音,其原理圖如下。圖3-7蜂鳴器模塊原理圖3.3本章小結(jié)基于STM32F103C8T6單片機的高海拔人體生存環(huán)境檢測預(yù)警系統(tǒng)分析,根據(jù)現(xiàn)有的技術(shù)和經(jīng)濟條件系統(tǒng)功能均可實現(xiàn)。同時還設(shè)計出一套完整的系統(tǒng),并將全系統(tǒng)分為兩個功能模塊,分析其實現(xiàn)過程和過程分析能夠得到較精確的數(shù)據(jù),同時也有利于后續(xù)的工作。
第4章軟件系統(tǒng)設(shè)計4.1軟件主流程圖主程序首先將單片機初始化以使相應(yīng)的I/O腳和中斷存取器置于正確位置,以便于繼續(xù)實施后續(xù)的工作。 圖4-1系統(tǒng)軟件主流程圖 4.2大氣壓傳感器程序的設(shè)計在高海拔人體生存環(huán)境檢測預(yù)警系統(tǒng)中,大氣壓傳感器的軟件設(shè)計需要實現(xiàn)數(shù)據(jù)采集、處理和傳輸?shù)裙δ?。下面是大氣壓傳感器的軟件設(shè)計方法:如果需要專門開發(fā)測量傳感器信息的軟件,也可以通過微型控制機的模擬輸入端口,或是通過數(shù)字輸入接口實現(xiàn)信息測量。收集到的數(shù)據(jù)必須經(jīng)過精度校正,從而保證數(shù)據(jù)的精度。必須根據(jù)收集到的數(shù)據(jù)加以處理,如數(shù)據(jù)換算、數(shù)據(jù)過濾等。在高海拔環(huán)境下,大氣壓傳感器數(shù)據(jù)可能存在較大的噪聲,需要進行濾波處理,以提高數(shù)據(jù)精度。需要將處理后的數(shù)據(jù)傳輸給其他硬件部件或者上位機,以便實現(xiàn)數(shù)據(jù)顯示、存儲、分析等功能??梢允褂么?、I2C、SPI等通信協(xié)議進行數(shù)據(jù)傳輸。大氣壓傳感器采集程序流程如圖。圖4-2大氣壓傳感器流程圖4.3溫度傳感器程序的設(shè)計由于溫度傳感器數(shù)據(jù)受到環(huán)境因素的影響,需要對系統(tǒng)進行定期校準(zhǔn),以確保數(shù)據(jù)的準(zhǔn)確性和可靠性??梢允褂眯?zhǔn)板或者其他精度更高的傳感器進行系統(tǒng)校準(zhǔn)。在高海拔環(huán)境中,溫度可能發(fā)生劇烈變化,需要編寫穩(wěn)定性較高的程序,以確保系統(tǒng)的可靠性和穩(wěn)定性。程序需要考慮到高海拔環(huán)境中的氣壓、濕度、溫度等因素,進行適當(dāng)?shù)目刂坪驼{(diào)整??傊?,溫度傳感器的軟件設(shè)計需要考慮到數(shù)據(jù)采集、處理、傳輸?shù)裙δ?,以確保系統(tǒng)正常運行。同時,需要注意系統(tǒng)校準(zhǔn)、穩(wěn)定性等問題,以提高系統(tǒng)的可靠性和精度。溫濕度傳感器流程圖如圖。圖4-3溫濕度傳感器流程圖4.4氧氣傳感器程序的設(shè)計氧氣傳感器的軟件設(shè)計需要考慮到數(shù)據(jù)采集、處理、傳輸?shù)裙δ?,以確保系統(tǒng)正常運行。同時,需要注意系統(tǒng)校準(zhǔn)、穩(wěn)定性、報警等問題,以提高系統(tǒng)的可靠性和精度。氧氣傳感器流程圖如圖。圖4-4氧氣傳感器流程圖4.5OLED顯示屏程序的設(shè)計顯示屏的軟件設(shè)計需要考慮到數(shù)據(jù)顯示、界面交互、報警功能、數(shù)據(jù)存儲和系統(tǒng)維護等方面。需要充分考慮用戶需求和系統(tǒng)穩(wěn)定性,以實現(xiàn)一個功能齊全、易用性強的高海拔人體生存環(huán)境檢測預(yù)警系統(tǒng)。顯示屏流程圖如圖。圖4-5OLED顯示屏流程圖 4.6藍牙模塊程序的設(shè)計首先,了解所使用的藍牙無線通信模塊的硬件接口,包括引腳定義、通信協(xié)議等。根據(jù)模塊的規(guī)格和文檔,連接藍牙模塊與主控設(shè)備單片機。在程序設(shè)計中,需要實現(xiàn)藍牙設(shè)備的連接管理,包括掃描周圍的設(shè)備、建立和斷開連接等操作??梢允褂脜f(xié)議棧提供的API來實現(xiàn)這些功能。藍牙通信可以用于傳輸數(shù)據(jù)。需要確定應(yīng)用場景和需求,然后設(shè)計相應(yīng)的數(shù)據(jù)傳輸方案。在程序設(shè)計中,需要考慮各種錯誤和異常情況的處理??梢允褂脜f(xié)議棧提供的錯誤處理機制,以及適當(dāng)?shù)漠惓L幚泶a來應(yīng)對這些情況。在完成程序設(shè)計后,進行充分的測試和調(diào)試是非常重要的。可以使用調(diào)試工具、日志記錄和模擬測試等方法來確保你的程序在各種情況下都能正常工作。需要注意的是,藍牙通信的軟件程序設(shè)計可能因具體的應(yīng)用需求而有所不同。圖4-6藍牙流程圖 4.7本章小結(jié)對軟件系統(tǒng)的系統(tǒng)功能進行分析,闡述對各個模塊的需求,并對其進行流程設(shè)計,可以讓軟件系統(tǒng)更加完備,實現(xiàn)相應(yīng)的功能,同時可方便后期開發(fā),使之更加方便快捷。第5章系統(tǒng)測試5.1系統(tǒng)實物圖圖5-1系統(tǒng)完整實物圖5.2測試目的檢測是用來識別系統(tǒng)中可能出現(xiàn)的問題,有的用戶覺得在檢測階段中出現(xiàn)的問題越少愈好,但實際并不是這樣的,只有在測試階段出現(xiàn)較多的情況才可以保證應(yīng)用的安全性和系統(tǒng)的安全性。檢測是一種破壞性的行為,其目的是要盡量多的找到軟件或者硬件上的問題。5.3測試原則測試指在依法規(guī)定的環(huán)境下對程序和硬件進行操作,從而發(fā)現(xiàn)程序問題,進而判斷軟件和硬件的質(zhì)量和安全性,并且對其是否能夠滿足設(shè)計條件等因素作出評價的過程。測試的基本原則有助于測試人員進行高質(zhì)量的測試,以便于盡早盡可能多的發(fā)現(xiàn)問題,并負責(zé)及時跟蹤和分析軟件和硬件上的問題,對存在的問題和不足及時指出問題和處理方法,以便于進一步改進測試過程。5.4功能測試(1)設(shè)備和手機連接將設(shè)備通上電,打開手機端APP,搜索到藍牙后進行配對,然后就會顯示連接成功,手機上也會實時顯示系統(tǒng)上采集到的溫度、海拔高度、氧氣濃度等數(shù)據(jù)。且在手機端也可以設(shè)置閾值。圖5-2藍牙模塊連接測試圖溫度傳感器模塊的功能性測試如圖上位機設(shè)置的溫度閾值為0-32℃,系統(tǒng)可以采集到環(huán)境中的溫度信息,并且將信息通過顯示屏進行顯示。如圖5-2,溫度為32.1,超出了設(shè)置閾值,蜂鳴器就會報警,直至溫度回復(fù)正常閾值之內(nèi)才會停止報警。圖5-3溫度模塊功能測試圖(3)大氣壓模塊的功能性測試上位機設(shè)置的最低閾值為50,最高閾值為220。系統(tǒng)可以采集當(dāng)前的海拔高度,并且將信息通過顯示屏進行顯示。如圖現(xiàn)在海拔為243.735,海拔超出設(shè)定閾值,蜂鳴器將會報警。圖5-4大氣壓模塊功能測試圖(4)氧氣模塊的功能性測試系統(tǒng)可以采集當(dāng)前的氧氣濃度,并且將信息通過顯示屏進行顯示。如圖所示,氧氣濃度為21.0。最低閾值為21,最高閾值為260,當(dāng)超出該閾值就會報警。圖5-5氧氣模塊的功能性測試圖APP端測試上位機不僅可以顯示海拔高度、溫度、氧氣濃度信息,并且可以設(shè)置閾值大小,通過藍牙將數(shù)據(jù)實時寫入到系統(tǒng)。該高海拔人體生存環(huán)境檢測預(yù)警系統(tǒng)不僅可以采集海拔高度信息,還可以采集溫度信息和氧氣濃度信息,當(dāng)采集到的信息超過閾值,蜂鳴器會進行報警。圖5-6上位機端的功能性測試圖5.5本章小結(jié)在該章中,對系統(tǒng)的功能模塊進行測試,對其獲得的測試進行詳細的記錄,并且進行分析,可以使得系統(tǒng)具有正常運行的特性,在模塊控制中,通過正常的使用,可以符合要求,使得該系統(tǒng)通過測試。第6章總結(jié)與展望本章主要從系統(tǒng)開發(fā)工程的初始選題到最后完成項目的全部過程進行了總結(jié),最后對系統(tǒng)開發(fā)過程及項目實施中的一些經(jīng)驗進行了總結(jié)敘述,并以自己的經(jīng)歷為總結(jié)歸納。6.1總結(jié)高海拔人體生存環(huán)境檢測預(yù)警系統(tǒng)是一種關(guān)鍵性的安全系統(tǒng),它可以實時監(jiān)測高海拔環(huán)境的溫度、大氣壓力和氧氣濃度等參數(shù),并通過報警功能向用戶提示危險情況,以保證人體在高海拔環(huán)境下的安全性。該系統(tǒng)主要由溫度傳感器、大氣壓傳感器、氧氣傳感器、顯示屏、蜂鳴器等硬件部件以及數(shù)據(jù)采集、處理、報警等軟件部件組成。在硬件設(shè)計方面,需要考慮傳感器的精度和穩(wěn)定性、屏幕的清晰度和可靠性等因素。在軟件設(shè)計方面,需要考慮數(shù)據(jù)采集、處理、報警、界面交互、數(shù)據(jù)存儲和系統(tǒng)維護等方面,以實現(xiàn)一個功能齊全、易用性強的系統(tǒng)??傊吆0稳梭w生存環(huán)境檢測預(yù)警系統(tǒng)的設(shè)計和實現(xiàn)是一項復(fù)雜的工程,需要多學(xué)科的綜合知識和技能。同時,該系統(tǒng)的應(yīng)用還需要嚴(yán)格遵循安全標(biāo)準(zhǔn)和規(guī)范,以確保其可靠性和安全性。6.2展望隨著人們對高海拔地區(qū)的探索和開發(fā)的不斷深入,高海拔人體生存環(huán)境檢測預(yù)警系統(tǒng)的需求也將逐漸增加。未來,該系統(tǒng)可能會朝著以下方向進行改進和發(fā)展:1.更精準(zhǔn)、更智能的傳感器技術(shù):傳感器技術(shù)是高海拔人體生存環(huán)境檢測預(yù)警系統(tǒng)的核心。未來,隨著科技的發(fā)展,可能會涌現(xiàn)出更為精準(zhǔn)、靈敏、智能的傳感器技術(shù),如基于微納米技術(shù)的傳感器和人工智能算法輔助的傳感器等。2.更便攜、更輕量化的硬件設(shè)計:隨著人們對高海拔地區(qū)的探索和開發(fā)的不斷深入,可能會出現(xiàn)更多需要攜帶高海拔人體生存環(huán)境檢測預(yù)警系統(tǒng)的情形。因此,未來的硬件設(shè)計可能會更加便攜、輕量化,以適應(yīng)更多場景的需求。3.更完善、更智能的軟件功能:未來,隨著人們對高海拔環(huán)境認知的深入,高海拔人體生存環(huán)境檢測預(yù)警系統(tǒng)可能會涌現(xiàn)出更為完善、智能的軟件功能,如對數(shù)據(jù)的更深入分析和處理、對環(huán)境變化的更為準(zhǔn)確的預(yù)測、更為智能的報警機制等。4.更廣泛的應(yīng)用場景:高海拔人體生存環(huán)境檢測預(yù)警系統(tǒng)不僅可以應(yīng)用于登山、探險等戶外活動,也可以應(yīng)用于氧療、航空航天、高海拔地區(qū)的建設(shè)和生產(chǎn)等領(lǐng)域。未來,該系統(tǒng)的應(yīng)用場景可能會更加廣泛。參考文獻李玉株;肖江.基于無線傳感器網(wǎng)絡(luò)的野生動物生存環(huán)境監(jiān)測節(jié)點硬件設(shè)計[P].江蘇農(nóng)業(yè)科學(xué).2021.王俊彩;王福平;侯瑞峰;王成.基于BMP085的一種便攜式海拔高度測量系統(tǒng)設(shè)計[J],傳感器與微系統(tǒng).2021.王華偉.基于紅外熱成像的溫度場測量關(guān)鍵技術(shù)研究[J],中國科學(xué)院研究生院.2021.辛靜.基于牧區(qū)生存環(huán)境的監(jiān)測與評價指標(biāo)體系研究.內(nèi)蒙古農(nóng)業(yè)大學(xué),2021.王剛.USB紅外抄表器設(shè)計[P].東南大學(xué),2018.王環(huán)宇.生物監(jiān)測及其在環(huán)境監(jiān)測中的應(yīng)用[C].環(huán)境與發(fā)展,2020.王宗禮;曹輝輝;肖永明;何建華;張山佳.青藏高原東北部沙隆卡遺址史前人群活動和生存環(huán)境基礎(chǔ)[J].第四紀(jì)研究,2019.朱云;喬鮮果;姚軼鋒;王宇飛.華北泥河灣盆地植被、氣候與早期人類生存環(huán)境研究進展[P].植物學(xué)報,2022.雷曉靜;丁金華;丁明亮;李明穎;呂思遠.海拔高度測量儀設(shè)計[J].工業(yè)儀表與自動化裝置.2018.曹金緒.城鎮(zhèn)化迷思與城市生存環(huán)境預(yù)警[M].中國地質(zhì)大學(xué).2020.田蘋,李紹云,李耀寧,崔智慧.氣候變化對人類生存環(huán)境的影響分析[J].環(huán)境保護與循環(huán)經(jīng)濟,2009.王瑩,康萬利,辛士剛,徐鵬.不同地區(qū)人發(fā)中微量元素的測定與生存環(huán)境的比較研究[J].光譜學(xué)與光譜分析,2007.趙宗遼.探析影響人體健康的因素[J].中醫(yī)藥管理雜志,2015.慶易微.淺析大氣污染對人體健康的影響[J].青海師專學(xué)報,2009.蒲小燕.醫(yī)學(xué)地理視角下高海拔環(huán)境對機體肺損傷機制的研究[D].青海師范大學(xué),2021.且華吉,劉江濤,文藝,黃竹,孫紅玉,湯禮軍.高原高海拔環(huán)境暴露對大鼠肝臟功能的影響及其機制[J].解放軍醫(yī)學(xué)雜志,2022.馬海林,黨鵬,蘇瑞,李昊.高海拔暴露時間對工作記憶的影響——一項追蹤研究[J].高原科學(xué)研究,2022.譚燁,歐陽銀,陳麗,李永寧,李強,柯尊友,楊紹星,韓玉,竇增娥,巴迎瑩,星海霞,馬嘉蓉,唐萬云,祁耀宇,張春霞,姚惠青,趙永祥.高海拔環(huán)境慢性阻塞性肺疾病急性加重期降維標(biāo)實主證的現(xiàn)況研究[J].中國中醫(yī)急癥,2021.BoWangShengshengGONG;HaichaoXIE;FahuCHEN.SpatiotemporalchangesofepidemicsandtheirrelationshipwithhumanlivingenvironmentsinChinaoverthepast2200years.[P].2022OtakiJojiM.Fukushima'slessonsfromthebluebutterfly:Ariskassessmentofthehumanlivingenvironmentinthepost-Fukushimaera.2021. Anonymous.DesignandImplementationofanIndustrialIntelligentInfraredRemoteController.2021HajimeOgi;KazuyaYokoyama.PlatformSystemforConformityEvaluationinProductsandLivingEnvironmentwithHumanPostureandMovement[P].2020GersteinHertzelC;WaltmanLaura.Whydon'tpigsgetdiabetes?Explanationsforvariationsindiabetessusceptibilityinhumanpopulationslivinginadiabetogenicenvironment.[C]2019. 附錄A總原理圖附錄B程序#include"delay.h"#include"sys.h"#include"oled.h"#include"bmp.h"#include"key.h"#include"usart.h"#include"usart2.h"#include"led.h"#include"adc.h"#include"ds18b20.h"#include"bmp180.h"#include"stmflash.h"#include"usmart.h"shorttemperature; u8tem[15];u8temperaturedyu=30; u8temperaturehyu=32; u8temgyu[3];u8temdyu[3];u8saveyu[20];u8newsaveyu[20];u16o2;u8o2s[15];unsignedinto2yu=200;u8o2yus[3];longhb;u8hbs[15];unsignedinthbdyu=0;u8hbdyus[3];unsignedinthbgyu=100;u8hbgyus[3];u16ya;u8yas[15];u8yayus[15];intfragment=0;u8send[30];u16feng;u8fengs[15];unsignedintfengyu=3;u8fengyus[15];u16ya;u8yas[15];u16cc;u8ccs[15];intbeepnum=0;intbiaozhi=0;intbiaozhi1=0;intbiaozhi2=0;intbiaozhi3=0;intbiaozhi4=0;intbiaozhi5=0;#defineTEMPD_SIZEsizeof(saveyu) //數(shù)組長度#defineFLASH_SAVE_ADDR_TEMPD0X08010300 //設(shè)置FLASH保存地址(必須為偶數(shù),且其值要大于本代碼所占用FLASH的大小+0X08000000)]voidUSART2_Puts(char*str){while(*str){USART2->DR=*str++;while((USART2->SR&0X40)==0);}}voidUSART1_Puts(char*str){while(*str){USART1->DR=*str++;while((USART1->SR&0X40)==0);}}voidUSART3_Puts(char*str){while(*str){USART3->DR=*str++;while((USART3->SR&0X40)==0);}}intmain(void){ inti,j; u8ID=0; delay_init(); NVIC_Configuration(); delay_ms(1000); OLED_Init(); OLED_ColorTurn(0);//0正常顯示,1反色顯示OLED_DisplayTurn(0);//0正常顯示1屏幕翻轉(zhuǎn)顯示 OLED_Refresh(); OLED_Clear(); KEY_Init(); LED_Init(); beep_Init(); beep=0; Adc_Init(); //ADC初始化 uart_init(9600); usart2_init(9600); BMP_Init(); BMP_ReadCalibrationData(); OLED_ShowChinese(0,0,0,16);//系 OLED_ShowChinese(18,0,1,16);//統(tǒng) OLED_ShowString(36,0,":",16); OLED_ShowChinese(0,16,2,16);//系 OLED_ShowChinese(18,16,3,16);//統(tǒng) OLED_ShowString(36,16,":",16); OLED_ShowChinese(0,48,4,16);//系 OLED_ShowChinese(18,48,5,16);//統(tǒng) OLED_ShowString(36,48,":",16); OLED_Refresh();usmart_dev.init(72); //初始化USMART STMFLASH_Read(FLASH_SAVE_ADDR_TEMPD,(u16*)saveyu,TEMPD_SIZE); while(DS18B20_Init()) //DHT11初始化 { delay_ms(200);} KEY_Init(); temperaturedyu=(saveyu[0]-'0')*10+(saveyu[1]-'0'); temperaturehyu=(saveyu[2]-'0')*10+(saveyu[3]-'0');hbdyu=(saveyu[4]-'0')*100+(saveyu[5]-'0')*10+(saveyu[6]-'0'); hbgyu=(saveyu[7]-'0')*100+(saveyu[8]-'0')*10+(saveyu[9]-'0'); o2yu=(saveyu[10]-'0')*100+(saveyu[11]-'0')*10+(saveyu[12]-'0'); temdyu[0]=temperaturedyu/10+'0'; temdyu[1]=temperaturedyu%10+'0'; temdyu[2]=0; OLED_ShowString(80,0,temdyu,16); temgyu[0]=temperaturehyu/10+'0'; temgyu[1]=temperaturehyu%10+'0'; temgyu[2]=0; OLED_ShowString(100,0,temgyu,16); hbdyus[0]=hbdyu/100+'0'; hbdyus[1]=hbdyu%100/10+'0'; hbdyus[2]=hbdyu%10+'0'; OLED_ShowString(0,32,hbdyus,16); hbgyus[0]=hbgyu/100+'0'; hbgyus[1]=hbgyu%100/10+'0'; hbgyus[2]=hbgyu%10+'0'; OLED_ShowString(64,32,hbgyus,16); o2yus[0]=o2yu/100+'0'; o2yus[1]=o2yu%100/10+'0'; o2yus[2]=o2yu%10+'0'; OLED_ShowString(90,48,o2yus,16); OLED_Refresh(); while(1) { if(USART2_RX_STA==1){ USART2_RX_STA=0; if(USART2_RX_BUF[0]=='w'){ if(USART2_RX_BUF[1]=='1'){ temperaturedyu=(USART2_RX_BUF[2]-'0')*10+USART2_RX_BUF[3]-'0'; temperaturehyu=(USART2_RX_BUF[4]-'0')*10+USART2_RX_BUF[5]-'0'; hbdyu=(USART2_RX_BUF[6]-'0')*100+(USART2_RX_BUF[7]-'0')*10+USART2_RX_BUF[8]-'0'; hbgyu=(USART2_RX_BUF[9]-'0')*100+(USART2_RX_BUF[10]-'0')*10+USART2_RX_BUF[11]-'0'; o2yu=(USART2_RX_BUF[12]-'0')*100+(USART2_RX_BUF[13]-'0')*10+USART2_RX_BUF[14]-'0'; temdyu[0]=temperaturedyu/10+'0'; temdyu[1]=temperaturedyu%10+'0'; temdyu[2]=0; OLED_ShowString(80,0,temdyu,16); temgyu[0]=temperaturehyu/10+'0'; temgyu[1]=temperaturehyu%10+'0'; temgyu[2]=0; OLED_ShowString(100,0,temgyu,16); hbdyus[0]=hbdyu/100+'0'; hbdyus[1]=hbdyu%100/10+'0'; hbdyus[2]=hbdyu%10+'0'; OLED_ShowString(0,32,hbdyus,16); hbgyus[0]=hbgyu/100+'0'; hbgyus[1]=hbgyu%100/10+'0'; hbgyus[2]=hbgyu%10+'0'; OLED_ShowString(64,32,hbgyus,16); o2yus[0]=o2yu/100+'0'; o2yus[1]=o2yu%100/10+'0'; o2yus[2]=o2yu%10+'0'; OLED_ShowString(90,48,o2yus,16); OLED_Refresh(); newsaveyu[0]=USART2_RX_BUF[2]; newsaveyu[1]=USART2_RX_BUF[3]; newsaveyu[2]=USART2_RX_BUF[4]; newsaveyu[3]=USART2_RX_BUF[5]; newsaveyu[4]=USART2_RX_BUF[6]; newsaveyu[5]=USART2_RX_BUF[7]; newsaveyu[6]=USART2_RX_BUF[8]; newsaveyu[7]=USART2_RX_BUF[9]; newsaveyu[8]=USART2_RX_BUF[10]; newsaveyu[9]=USART2_RX_BUF[11]; newsaveyu[10]=USART2_RX_BUF[12]; newsaveyu[11]=USART2_RX_BUF[13]; newsaveyu[12]=USART2_RX_BUF[14]; newsaveyu[13]=0; STMFLASH_Write(FLASH_SAVE_ADDR_TEMPD,(u16*)newsaveyu,TEMPD_SIZE); delay_ms(200); } } } ID=BMP_ReadOneByte(0xd0); BMP_UncompemstatedToTrue(); temperature=DS18B20_Get_Temp(); o2=((Get_Adc_Average(ADC_Channel_0,10)-50)/409)+210; o2s[0]=o2%1000/100+'0'; o2s[1]=o2%100/10+'0'; o2s[2]='.'; o2s[3]=o2%10+'0'; o2s[4]=0; tem[0]=temperature/100+'0'; tem[1]=temperature%100/10+'0'; tem[2]='.'; tem[3]=temperature%10+'0'; tem[4]=0; OLED_ShowString(45,0,tem,16); OLED_ShowString(54,48,o2s,16); if(bmp180.altitude>0){ hb=bmp180.altitude*1000; hbs[0]='+'; hbs[1]=hb%10000000/1000000+'0'; hbs[2]=hb%1000000/100000+'0'; hbs[3]=hb%100000/10000+'0'; hbs[4]=hb%10000/1000+'0'; hbs[5]='.'; hbs[6]=hb%1000/100+'0'; hbs[7]=hb%100/10+'0'; hbs[8]=hb%10+'0';hbs[9]='m'; hbs[10]=0; OLED_ShowString(40,16,hbs,16); }else{ hb=(-bmp180.altitude)*1000; hbs[0]='-'; hbs[1]=hb%10000000/1000000+'0'; hbs[2]=hb%1000000/100000+'0'; hbs[3]=hb%100000/10000+'0'; hbs[4]=hb%10000/1000+'0'; hbs[5]='.'; hbs[6]=hb%1000/100+'0'; hbs[7]=hb%100/10+'0'; hbs[8]=hb%10+'0';hbs[9]='m'; hbs[10]=0; OLED_ShowString(40,16,hbs,16); } OLED_Refresh(); if(temperature<temperaturedyu*10){ biaozhi1=1; }else{ biaozhi1=0; } if(temperature>temperaturehyu*10){ biaozhi2=1; }else{ biaozhi2=0; } if(bmp180.altitude<hbdyu){ biaozhi3=1; }else{ biaozhi3=0; } if(bmp180.altitude>hbgyu){ biaozhi4=1; }else{ biaozhi4=0; } if(o2>o2yu){ biaozhi5=1; }else{ biaozhi5=0; } if(biaozhi1==1||biaozhi2==1||biaozhi3==1||biaozhi4==1||biaozhi5==1){ beep=1; delay_ms(500); }else{ delay_ms(500); beep=0; } send[0]='w';send[1]='1'; send[2]=temperature/100+'0'; send[3]=temperature%100/10+'0'; send[4]='.'; send[5]=temperature%10+'0'; send[6]=o2%1000/100+'0'; send[7]=o2%100/10+'0'; send[8]='.'; send[9]=o2%10+'0'; send[10]=hbs[0]; send[11]=hbs[1]; send[12]=hbs[2]; send[13]=hbs[3]; send[14]=hbs[4]; send[15]=hbs[5]; send[16]=hbs[6]; send[17]=hbs[7]; send[18]=hbs[8]; send[19]=hbs[9]; send[20]='z'; send[21]=0; USART2_Puts(send); if(KEY2==1){} }}stm32f10x_it.c#include"stm32f10x_it.h"voidNMI_Handler(void){}voidHardFault_Handler(void){/*GotoinfiniteloopwhenHardFaultexceptionoccurs*/while(1){}}voidMemManage_Handler(void){/*GotoinfiniteloopwhenMemoryManageexceptionoccurs*/while(1){}}voidBusFault_Handler(void){/*GotoinfiniteloopwhenBusFaultexceptionoccurs*/while(1){}}voidUsageFault_Handler(void){/*GotoinfiniteloopwhenUsageFaultexceptionoccurs*/while(1){}}voidSVC_Handler(void){}voidDebugMon_Handler(void){}voidPendSV_Handler(void){}voidSysTick_Handler(void){}#include"stm32f10x.h"#ifdefined(STM32F10X_LD_VL)||(definedSTM32F10X_MD_VL)||(definedSTM32F10X_HD_VL)#defineSYSCLK_FREQ_24MHz24000000#else#defineSYSCLK_FREQ_72MHz72000000#endif#ifdefined(STM32F10X_HD)||(definedSTM32F10X_XL)||(definedSTM32F10X_HD_VL)#endif#defineVECT_TAB_OFFSET0x0#ifdefSYSCLK_FREQ_HSEuint32_tSystemCoreClock=SYSCLK_FREQ_HSE;/*!<SystemClockFrequency(CoreClock)*/#elifdefinedSYSCLK_FREQ_24MHzuint32_tSystemCoreClock=SYSCLK_FREQ_24MHz;/*!<SystemClockFrequency(CoreClock)*/#elifdefinedSYSCLK_FREQ_36MHzuint32_tSystemCoreClock=SYSCLK_FREQ_36MHz;/*!<SystemClockFrequency(CoreClock)*/#elifdefinedSYSCLK_FREQ_48MHzuint32_tSystemCoreClock=SYSCLK_FREQ_48MHz;/*!<SystemClockFrequency(CoreClock)*/#elifdefinedSYSCLK_FREQ_56MHzuint32_tSystemCoreClock=SYSCLK_FREQ_56MHz;/*!<SystemClockFrequency(CoreClock)*/#elifdefinedSYSCLK_FREQ_72MHzuint32_tSystemCoreClock=SYSCLK_FREQ_72MHz;/*!<SystemClockFrequency(CoreClock)*/#else/*!<HSISelectedasSystemClocksource*/uint32_tSystemCoreClock=HSI_VALUE;/*!<SystemClockFrequency(CoreClock)*/#endif__Iuint8_tAHBPrescTable[16]={0,0,0,0,0,0,0,0,1,2,3,4,6,7,8,9};staticvoidSetSysClock(void);#ifdefSYSCLK_FREQ_HSEstaticvoidSetSysClockToHSE(void);#elifdefinedSYSCLK_FREQ_24MHzstaticvoidSetSysClockTo24(void);#elifdefinedSYSCLK_FREQ_36MHzstaticvoidSetSysClockTo36(void);#elifdefinedSYSCLK_FREQ_48MHzstaticvoidSetSysClockTo48(void);#elifdefinedSYSCLK_FREQ_56MHzstaticvoidSetSysClockTo56(void);#elifdefinedSYSCLK_FREQ_72MHzstaticvoidSetSysClockTo72(void);#endif#ifdefDATA_IN_ExtSRAMstaticvoidSystemInit_ExtMemCtl(void);#endif/*DATA_IN_ExtSRAM*/voidSystemInit(void){/*ResettheRCCclockconfigurationtothedefaultresetstate(fordebugpurpose)*//*SetHSIONbit*/RCC->CR|=(uint32_t)0x00000001;/*ResetSW,HPRE,PPRE1,PPRE2,ADCPREandMCObits*/#ifndefSTM32F10X_CLRCC->CFGR&=(uint32_t)0xF8FF0000;#elseRCC->CFGR&=(uint32_t)0xF0FF0000;#endif/*STM32F10X_CL*//*ResetHSEON,CSSONandPLLONbits*/RCC->CR&=(uint32_t)0xFEF6FFFF;/*ResetHSEBYPbit*/RCC->CR&=(uint32_t)0xFFFBFFFF;/*ResetPLLSRC,PLLXTPRE,PLLMULandUSBPRE/OTGFSPREbits*/RCC->CFGR&=(uint32_t)0xFF80FFFF;#ifdefSTM32F10X_CL/*ResetPLL2ONandPLL3ONbits*/RCC->CR&=(uint32_t)0xEBFFFFFF;/*Disableallinterruptsandclearpendingbits*/RCC->CIR=0x00FF0000;/*ResetCFGR2register*/RCC->CFGR2=0x00000000;#elifdefined(STM32F10X_LD_VL)||defined(STM32F10X_MD_VL)||(definedSTM32F10X_HD_VL)/*Disableallinterruptsandclearpendingbits*/RCC->CIR=0x009F0000;/*ResetCFGR2register*/RCC->CFGR2=0x00000000;#else/*Disableallinterruptsandclearpendingbits*/RCC->CIR=0x009F0000;#endif/*STM32F10X_CL*/#ifdefined(STM32F10X_HD)||(definedSTM32F10X_XL)||(definedSTM32F10X_HD_VL)#ifdefDATA_IN_ExtSRAMSystemInit_ExtMemCtl();#endif/*DATA_IN_ExtSRAM*/#endif/*ConfiguretheSystemclockfrequency,HCLK,PCLK2andPCLK1prescalers*//*ConfiguretheFlashLatencycyclesandenableprefetchbuffer*/SetSysClock();#ifdefVECT_TAB_SRAMSCB->VTOR=SRAM_BASE|VECT_TAB_OFFSET;/*VectorTableRelocationinInternalSRAM.*/#elseSCB->VTOR=FLASH_BASE|VECT_TAB_OFFSET;/*VectorTableRelocationinInternalFLASH.*/#endif}voidSystemCoreClockUpdate(void){uint32_ttmp=0,pllmull=0,pllsource=0;#ifdefSTM32F10X_CLuint32_tprediv1source=0,prediv1factor=0,prediv2factor=0,pll2mull=0;#endif/*STM32F10X_CL*/#ifdefined(STM32F10X_LD_VL)||defined(STM32F10X_MD_VL)||(definedSTM32F10X_HD_VL)uint32_tprediv1factor=0;#endif/*STM32F10X_LD_VLorSTM32F10X_MD_VLorSTM32F10X_HD_VL*//*GetSYSCLKsource*/tmp=RCC->CFGR&RCC_CFGR_SWS;switch(tmp){case0x00:/*HSIusedassystemclock*/SystemCoreClock=HSI_VALUE;break;case0x04:/*HSEusedassystemclock*/SystemCoreClock=HSE_VALUE;break;case0x08:/*PLLusedassystemclock*//*GetPLLclocksourceandmultiplicationfactor*/pllmull=RCC->CFGR&RCC_CFGR_PLLMULL;pllsource=RCC->CFGR&RCC_CFGR_PLLSRC;#ifndefSTM32F10X_CLpllmull=(pllmull>>18)+2;if(pllsource==0x00){/*HSIoscillatorclockdividedby2selectedasPLLclockentry*/SystemCoreClock=(HSI_VALUE>>1)*pllmull;}else{#ifdefined(STM32F10X_LD_VL)||defined(STM32F10X_MD_VL)||(definedSTM32F10X_HD_VL)prediv1factor=(RCC->CFGR2&RCC_CFGR2_PREDIV1)+1;/*HSEoscillatorclockselectedasPREDIV1clockentry*/SystemCoreClock=(HSE_VALUE/prediv1factor)*pllmull;#else/*HSEselectedasPLLclockentry*/if((RCC->CFGR&RCC_CFGR_PLLXTPRE)!=(uint32_t)RESET){/*HSEoscillatorclockdividedby2*/SystemCoreClock=(HSE_VALUE>>1)*pllmull;}else{SystemCoreClock=HSE_VALUE*pllmull;}#endif}#elsepllmull=pllmull>>18;if(pllmull!=0x0D){pllmull+=2;}else{/*PLLmultiplicationfactor=PLLinputclock*6.5*/pllmull=13/2;}if(pllsource==0x00){/*HSIoscillatorclockdividedby2selectedasPLLclockentry*/SystemCoreClock=(HSI_VALUE>>1)*pllmull;}else{/*PREDIV1selectedasPLLclockentry*//*GetPREDIV1clocksourceanddivisionfactor*/prediv1source=RCC->CFGR2&RCC_CFGR2_PREDIV1SRC;prediv1factor=(RCC->CFGR2&RCC_CFGR2_PREDIV1)+1;if(prediv1source==0){/*HSEoscillatorclockselectedasPREDIV1clockentry*/SystemCoreClock=(HSE_VALUE/prediv1factor)*pllmull;}else{/*PLL2clockselectedasPREDIV1clockentry*//*GetPREDIV2divisionfactorandPLL2multiplicationfactor*/prediv2factor=((RCC->CFGR2&RCC_CFGR2_PREDIV2)>>4)+1;pll2mull=((RCC->CFGR2&RCC_CFGR2_PLL2MUL)>>8)+2;SystemCoreClock=(((HSE_VALUE/prediv2factor)*pll2mull)/prediv1factor)*pllmull;}}#endif/*STM32F10X_CL*/break;default:SystemCoreClock=HSI_VALUE;break;}/*ComputeHCLKclockfrequency*//*GetHCLKprescaler*/tmp=AHBPrescTable[((RCC->CFGR&RCC_CFGR_HPRE)>>4)];/*HCLKclockfrequency*/SystemCoreClock>>=tmp;}staticvoidSetSysClock(void){#ifdefSYSCLK_FREQ_HSESetSysClockToHSE();#elifdefinedSYSCLK_FREQ_24MHzSetSysClockTo24();#elifdefinedSYSCLK_FREQ_36MHzSetSysClockTo36();#elifdefinedSYSCLK_FREQ_48MHzSetSysClockTo48();#elifdefinedSYSCLK_FREQ_56MHzSetSysClockTo56();#elifdefinedSYSCLK_FREQ_72MHzSetSysClockTo72();#endif}#ifdefDATA_IN_ExtSRAMvoidSystemInit_ExtMemCtl(void){RCC->AHBENR=0x00000114;/*EnableGPIOD,GPIOE,GPIOFandGPIOGclocks*/RCC->APB2ENR=0x000001E0;GPIOD->CRL=0x44BB44BB;GPIOD->CRH=0xBBBBBBBB;GPIOE->CRL=0xB44444BB;GPIOE->CRH=0xBBBBBBBB;GPIOF->CRL=0x44BBBBBB;GPIOF->CRH=0xBBBB4444;GPIOG->CRL=0x44BBBBBB;GPIOG->CRH=0x44444B44;/*FSMCConfiguration*//*EnableFSMCBank1_SRAMBank*/FSMC_Bank1->BTCR[4]=0x00001011;FSMC_Bank1->BTCR[5]=0x00000200;}#endif/*DATA_IN_ExtSRAM*/#ifdefSYSCLK_FREQ_HSEstaticvoidSetSysClockToHSE(void){__IOuint32_tStartUpCounter=0,HSEStatus=0;/*SYSCLK,HCLK,PCLK2andPCLK1configuration*//*EnableHSE*/RCC->CR|=((uint32_t)RCC_CR_HSEON);/*WaittillHSEisreadyandifTimeoutisreachedexit*/do{HSEStatus=RCC->CR&RCC_CR_HSERDY;StartUpCounter++;}while((HSEStatus==0)&&(StartUpCounter!=HSE_STARTUP_TIMEOUT));if((RCC->CR&RCC_CR_HSERDY)!=RESET){HSEStatus=(uint32_t)0x01;}else{HSEStatus=(uint32_t)0x00;}if(HSEStatus==(uint32_t)0x01){#if!definedSTM32F10X_LD_VL&&!definedSTM32F10X_MD_VL&&!definedSTM32F10X_HD_VL/*EnablePrefetchBuffer*/FLASH->ACR|=FLASH_ACR_PRFTBE;/*Flash0waitstate*/FLASH->ACR&=(uint32_t)((uint32_t)~FLASH_ACR_LATENCY);#ifndefSTM32F10X_CLFLASH->ACR|=(uint32_t)FLASH_ACR_LATENCY_0;#elseif(HSE_VALUE<=24000000) {FLASH->ACR|=(uint32_t)FLASH_ACR_LATENCY_0; } else {FLASH->ACR|=(uint32_t)FLASH_ACR_LATENCY_1; }#endif/*STM32F10X_CL*/#endif/*HCLK=SYSCLK*/RCC->CFGR|=(uint32_t)RCC_CFGR_HPRE_DIV1;/*PCLK2=HCLK*/RCC->CFGR|=(uint32_t)RCC_CFGR_PPRE2_DIV1;/*PCLK1=HCLK*/RCC->CFGR|=(uint32_t)RCC_CFGR_PPRE1_DIV1;/*SelectHSEassystemclocksource*/RCC->CFGR&=(uint32_t)((uint32_t)~(RCC_CFGR_SW));RCC->CFGR|=(uint32_t)RCC_CFGR_SW_HSE;/*WaittillHSEisusedassystemclocksource*/while((RCC->CFGR&(uint32_t)RCC_CFGR_SWS)!=(uint32_t)0x04){}}else{/*IfHSEfailstostart-up,theapplicationwillhavewrongclockconfiguration.Usercanaddheresomecodetodealwiththiserror*/}}#elifdefinedSYSCLK_FREQ_24MHzstaticvoidSetSysClockTo24(void){__IOuint32_tStartUpCounter=0,HSEStatus=0;/*SYSCLK,HCLK,PCLK2andPCLK1configuration*//*EnableHSE*/RCC->CR|=((uint32_t)RCC_CR_HSEON);/*WaittillHSEisreadyandifTimeoutisreachedexit*/do{HSEStatus=RCC->CR&RCC_CR_HSERDY;StartUpCounter++;}while((HSEStatus==0)&&(StartUpCounter!=HSE_STARTUP_TIMEOUT));if((RCC->CR&RCC_CR_HSERDY)!=RESET){HSEStatus=(uint32_t)0x01;}else{HSEStatus=(uint32_t)0x00;}if(HSEStatus==(uint32_t)0x01){#if!definedSTM32F10X_LD_VL&&!definedSTM32F10X_MD_VL&&!definedSTM32F10X_HD_VL/*EnablePrefetchBuffer*/FLASH->ACR|=FLASH_ACR_PRFTBE;/*Flash0waitstate*/FLASH->ACR&=(uint32_t)((uint32_t)~FLASH_ACR_LATENCY);FLASH->ACR|=(uint32_t)FLASH_ACR_LATENCY_0;#endif/*HCLK=SYSCLK*/RCC->CFGR|=(uint32_t)RCC_CFGR_HPRE_DIV1;/*PCLK2=HCLK*/RCC->CFGR|=(uint32_t)RCC_CFGR_PPRE2_DIV1;/*PCLK1=HCLK*/RCC->CFGR|=(uint32_t)RCC_CFGR_PPRE1_DIV1;#ifdefSTM32F10X_CL/*ConfigurePLLs*//*PLLconfiguration:PLLCLK=PREDIV1*6=24MHz*/RCC->CFGR&=(uint32_t)~(RCC_CFGR_PLLXTPRE|RCC_CFGR_PLLSRC|RCC_CFGR_PLLMULL);RCC->CFGR|=(uint32_t)(RCC_CFGR_PLLXTPRE_PREDIV1|RCC_CFGR_PLLSRC_PREDIV1|RCC_CFGR_PLLMULL6);/*PLL2configuration:PLL2CLK=(HSE/5)*8=40MHz*//*PREDIV1configuration:PREDIV1CLK=PLL2/10=4MHz*/RCC->CFGR2&=(uint32_t)~(RCC_CFGR2_PREDIV2|RCC_CFGR2_PLL2MUL|RCC_CFGR2_PREDIV1|RCC_CFGR2_PREDIV1SRC);RCC->CFGR2|=(uint32_t)(RCC_CFGR2_PREDIV2_DIV5|RCC_CFGR2_PLL2MUL8|RCC_CFGR2_PREDIV1SRC_PLL2|RCC_CFGR2_PREDIV1_DIV10);/*EnablePLL2*/RCC->CR|=RCC_CR_PLL2ON;/*WaittillPLL2isready*/while((RCC->CR&RCC_CR_PLL2RDY)==0){}#elifdefined(STM32F10X_LD_VL)||defined(STM32F10X_MD_VL)||defined(STM32F10X_HD_VL)/*PLLconfiguration:=(HSE/2)*6=24MHz*/RCC->CFGR&=(uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC|RCC_CFGR_PLLXTPRE|RCC_CFGR_PLLMULL));RCC->CFGR|=(uint32_t)(RCC_CFGR_PLLSRC_PREDIV1|RCC_CFGR_PLLXTPRE_PREDIV1_Div2|RCC_CFGR_PLLMULL6);#else/*PLLconfiguration:=(HSE/2)*6=24MHz*/RCC->CFGR&=(uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC|RCC_CFGR_PLLXTPRE|RCC_CFGR_PLLMULL));RCC->CFGR
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 專業(yè)保潔服務(wù)定制協(xié)議范本(2024版)版B版
- 2024年規(guī)范版回遷房屋交易協(xié)議版
- 2024年短期融資過橋擔(dān)保合同版B版
- 萬達商業(yè)廣場2024年物業(yè)運營管理合同版
- 2025年度大棚建筑智能監(jiān)控系統(tǒng)開發(fā)與應(yīng)用合同3篇
- 專業(yè)定制股東合作框架合同(2024年版)一
- 長春醫(yī)學(xué)高等專科學(xué)?!顿Y本運營與公司治理》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年甲方與乙方設(shè)備租賃合同
- 服裝行業(yè)顧問工作總結(jié)
- 2024最簡單的汽油購銷合同范本
- 考研計算機學(xué)科專業(yè)基礎(chǔ)(408)研究生考試試題與參考答案(2025年)
- 《漢書》導(dǎo)讀學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 初三第一學(xué)期沖刺中考期末家長會
- 2022??低旸S-VM11S-B系列服務(wù)器用戶手冊V1.1
- 4《試種一粒籽》第二課時(教學(xué)設(shè)計)2023-2024學(xué)年統(tǒng)編版道德與法治二年級下冊
- 燙傷傷口護理
- 中建三局項目目標(biāo)責(zé)任成本測算培訓(xùn)資料
- 期末質(zhì)量評價(試題)-2024-2025學(xué)年一年級上冊數(shù)學(xué)人教版
- 2024至2030年中國MVR蒸汽機械行業(yè)全景調(diào)研及投資前景展望報告
- 2024合同模板河南省農(nóng)村信用社個人借款合同
- 2024年中考物理一輪復(fù)習(xí) 物態(tài)變化 講義(4考點+13考向)
評論
0/150
提交評論