第十一屆藍(lán)橋杯物聯(lián)網(wǎng)設(shè)計與開發(fā)項目決賽第二部分程序設(shè)計試題_第1頁
第十一屆藍(lán)橋杯物聯(lián)網(wǎng)設(shè)計與開發(fā)項目決賽第二部分程序設(shè)計試題_第2頁
第十一屆藍(lán)橋杯物聯(lián)網(wǎng)設(shè)計與開發(fā)項目決賽第二部分程序設(shè)計試題_第3頁
第十一屆藍(lán)橋杯物聯(lián)網(wǎng)設(shè)計與開發(fā)項目決賽第二部分程序設(shè)計試題_第4頁
第十一屆藍(lán)橋杯物聯(lián)網(wǎng)設(shè)計與開發(fā)項目決賽第二部分程序設(shè)計試題_第5頁
已閱讀5頁,還剩9頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第??屆藍(lán)橋杯物聯(lián)?設(shè)計與開發(fā)項?決賽第?部分程序設(shè)計試題第??屆藍(lán)橋杯物聯(lián)?設(shè)計與開發(fā)項?決賽第?部分程序設(shè)計試題1.基本要求略2.系統(tǒng)框圖3.硬件配置4.功能要求解題思路藍(lán)橋杯的物聯(lián)?設(shè)計與開發(fā)是可以使?STM32CodeMX軟件來對引腳配置初始化的,對于本題,我個?在學(xué)習(xí)過程中的思路是先寫A終端除了LoRa數(shù)據(jù)接發(fā)部分的功能,再寫B(tài)終端的請求功能,然后A再根據(jù)B終端的請求,返回相應(yīng)的數(shù)據(jù),再進(jìn)?相應(yīng)的展?,寫完每個模塊時,養(yǎng)成測試的好習(xí)慣,不要全部寫完再測試寫A終端?到的模塊和對應(yīng)引腳配置?概如下OLED模塊1PA8I2C3_SCL2PB4I2C3_SDAOutputOutput3PB5電源控制引腳,低電平有效Output溫度傳感器1PB1傳感器報警輸出信號AlertOutput2PB6傳感器I2C總線SCL信號Output3PB7傳感器I2C總線SDA信號OutputUSER鍵PC_14EXTI中斷,?于切換顯?界?USART2,波特率9600設(shè)置Asynchronous打勾NVIC的ENABLE繼電器K1--->PA0K2--->PA1LoRa模塊OutputOutput引腳配置在官?給的驅(qū)動?件中都已經(jīng)配置好,?需??配置LPTIM1定時器使?定時器來定時獲取溫度傳感器的溫度和查詢LoRa的接收,分頻128配置完如同所?圖1引腳配置圖本終端?到了多個中斷,要注意優(yōu)先級,這?設(shè)置的優(yōu)先級是:USER按鍵>串?接收>定時器1)需要?得到的變量定義2)外設(shè)初始化添加官?給的驅(qū)動?件,在main函數(shù)中初始化。我因為在初始化時,將LoRa模塊需要的三個初始化函數(shù)放在了兩個中斷開啟的下?,可能導(dǎo)致了初始化不成功,后續(xù)?直?法接收到B終端的請求,卡了?天多的時間。這個地?需要注意?下。3)獲取溫度因為官?只給了溫度傳感器的I2C驅(qū)動,獲取傳感器的值需要??去寫,所以抄了?下其他例程?的?件,如果暫時不會寫,?賽的時候可以背下來,好像和實際溫度有點出?,sts.c得到溫度后,就完成第?個要求了,在OLED屏顯?出來通過PC14的中斷,來切換顯?的界?顯?最?最?溫度的界?到這?,完成了第?個要求4)串?收發(fā)數(shù)據(jù)在main函數(shù)初始化時,已經(jīng)打開了串?2的中斷接收,只需要重寫回調(diào)函數(shù)的功能即可。發(fā)送完要再次進(jìn)?接收模式數(shù)據(jù)的解析有點粗魯,但這是??的我想到的直?的?式了5)定時器的繼電器控制和溫度刷新在這個部分完成了很多功能,在刷新溫度的時候,判斷是否達(dá)到繼電器的吸合和斷開的條件,就進(jìn)?對繼電器的控制,同時掃描?下是否有接收到終端B的請求到這,終端A除了LoRa收發(fā)數(shù)據(jù)部分,其他功能已經(jīng)完成,先去寫終端B寫B(tài)終端終端B只?到了鍵盤和OLED,開發(fā)步驟和A終端?樣所以引腳配置OLED模塊1PA8I2C3_SCLOutput低電平有效2PB4I2C3_SDAOutput3PB5電源控制引腳,低電平有效Output外接按鍵模塊?到B1、B2、B3、B4,使?列1,列2,?1,?2列1:PB0Output列2:PB1Output?1:PB6input?2:PB7inputLoRa模塊引腳配置在官?給的驅(qū)動?件中都已經(jīng)配置好,?需??配置,打開EXTI10的中斷,?于LoRa的接收中斷1)需要?得到的變量定義2)外設(shè)初始化和終端A的差別不?3)按鍵掃描按鍵原理圖本題沒?到B3和B6鍵,所以PA8?不到,因為PA8是OLED的I2C3_SCL線,低電平有效。所以按鍵掃描的思路為:PB1,PB0,PA8為Output模式,設(shè)置?對應(yīng)引腳為信號輸?,也就是PB6,PB7為Input模式,都設(shè)置為Pull-down。注意:PA8為OLED信號線,低電平有效,在按鍵讀取結(jié)束時應(yīng)及時設(shè)置成低電平。開始掃描時,先掃描第?列,將PB1設(shè)置為?電平,PA8為低電平(OLED屏需要),然后讀取?值,PB6,PB7的值,即當(dāng)PB6讀取值為1(?電平)時,說明按鍵B1被按下,同理,PB7讀取值為1時,說明按鍵B4被按下;讀取完第?列,開始讀取第?列,要及時將PB1改為低電平,然后設(shè)置PB0為?電平,后續(xù)原理?樣;讀取第三列時是將PA8設(shè)置為?電平,結(jié)束后應(yīng)當(dāng)及時改為低電平,以?便OLED屏使?。在這??不到第三列,但是也可以掃描出來,在處理時相應(yīng)的處理即可。key.c代碼如下到這?步,剩下的就是兩個終端之間的通信了終端A終端B之間的通信整個通信過程?概如下圖1)B向A發(fā)送請求根據(jù)掃描得到的按鍵,向A終端發(fā)送不同的請求(B終端代碼)2)A數(shù)據(jù)解析A收到B發(fā)來的請求后解析B的請求(A終端代碼)3)A向B返回數(shù)據(jù)數(shù)據(jù)返回(A終端代碼)4)B處理接收到的數(shù)據(jù)寫EXTI中斷回調(diào)函數(shù)(B終端代碼)在main中的while(1)?就掃描按鍵和LoRa接收中斷標(biāo)志當(dāng)接收到數(shù)據(jù)時,調(diào)?recv_service()根據(jù)不同的數(shù)據(jù)進(jìn)?不同的展?總結(jié)1.使?多個中斷時需要注意優(yōu)先級,優(yōu)先級不對會導(dǎo)致部分功能?法實現(xiàn)2.在B終端接收數(shù)據(jù)的時候,?PA10的EXTI中斷,A中斷?定時器查詢3.在相同部分代碼復(fù)制時,注意修改不?樣

溫馨提示

  • 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

提交評論