STM32無線數據基站的設計與實現_第1頁
STM32無線數據基站的設計與實現_第2頁
STM32無線數據基站的設計與實現_第3頁
STM32無線數據基站的設計與實現_第4頁
STM32無線數據基站的設計與實現_第5頁
已閱讀5頁,還剩21頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

...wd......wd......wd...本科畢業設計〔20屆〕題目基于stm32無線數據基站的設計和實現學院電子信息學院專業電子信息工程姓名陳潔班級09091813學號09918307指導教師周磊完成日期20年3月誠信承諾我謹在此承諾:本人所寫的畢業論文《基于stm32無線數據基站的設計和實現》均系本人獨立完成,沒有抄襲行為,凡涉及其他作者的觀點和材料,均作了注釋,假設有不實,后果由本人承當。承諾人〔簽名〕:年月日摘要隨著人們的生活及其生產水平的不斷提高,對生活中各種數據接收的速度和準確度的要求就顯得尤為重要,無線數據收發控制就是一個典型的例子,因此無線數據基站就是現代生產生活中應運而生的一種智能、快捷、方便可靠的檢測系統。本設計通過STM32F107控制無線收發模塊從無線網絡節點接收數據,進展相關處理后通過以太網把數據發送至應用服務器。系統的用戶統用戶通過Internet網絡訪問應用服務器,其中本設計起到網橋和防火墻的作用。其中本設計中采用的以太網控制器為DM9161芯片。本設計軟件局部的主要工作是在硬件平臺的根基上實現TCP/IP協議棧,由于TCP/IP協議棧較復雜,功能實現比擬困難,一般選擇成熟的TCP/IP協議棧進展移植,此次選擇開源并且較成熟的LwIP以太網協議棧。關鍵詞:STM32F107以太網DM9161TCP/IP協議棧ABSTRACTWiththecontinuousimprovementofpeople'slivesandtheirproductionlevels,thethelifedatareceptionspeedandaccuracyrequirementsisparticularlyimportant,wirelessdatatransceivercontrolisatypicalexample,thewirelessdatabasestationismodernproductionlifecameintobeingasmart,fast,convenientandreliabledetectionsystem.ThisdesignSTM32F107controlwirelesstransceivermodulereceivesdatafromthewirelessnetworknodesrelatedviaEthernettransmitsdatatotheapplicationserver.ThesystemusersystemuseraccesstotheapplicationserverthroughtheInternet,includingthedesignplayaroleofbridgeandfirewall.DM9161Ethernetcontrollerchipusedinthedesign.ThesoftwarepartofthedesignworkisimplementedinhardwareplatformbasedontheTCP/IPprotocolstack,theTCP/IPprotocolstackismorecomplex,andmoredifficulttoachieve,usuallyselectedmatureTCP/IPprotocolstackfortransplantation,thechoiceopensourceandthemorematureLwIPEthernetprotocolstack.Keywords:STM32F107EthernetDM9161TCP/IPProtocolstack目錄TOC\o"1-2"\h\z\u220391引言1127722概述2159362.1課題研究的背景 2242142.2國內外stm32控制以太網技術開展現狀及趨勢3325772.3研發方向和技術關鍵4251952.4主要技術指標4191693總體設計5305493.1系統方案選擇與論證5116213.2系統軟件總體構造6210223.3本章小結7255094硬件設計9293564.1主控芯片STM32F1079293604.2STM32串口通訊12172924.3DM9161用法介紹1655534.4本章小結20273315以太網協議21317405.1TCP/IP協議21323055.2嵌入式TCP/IP協議棧22246746軟件設計2682076.1主程序設計2631326.2系統初始化子程序27277206.3RS232通訊子程序28112226.4網口通訊子程序2896706.5本章小結29182037結論302223致謝3112950參考文獻323808附錄331引言隨著人們的生活及其生產水平的不斷提高,對生活中各種數據接收的速度和準確度的要求就顯得尤為重要,無線數據收發控制就是一個典型的例子,因此無線數據基站就是現代生產生活中應運而生的一種智能、快捷、方便可靠的檢測系統。目前,無線網絡標準按照通訊距離的不同分為WAN、WLAN、PAN。比擬主流的無線技術有藍牙、3G、HomeRF、WI-FI、WIMAX、GPRS、CDMA、UWB等。其中WI-FI運用最為廣泛,其運用主要在WLAN/MESH領域。無線網絡推動了數據通信進入了新的里程碑,讓辦公、工作、學習不再受“線〞制。方便實現了移動辦公,組建臨時工作組,召開緊急會議等不在需要復雜的布線拆線,無線覆蓋區域直接可以通過無線進展通信。校園環境等,可以讓師生在任何環境,可以在廣場、在草坪、在體育場地等任意位置連接上Internet。隨著無線網絡在各個領域的成功案例及人們對它的關注程度,無線網絡定是未來通信的開展方向,也定能在各領域中得到很好的應用。本設計通過stm32控制無線收發模塊從無線網絡節點接收數據,進展相關處理后通過以太網把數據發送至應用服務器。系統的用戶統用戶通過Internet網絡訪問應用服務器,其中本設計起到網橋和防火墻的作用。其中本設計中采用的以太網控制器為DM9161芯片。2概述2.1課題研究的背景近幾年來,隨著科學技術日新月異的開展,計算機科技的快速開展,特別是互聯網的快速普及,互聯網在人類活動中也越來越嚴密聯系,尤其是對于工業控制和信息電器領域中同樣有著越來越重要的應用。同時計算機,通訊,消費電子三合一的快速開展,數字化時代已經到來。而嵌入式接入設備是數字化時代的一大主流標志,形態各異的計算機,通訊,消費電子三合一產品也將是網絡接入設備的一大主流。因為PC機以及現有的Internet技術可以實現對非網絡設備進展遠程控制的局部的要求,而且本錢費用較高,可靠性和期望值也有一定的距離,所以這種方案并沒有被廣泛的承受和使用。由于嵌入式設備具有低本錢高性能的特點,而現今對嵌入式系統的開發研究和嵌入式技術也都進入到了一個成熟的階段,將嵌入式系統和網絡相結合來實現非網絡系統的網絡控制,那么世界可能就是另一番景象。因特網技術的成熟,使得網上提供的信息更加豐富,應用工程也更加多樣,人們對網絡的需求也越來越廣泛,利用PC機上網來查閱和發布各類信息等對于網絡的日常應用已經不能滿足人們的需求。像傳統的電器,電冰箱,微波爐,電視,空調等,這類電子設備的功能也不在單一,電器構造也更為復雜,也逐步開場應用嵌入式網絡接入,使用戶可以通過網絡就能實現遠程控制,信息通訊。同樣,互聯網在全球范圍內的連通性,那些能夠連接因特網的設備也成為人們選擇產品中考慮的一大問題,通過Internet對家用電器等非網絡設備進展遠程控制已經成為現今主流。而一些小型輕便的設備,比方一些醫學儀器上的身體上使用的傳感器,體積小而且廉價,內存小,運算能力有限,因此必須在資源受限的情況下實現TCP/IP協議甚至處理承受到的信息。TCP/IP協議可以分為四個層次,從底層到最高層分別是物理層和數據鏈路層,網絡層,傳輸層,和最高層的應用層。物理層和數據鏈路層是TCP/IP協議的最低層,要求提供應上層一個訪問接口,以便傳遞IP分組信息。網絡層是第二層,也是整個TCP/IP協議棧的核心,其功能是把分組發往目標網絡或主機,源主機與目的主機可以在同一個網上,也可以在不同的網上。其中定義了分組格式和協議,即IP協議,來對分組進展排序。IP協議是一種不可靠、無連接的數據報發傳送服務的協議,提供的只是一種盡力而為的服務。傳輸層是第三層,負責在應用進程中的端到端之間的通信。傳輸層定義了兩種服務質量不同的協議,TCP和UDP。TCP是一種可靠的面向連接的協議,允許將源主機的字節數據流無差異的傳送到目的主機。同時能夠完成流量的控制功能,協調收發主機之間的發送和承受速度,從而控制正確的傳輸。應用層是最高層,其中也包括了很多協議:文件傳送協議,簡單郵件傳送協議,簡單網絡管理協議,超文本傳送協議等。LwIP是瑞士計算機科學院一個開源的TCP/IP協議棧實現。LwIP是LightWeightIP協議,有無操作系統都可以運行,其實現的重點是在保持TCP/IP協議的主要功能的根基上減少對內存的占用,一般只需要幾百字節的RAM和40K左右的ROM就可以運行,這使得LwIP成為在資源受限的情況下實現及處理TCP/IP協議的解決方法。LwIP可以支持多網絡接口下的IP轉發,提供專門的內部回調接口RawAPI,這樣可以提高應用程序性能。像LwIP的目標系統是最小限度系統,所使用的操作系統通常不能在內核與應用層進程之間維持一個嚴格的保護屏障。這里允許使用一種比擬寬松的通許機制,通過共享內存的方式實現應用層與底層協議族之間的通訊。應用層可以知道底層協議使用的緩沖處理機制,這使得應用層可以有效的重復使用緩沖區。同樣,應用層與網絡代碼使用的是一樣的內存區,那么應用層就可以直接讀寫內部緩沖區。2.2國內外stm32控制以太網技術開展現狀及趨勢中國的嵌入式系統開發走過了二十多年的歷程,有超過數十萬名從事開發應用的工程師,但大多數以上是幾個人的小組以孤軍奮戰的封閉方式開發幾乎不可重用的軟件。今天面對的是嵌入式系統工業化的潮流,如果不能認識到嵌入式軟件必須以工業化的方式生產開發,不理解在短時間內裝配集成“數百人/年〞的嵌入式產品,那么將失去更多的上游產品的市場機遇。嵌入式軟件方面逐漸形成了系統軟件、應用軟件的架構。國際上用于信息電器的嵌入式操作系統有40種左右。其中,國外涌現了一些著名的嵌入式操作系統,如:Vxworks、pSOS、WinCE、RTEK、palmOS、EpOC、QNX、LynxOS、DSPhnux等。其中Vx/Orks是目前嵌入式系統領域中使用最廣泛、市場占有率最高的系統:WinCE是一種32位的多任務操作系統,可以移植,能夠開發多種企業和客戶類設備,是微軟公司的“維納斯方案〞的核心:3COM公司的Palm0S在PDA市場上占有很大的市場份額,它有開放的操作系統應用程序接口(API),開發商可以根據需要自行開發所需要的應用程序。國內外有大量嵌入式應用軟件已廣泛用于各類嵌入式系統中。大有國內緊跟國外趨勢的形勢。但是對于嵌入式Web服務器方面的研究國內現狀不容樂觀,目前國外的相關研究相對多些。如林C/IP研究工程,它是一個為微控制器和嵌入式系統而設計的小型TCP/IP協議棧:又如CMX公司的MieroNetTCP/IP,它是為8位或16位微處理器而設計的,支持大局部的標準協議,連接方式有以太網連接、撥號連接和直接連接方式。而國內也相應提出了Webito協議標準,但是相對滯后,缺少具體的工程實現方面的研究和具體產品的開發。美國DEC公司開發的VMSeluster系統開發最早,技術也較成熟,應用也很廣泛,但由于VMS操作系統只能在DEC公司的VAX系列和AIPha系列服務器上運行,VMScluster的應用受到很大限制。Platform公司開發的高可用性集群系統LSF提供了分布式集群系統的解決方案,通過將物理上別離的多個集群連接在一起使多個同構或異構的計算機能夠通過局域網或廣域網共享計算資源,并能夠為用戶提供對資源的透明訪問。國內也有不少公司進展了集群系統的研究和開發工作。聯想公司在1999年9月推出了用于分布式高性能計算的NS10000高性能集群服務,該系統是一個四節點的系統,主要基于聯想萬全45008服務器,以總體本錢相對較低的設備組合,足以替代傳統班SC小型機和中型機的工作,而價格僅為市場上同等性能小型機的1/2--1/40。朗訊公司也推出了類似于Urboduster的高可用性集群系統LongshineClusterServer。從國內外的研究現狀看,目前集群系統的應用大都致力于高可用性問題的解決,真正基于負載均衡的集群系統還比擬少,而且在大局部負載均衡集群中采用的都是輪轉調度、加權輪轉調度等靜態調度算法。2.3研發方向和技術關鍵〔1〕合理設計硬件電路,使各模塊功能協調;〔2〕STM32對DM9161的控制;〔3〕STM32對串口模塊的控制;〔4〕STM32對TCP/IP協議棧的開發;2.4主要技術指標〔1〕合理設計硬件電路,使各模塊功能協調〔2〕STM32可以實現對數據的處理和傳輸。〔3〕對DM9161的控制的數據的傳輸3總體設計3.1系統方案選擇與論證總體設計思路,分為三局部,無線數據采集局部,網絡控制局部,控制局部。并利用stm32對各局部進展控制。應用DM9161通過網線與上位機相連接,可以處理和傳遞下系統相關參數。設計模塊圖如圖3.1所示。服務器無線網絡數據信號DM9161網絡控制服務器無線網絡數據信號DM9161網絡控制STM32F107處理圖3.1整體模塊圖3.1.1控制局部方案在本次設計中,單片機是系統的控制核心,所以單片機的性能關系到整個系統的好壞。因此單片機的選擇,對所設計系統的實現以及功能的擴展有著很大的影響。單片機種類很多,STM32系列基于專為要求高性能、低本錢、低功耗的嵌入式應用專門設計的ARMCortex-M3內核。按性能分成兩個不同的系列:STM32F103“增強型〞系列和STM32F101“根本型〞系列。增強型系列時鐘頻率到達72MHz,是同類產品中性能最高的產品;根本型時鐘頻率為36MHz,以16位產品的價格得到比16位產品大幅提升的性能,是16位產品用戶的最正確選擇。兩個系列都內置32K到128K的閃存,不同的是SRAM的最大容量和外設接口的組合。時鐘頻率72MHz時,從閃存執行代碼,STM32功耗36mA,是32位市場上功耗最低的產品,相當于0.5mA/MHz。因此,在本次設計中選用了stm32F107單片機作為主控芯片。2.1.2無線數據采集局部方案本設計有單片機控制無線模塊,接收從無線網絡的數據,并經過單片機進展處理,通過網絡控制局部傳送給PC接收。通過UTC4832無線網絡把數據上傳至主通信節點,主通信節點對數據進展進一步處理,通過以太網把數據發送至應用服務器。2.1.3網絡控制局部方案方案一:采用基于RTL8019AS實現以太網通訊。RTL8019AS是由臺灣Realtek公司生產的100pinPQFP封裝10Mbps以太網控制器,符和EthernetII與IEEE802.3標準,其應用成熟廣泛,但是由于RTL8019AS沒有集成內部硬件協議,此方案需要在主控制器內部編寫以太網通訊協議、程序繁瑣、消耗時間,不利于系統的快速開發和穩定運行。且由于其封裝引腳太多,也不方便系統的硬件設計。方案二:采用基于DM9161的網絡控制器的以太網通訊系統設計。DM9161DM9161AEP是一款完全集成的和符合本錢效益單芯片快速以太PHY,是采用較小工藝0.25um的10/100M自適應的以太網收發器。DM9161AEP通過可變電壓的MII或RMII標準數字接口連接到MAC層,支持HPAuto-MDIX?。是目前常見的一款物理層收發器,由于全球的MCU集成度不斷提高,由MAC+PHY+MII的衍生到現在的PHY,在以太網局部的本錢,逐漸降低。方案三:采用基于ENC28J60的網絡控制器的設計。ENC28J60是帶有行業標準串行外設SPI接口的獨立以太網控制器,具有28pinDIP封裝,符合IEEE802.3的全部標準,采用了一系列包過濾機制以對傳入數據包進展限制。他還提供了一個內部DMA模塊,以實現快速數據吞吐和硬件支持的IP較驗和計算。與主控制器的通信通過兩個中斷引腳和SPI實現,傳輸數據速率高達10Mb/s。兩個專用的引腳用于連接LED,進展網絡活動狀態指示。雖然ENC28J60同樣也沒有像DM9161那樣集成了了內部硬件協議棧,但是由于其具有28pinDIP封裝,大大便于硬件設計和制版,符合我們這次系統設計的根本要求。綜上所述所述,方案二和方案三都適合作為本次設計的網絡控制局部,由于條件所限我們選擇方案二。3.2系統軟件總體構造系統軟件總體構造如圖3-2所示,整個程序是圍繞STM32F107VCT6單片機設計的,軟件程序采用模塊化設計,更容易理解和調試。整個程序除主程序之外還有5個局部:系統初始化子程序、RS232通訊子程序、網口通訊子程序、I/O數據采集子程序和RS485通訊子程序。圖3-2軟件構造圖主程序流程圖如圖3-3所示。系統運行后進入主程序,首先對系統硬件進展初始化,而后再對網絡進展初始化,然后檢查網絡連接是否正常,連接正常則進展周期運行顯示,不正常則重新進展連接。圖3-3主程序流程圖3.3本章小結本章主要講述了本設計的工作原理和本設計系統的工作流程。在說明工作原理的過程中,突出了電路的組成單元以及這些單元如何實現數據采集和數據處理控制功能。在說明系統流程時,結合本設計的內容指出了參數設置的方法和意義。4硬件設計4.1主控芯片STM32F10732位ARMCortex-M3構造,72MHz運行頻率,1.25DMIPS/MHz,硬件除法和單周期乘法,并可快速可嵌套中斷,6~12個時鐘周期,有64K~256KB的FLASH,以及高達64KB的SRAM。另外在網絡通信功能上,具有一個RJ45網絡接口,支持10M/100M自適應網絡,還有一個Zigbee無線網絡通訊接口,一個Wi-FiWLAN無線寬帶網絡通訊接口。在本開發板上,添加了一些人機交互接口,一個大屏幕320*240,262144色TFT-LCD,支持SPI接口式/總線接口,四個LED發光管,一個電源LED指示燈,另外一個標準3.5mm耳機接口,一個五方向的輸入搖桿,3個GPIO按鍵,1個RESTE按鍵,以及音頻級處理芯片,USBOTG功能能,支持外接鼠標和鍵盤。串行通信功能上,有兩個RS232連接插座,其中一個RS232帶硬件流控制引腳,一個mini型USB插座,兩個CAN連接口。其中與以太網最重要的硬件是MAC〔介質訪問控制〕及其專用的DMA。專用的DMA控制器允許專用SRAM和描述符之間高速傳輸,其中一些地址過濾模式,對物理和組發送地址,以及32位狀態編碼,用于每個傳送和承受幀。內部的FIFO用于緩存傳輸和承受幀,傳輸FIFO和承受FIFO都是2Kbyte,總共4Kbytes。實物圖如圖4.1所示:圖4.1stm32實物圖圖STM32F107xx包括以下特性:支持10和100Mbit/s兩種速率專用DMA控制器允許專用SRAM和描述符之間高速傳輸。標記的MAC幀支持,支持VLAN(虛擬局域網)半雙工和全雙工兩種操作模式,半雙工下采用CSMA/CD〔帶有檢測沖突的載波偵聽多路存取〕支持MAC控制子層,用于控制幀。32位CRC產生和去除。一些地址過濾模式,對物理和組播地址。32位狀態編碼,用于每個傳送和承受幀。內部FIFO用于緩存傳輸和接收幀。傳輸FIFO和接收FIFO都是2Kbyte,總計4Kbytes。支持硬件PTP(準確時間協議),時間戳比擬器連接到TIM2觸發輸入端。當系統時間比預定目標時間大時,觸發中斷。4.1.1STM32F107的以太網功能描述STM32F107支持兩種工業標準的物理層接口,默認的介質無關接口MII和精簡的介質無關接口RMII。以太網的外設由MAC和一個專用的DMA控制器,支持默認的MII和RMII通過一個選擇位來設置默認的MII接口或者精簡MII接口。TDMA控制器接口通過AHB主從接口連接核和內存,AHB主接口控制數據傳輸當AHN從接口訪問控制盒狀態存放器空間。在MAC核傳輸前,傳輸FIFO緩存通過DMA從系統內存中讀取數據,類似的,承受的FIFO隊列從線上儲存以太網幀從而知道它們被DMA傳送到了系統內存中。以太網的外設還包括一個SMI用于和外部的PHY通信。配置存放器允許用戶為MAC和DMA控制器選擇想要的模式和特性。圖4.2STM32F107以太網原理框圖4.1.2SMI站管理接口SMI〔stationmanagementinterface站管理接口〕允許應用程序通過一根時鐘數據線來讀取配置中任意一個物理存放器,接口最多支持訪問是32個PHY。應用程序可以在SMI的允許下選擇32個PHY中的其中一個,再在PHY中32個存放器中的任意一個來發送控制數據或者承受狀態信息。但是在給定的時間里,只能訪問一個PHY中的存放器。如圖4.2所示,圖中微控制器執行使MDC時鐘線和MDIO數據線來為交替的功能I/O扣。MDC是一個用于給數據傳輸提供時間參考的周期性時鐘,最大的頻率為2.5MHz,最小的MDC的上下時間是每次160ns,最小的周期是400ns。值得注意的是,在不工作的情況下,SMI管理接口驅動MDC時鐘信號為低,即為0。而MDIO是數據輸入和輸出數據是要用MDC時鐘信號來同步傳輸狀態信號給物理設備,或者從物理設備那得到狀態信號。STM32STM32MACExternalPHYMDIOMDC圖4.3SMI管理接口框圖4.1.3SMI寫操作當應用程序設置介質無關接口MII寫和忙位時,SMI通過傳輸PHY的地址,PHY中的存放器地址以及寫數據來啟動一個寫操作到PHY存放器上。當然,在傳輸過程中應用程序不能改變MII的地址存放器中的內存或者是MII數據存放器。在這個寫操作的時間里,任何對MII地址存放器和MII數據存放器的寫操作都會被忽略〔忙時位為高,即為1〕,保證傳輸過程無過失完成。這個寫操作完成之后,SMI又通過復位忙位,使得可以重新承受新的寫操作。圖4.4SMI寫操作4.1.4SMI的讀操作用戶設置以太網MAC中MII的地址存放器中的MIIBusybit時,MIIWritebit為零,SMI就通過傳輸PHY地址和PHY中的存放器的地址,然后在PHY存放器中就啟動一個讀操作。同樣的,在傳輸過程中應用程序不能改變MII地址存放器中的內容或者MII數據存放器中的內容。同時在讀操作過程中,對MII地址存放器和MII數據存放器的寫操作也會被忽略〔Busybit為高,即為1〕,保證傳輸過程不過失,能夠正確完成。讀操作完成后,SMI復位Busybit,然后用從PHY中讀到的數據來更新MII數據存放器。圖4.5SMI讀操作4.2STM32串口通訊STM32的串口是相當豐富的,功能也很強勁。最多可提供5路串口〔MiniSTM32使用的是STM32F103RBT6,具有3個串口〕,有分數波特率發生器、支持單線光通信和半雙工單線通訊、支持LIN、智能卡協議和IrDASIRENDEC標準〔僅串口3支持〕、具有DMA等。圖4.5485電路串口最根本的設置,就是波特率的設置。STM32的串口使用起來還是蠻簡單的,只要你開啟了串口時鐘,并設置相應IO口的模式,然后配置一下波特率,數據位長度,奇偶校驗位等信息,就可以使用了。下面,我們就簡單介紹下這幾個與串口根本配置直接相關的存放器。1,串口時鐘使能。串口作為STM32的一個外設,其時鐘由外設時鐘使能存放器控制,這里我們使用的串口1是在APB2ENR存放器的第14位。APB2ENR存放器在之前已經介紹過了,這里不再介紹。只是說明一點,就是除了串口1的時鐘使能在APB2ENR存放器,其他串口的時鐘使能位都在APB1ENR。2,串口復位。當外設出現異常的時候可以通過復位存放器里面的對應位設置,實現該外設的復位,然后重新配置這個外設到達讓其重新工作的目的。一般在系統剛開場配置外設的時候,都會先執行復位該外設的操作。串口1的復位是通過配置APB2RSTR存放器的第14位來實現的。APB2RSTR存放器的各位描述如下:圖4.6存放器APB2RSTR各位描述從上圖可知串口1的復位設置位在APB2RSTR的第14位。通過向該位寫1復位串口1,寫0完畢復位。其他串口的復位位在APB1RSTR里面。

3,串口波特率設置。每個串口都有一個自己獨立的波特率存放器USART_BRR,通過設置該存放器到達配置不同波特率的目的。該存放器的各位描述如下:、圖4.7存放器USART_BRR各位描述前面提到STM32的分數波特率概念,其實就是在這個存放器里面表達的。最低4位用來存放小數局部DIV_Fraction,[15:4]這12位用來存放整數局部DIV_Mantissa。高16位未使用。這里波特率的計算通過如下公式計算。這里的pclkx〔x=1、2〕是給外設的時鐘〔PCLK1用于串口2、3、4、5,PCLK2用于串口1〕,USARTDIV是一個無符號的定點數,它的值可以有串口的BRR存放器值得到。而我們更關心的是如何從USARTDIV的值得到USART_BRR的值,因為一般我們知道的是波特率,和PCLKx的時鐘,要求的就是USART_BRR的值。

下面我們來介紹如何通過USARTDIV得到串口USART_BRR存放器的值,假設我們的串口1要設置為9600的波特率,而PCLK2的時鐘為72M。這樣,我們根據上面的公式有:USARTDIV=72000000/9600*16=468.75

那么得到:DIV_Fraction=16*0.75=12=0X0C;

DIV_Mantissa=468=0X1D4;這樣,我們就得到了USART1->BRR的值為0X1D4C。只要設置串口1的BRR存放器值為0X1D4C就可以得到9600的波特率。

4,串口控制。STM32的每個串口都有3個控制存放器USART_CR1~3,串口的很多配置都是通過這3個存放器來設置的。這里我們只要用到USART_CR1就可以實現我們的功能了。圖4.8存放器USART_BRR各位描述BIT13:串口功能;

BIT12:MODE,字長。0:

1個開場位,8個數據位,1位停頓位〔默認〕;1:

1個開場位,9位數據位,1位停頓位〔默認〕;

*注意:停頓位的長度可在USART_CR2存放器中設置。

BIT11:WAKE喚醒功能

BIT10:校檢使能位,當激活奇偶校驗功能時,置位該位將自動往要傳輸數據的高位字節處插入就校驗位。

BIT09:ParitySelection,0:偶校驗;1:奇校驗。

BIT08:PEInterruptEnable

BIT07:發送緩沖區空中斷使能位BIT06:發送完成中斷使能位BIT05:接收緩沖區非空中斷使能位BIT04:IdleInterruptEnable

BIT03:TransferEnable

BIT02:ReceiveEnable

BIT01:ReceiverWakeup

BIT00:SendBreak5,數據發送與接收。STM32的發送與接收是通過數據存放器USART_DR來實現的,這是一個雙存放器,包含了TDR和RDR。當向該存放器寫數據的時候,串口就會自動發送,當收到收據的時候,也是存在該存放器內。該存放器的各位描述如下:圖4.9存放器USART_DR各位描述可以看出,雖然是一個32位存放器,但是只用了低9位〔DR[8:0]〕,其他都是保存。DR[8:0]為串口數據,包含了發送或接收的數據。由于它是由兩個存放器組成的,一個給發送用(TDR),一個給接收用(RDR),該存放器兼具讀和寫的功能。TDR存放器提供了內部總線和輸出移位存放器之間的并行接口。RDR存放器提供了輸入移位存放器和內部總線之間的并行接口。當使能校驗位(USART_CR1種PCE位被置位)進展發送時,寫到MSB的值(根據數據的長度不同,MSB是第7位或者第8位)會被后來的校驗位該取代。當使能校驗位進展接收時,讀到的MSB位是接收到的校驗位。6,串口狀態。串口的狀態可以通過狀態存放器USART_SR讀取。USART_SR的各位描述如下:圖4.10存放器USART_SR各位描述這里我們關注一下兩個位,第5、6位RXNE和TC。RXNE〔讀數據存放器非空〕,當該位被置1的時候,就是提示已經有數據被接收到了,并且可以讀出來了。這時候我們要做的就是盡快去讀取USART_DR,通過讀USART_DR可以將該位清零,也可以向該位寫0,直接去除。TC〔發送完成〕,當該位被職位的時候,表示USART_DR內的數據已經被發送完成了。如果設置了這個位的中斷,則會產生中斷。該位也有兩種清零方式:1〕讀USART_SR,寫USART_DR。2〕直接向該位寫0。DM9161用法介紹DM9161AEP是一款完全集成的和符合本錢效益單芯片快速以太網PHY,是采用較小工藝0.25um的10/100M自適應的以太網收發器。DM9161AEP通過可變電壓的MII或RMII標準數字接口連接到MAC層,支持HPAuto-MDIX?。是目前常見的一款物理層收發器,由于全球的MCU集成度不斷提高,由早先的MAC+PHY+MII的衍生到現在的PHY,在以太網局部的本錢,逐漸降低。有如下特點1.48pinLQFP封裝2.制作工藝:0.25um,IO供電電壓3.3V,模擬局部2.5V3.支持MII和RMII連接方式〔推薦使用MII〕4.支持雙絞線自適應〔AUTO-mix〕5.支持TCP/IP硬加速6.與全球95%的廠家的MCU完全兼容,是ATMEL推薦使用的單口PHY。注:目前DM9161AEP支持的溫度范圍是0-75°,而工業級的DM9161BIEP是支持-40°到85°。在應用過程中,DM9161AEP常出現的錯誤是,晶振的連接,以及網絡變壓器的匹配,所以應該慎重選擇。DM9161引腳圖如下所示:圖4.11DM9161引腳圖4.3.1DM9161引腳說明16腳TXER/TXD[4]:輸入腳,傳輸錯誤或者是第五個TXD數據位,在100兆模式下,此腳為高,同時TXEN為高,暫停信號代替實際的數據。在10兆模式下這個輸入腳被忽略,在旁路模式下〔旁路4B5B〕此腳變成TXD[4]腳,第五個TXD的數據of5B信號。20,19,18,17腳TXD[0:3]發送數據,4位數據輸入〔與TXCLK同步〕在10兆或者100兆的半字節模式,在10兆的GPSI模式〔7線〕下,TXD[0]被用作串行數據輸入腳,TXD[1:3]被忽略。輸入腳即芯片發送數據給它,它接收后再發送。21腳TXEN:傳輸使能,高電平表示TXD[0:3]上數據是合法的在10兆或者100兆模式下。在10兆的GPSI模式〔7線〕下,高電平顯示TXD[0]上數據合法。22腳TXCLK/ISOLATE:輸出腳,當剛上電時是輸入腳,拉低,發送時鐘腳,為TXEN,TXD,andTXER.TXCLK的傳輸提供時鐘參考,有PHY提供。25MHZ是100兆半字節模式,2.5兆是10兆半字節模式,10兆是10兆GPSI(7-Wired)mode〔說是7線好似只用單線傳輸〕。ISOLATE的設置是:當上電復位時是輸入,0:存放器0.10將被初始化成0,1:存放器0.10將被初始化成1.24腳MDC:輸入腳,管理數據的時鐘腳,MDIO管理數據的同步時鐘,這個時鐘由管理芯片提供,最大12.5MHZ.25腳MDIO:輸入/輸出腳,雙向的管理數據可能被管理芯片或者PHY提供。29,28,27,26RXD[0:3]/PHYAD[0:3]:三態輸出,上電輸入,拉低,在10/100兆MII模式四位輸出〔與RXCLK同步)。在10兆的GPSI模式〔7線〕下,RXD[0]腳是串行數據輸出腳,RXD[1:3]areignored,PHYaddress[0:3],上電復位成輸入腳,PHY地址檢測輸入腳。32腳MDINTR:輸入/輸出,上電輸入,拉低,狀態中斷輸出腳,當有一個狀態改變〔包括link,speed,duplexdependoninterruptregister[21]〕即由狀態改變同時中斷也設置了,才會輸出。如果原來是低,則中斷時輸出高,如果是高則中斷時輸出低。34腳RXCLK/10BTSER:三態輸出腳,上電輸入,拉高,接收時鐘由PHY提供時間參考為RXDV,RXD,andRXER.。PHY可能從接收的數據中恢復RXCLK參考,或者從25MHZ在100MMII模式下,2.5MHZ在10MMII模式下,10MHZ在10MbpsGPSI(7-Wired)mode。10BTSER僅支持10M模式〔上電輸入〕,0=GPSI(7-Wired)modein10Mmode,1=MIImodein10Mmode35腳CRS/PHYAD[4]:三態輸出,上電輸入,拉低,載波感應檢測或者PHYAD[4],在10BASE-T或者100BASE-TX的半雙工模式下,高電平表示載波的存在是因為接收或者傳輸有效〔正在進展中〕在repeater或者全雙工模式下,這個信號置高顯示載波的存在僅僅因為接收有效此腳作為PHYAD[4]〔上電輸入〕PHY地址感應輸入腳。36腳COL/RMII:三態輸出,上電輸入,拉低,沖突檢測,在10M或者100M的半雙工模式,高電平顯示沖突狀態,在全雙工模式,此腳一直為低。簡化的MII使能腳,此腳也用來選擇正常的MII或者簡化的MII,(上電是輸入),0是正常的MII(默認),1是簡化的MII,此腳經常被拉低,除非用于簡化的MII。37腳RXDV/TESTMODE:三態輸出,上電輸入,拉低,接收數據合法,高電平顯示合法的數據在RXD[0:3]中,測試模式控制腳〔上電輸入〕0是正常的操作〔默認〕1為測試模式使能。38腳RXER/RXD[4]/RPTR:三態輸出,上電輸入,拉低,接收數據錯誤或者5B情況下第五個接收數據位,高電平顯示一個不合法的符號被檢測到,在解碼旁路模式〔旁路4B5B〕RXER變成RXD[4],5B符號的第五個接收數據位。這個腳也可以用來選擇RepeaterorNodemode.〔上電輸入〕0NodeMode(default),1RepeaterMode.31LEDMODE:LED模式選擇,0,支持雙燈,1正常的燈40RESET#:低電平用來初始化DM9161A3,4腳RX+RX-:輸入腳,差分數據從媒體被接收7,8腳TX+TX-:輸出腳,差分傳輸對,差分數據被傳輸到媒體,在TP模式下。11腳LED0/OP0:輸出腳,上電輸入,上拉。LED驅動輸出0,op0:上電復位輸入,此腳用來控制強制的或者是公布的操作模式,在上電后此值被寫入存放器。12腳LED1/OP1:輸出腳,上電輸入,上拉。LED驅動輸出1,op1:上電復位輸入,此腳用來控制強制的或者是公布的操作模式,在上電后此值被寫入存放器。13腳LED2/OP2:輸出腳,上電輸入,上拉。LED驅動輸出2,op2:上電復位輸入,此腳用來控制強制的或者是公布的操作模式,在上電后此值被寫入存放器。10腳PWRDWN:輸入腳,掉電控制,高電平強制芯片到掉電模式,在掉電模式下大局部芯片的模塊被關電,僅MII管理接口〔MDC,MDIO)可利用〔PHY對管理傳輸有用,在MII上不會產生假信號〕,要想離開掉電模式必須用軟件或者硬件復位讓PWRDWN腳為低。14腳CABLESTS/LINKSTS:輸出腳,上電輸入,下拉,CableStatusorLinkStatus,此腳用來顯示上電復位為輸入的時候Cable是否是連接狀態,0沒有Cable連接,1有Cable連接。此腳也被用來顯示上電復位輸入為高的時候LINK的連接狀態,0有LINK,1沒LINK39DISMDIX:HP自動翻轉,1自動模式失效,0使能HP自動翻轉4.3.2DM9161標準協議說明DM9161A,快速以太單芯片傳輸,按IEEE802.3u,標準,完整的100Base-TX模式和10Base-T模式,芯片提供一個MII借口按標準IEEE802.3u,包含功能:圖4.12DM9161標準協議TXD是4位半字節數據,被TXCLK驅動,在TXEN使能情況下,每一個TXCLK始終TXD(3:0)通過PHY被接收TXCLK〔傳輸時鐘〕不連續時鐘提供時間參考為TXEN,TXD,andTXER信號。TXEN傳輸使能,從物理層輸入,顯示物理層MII接口傳輸是存在的。TXER〔傳輸碼錯誤〕與TXCLK同步,如果TXER在一個或多個時鐘中置位,同時TXEN置位,PHY將發出一個或更多的信號在正在傳輸的數據幀中。RXD,4位數據被采樣與RXCLK同步,每一個RXCLK,RXDV被置位,RXD(3:0)被傳輸從PHY到物理層。RXCLK〔接收時鐘〕輸出到物理層的不連續時鐘為RXDV,RXD,andRXERsignals.提供參考。RXDV〔接收數據合法〕從PHY輸入,顯示PHY存在恢復的和解碼的半字節數據在物理層上,為了正確的被層解釋接收幀,RXDV必須圍繞著幀,開場不能晚于開場幀分隔符,不包括任何完畢幀分隔符RXER〔接收錯誤〕轉變與RXCLK同步,RXER將被置位在一個或更多的時鐘周期當檢測到任何一個錯誤在從PHY到物理層的被傳輸過程中。CRS〔載波感應〕當傳輸或者接收中繼沒有空閑時有效〔置高〕,當傳輸或者接收空閑時無效〔置底〕,100Base-TX發射機接收4位數據在25M,輸出一個5位編碼MLT-3信號到媒介在100M,芯片把25M在內部變成125M供內部使用。圖4.13DM9161標準協議框圖100Base-TX發射器如上圖:把MII提供的數據4位同步數據轉換后到SCRAMBLER,MLT-3.一百萬個符號每秒。4.4本章小結本章詳細介紹了本設計所要用到的硬件模塊STM32107作為主控制器,DM9161作為網絡控制模塊,用串口傳輸數據。5以太網協議5.1TCP/IP協議TCP/IP協議是由一系列網絡協議組成的協議族,從名字可以看出TCP/IP協議族中最重要的且根本的兩個協議為TeP(腸ansmissionControlprotoeol,傳輸控制協議)和IP(InternetProtoeol,網絡互聯協議)"TCP/IP協議是當今互聯網的基石"最早的TCP/IP由文頓#瑟夫(VintonCerf)和羅伯特#卡恩(RobertKahn)開發出來,由于其優越的性能,應用范圍逐漸擴大,20世紀90年代中期,由于HTML(Hyper介xtMarkupLanguage,超文本描述語言)技術以及瀏覽器的出現,使得互聯網飛速開展起來"TCP/IP對于低層(物理層與數據鏈路層)協議的支持非常好,常用的低層協議幾乎都支持TeP/IP,如以太網!端對端協議(point一to一pointprotoeol,ppp)#光纖分布式數據接口!令牌環網等"TCP/IP協議并不完全遵循傳統051參考模型的七層構造"它包括應用層!傳輸層!網絡層!鏈路層,每一層都調用它的下一層所提供的網絡來完成自己的需求"TCP/IP協議通常被看作是一個四層構造的網絡,如圖5.1所示。圖5.1TCP/IP四層構造應用層:該層包含與應用程序協同工作的各種協議,這些協議利用底層網絡來傳輸應用程序發送與接收的數據"應用層的處理過程如下:數據從應用程序開場傳送,開場時數據格式為這個應用程序的內部格式,然后數據被編碼為協議的標準格式,編碼完成后,數據便被傳輸到TCP/IP協議棧中應用層的下一層"。傳輸層:傳輸層的協議,能夠解決端到端可靠性(即數據是否已經到達目的地)!保證數據按照正確的順序到達此類的問題"在通用的TCP/IP協議族中,傳輸層協議也包括所給數據應該送給哪個應用程序"常用的傳輸層協議有TCP和UDP"其中TCP是一個可靠的!面向連接的傳輸機制,它能保證數據完整!無損并且按順序到達"而UDP是一個無連接的不可靠的數據報協議"它既不檢查數據包到達目的地與否,也不保證它們到達的順序"。網絡層:網絡層也稱作IP層或互聯網層,它負責處理數據分組的選路等數據分組在網絡中的活動"在TCP/IP協議棧中,網絡層的協議有IP!ICMP(InterneteontrolMessageProtoeol,互聯網控制報文協議)和IGMp(IntemetGroupManagementprotocol,互聯網組管理協議)"Ip是TeP/lP協議族中最為核心的協議"所有的TCP!UDP!ICMP及IGMP數據都是以IP數據報的格式傳輸的"。鏈路層:鏈路層有時也稱作數據鏈路層或網絡接口層"它是數據包在幾個設備的網絡層間傳輸所用的方法"這個方法由網絡設備驅動程序及網絡接口卡實現。5.2嵌入式TCP/IP協議棧要在嵌入式系統中實現上述TCP八P協議,主要有兩種方案:一種是硬件實現,將TCP/IP協議棧固化在芯片中,對外提供協議棧的編程接口,如博控自動化公司的TCP/IP協議棧芯片WS100"使用時將芯片連接到微處理器CPU上,在應用程序中直接調用協議棧的API(卻licationInterface,應用程序接口)函數,這種方案的優點是應用簡單,缺點是價格昂貴;另一種是軟件實現,即在嵌入式系統中參加TCP江P協議棧代碼"這種方式的優點是可定制性強!本錢低,缺點是開發階段工作量較大"本文選用軟件實現方案"大多數PC操作系統如WindowS及Linux操作系統都內置完整的TCP/IP協議棧"而對于小型嵌入式系統,由于資源有限,通常不能直接使用通用TCP/IP協議棧"利用嵌入式系統實現嵌入式以太網通信的技術難點是:如何利用嵌入式系統有限的資源對信息進展處理,使之變成可以在互聯網上傳輸的數據包"為了實現這個目的,很多人做了大量的工作"具有代表性意義的嵌入式TCP/IP協議棧是Bso4.4(BerkeleysoftwareoistributionVersion4.4,伯克利軟件套件)的TCP/IP源代碼進展裁剪或與移植得到的TCP/IP協議棧"以下是對幾種常用的嵌入式協議棧的分析。LinuxTCP/IP協議棧:它的特點是與Linux系統的關系密切,只能在Linux系統或與Linux系統兼容的系統如協cLinux中使用"它體積比擬大,功能完善,支持BsD的套接字,應用廣泛,有大量資料可供參考[25,261"但它的兼容性與體積都使得它在本工程中的應用成為不可能。pc/IP協議棧:pe/IP是Mierium公司為協C/05系統專門設計的TCP/IP協議棧,體積也同pC/OS一樣比擬小,是可裁減的協議棧"它的缺陷是它只能局部實現TCP/IP協議,對網絡應用的支持缺乏,功能不夠完善"而且這是一個付費的TCP/IP協議棧"對本文來說也同樣不適宜。ulP協議棧:ulP不同于LinuxTCP/IP協議棧及pc/lP協議棧的一點是它的操作系統無關性,可以在沒有操作系統的情況下運行,也可以移植到各種操作系統中"缺點是移植過程復雜,應用程序接口也較復雜,而功能卻比擬簡單,甚至不支持BSD套接字"在專變采集終端中,對網絡性能的要求較高,所以也不適合采用ulP協議棧"LwIP(LightweightTeP/xP,輕量級TCP/xp)協議棧:與uIP協議棧一樣,LwIP也具有操作系統無關性跟可移植性"但與uIP協議棧相比,LwIP移植過程簡單,應用層接口方式多種多樣,且支持BSD套接字"同時,它還有體積小,內存小的特點"雖然它也只能局部地實現TCP/IP議棧,但能滿足本文中專變采集終端以太網通信的全部要求"由以上比擬可知,針對微處理器STM32F107,采用LwIP協議棧是比擬適宜的。5.3LwIP設計LwIP是瑞士計算機科學院的AdamDunkelS等人開發的一套TCP八P協議棧,它主要關注的是怎么樣減少內存的使用和代碼的大小,這樣就可以讓lwIP適用于資源有限的嵌入式系統"LwIP是一種可以在前后臺系統(無操作系統)中運行的協議棧"同時,依賴它提供的操作系統模擬層,也可以容易地將其移植到各種操作系統中"另外,這個協議棧是開放源碼的,對于TCP/IP協議棧的研究很有幫助。LwIP能實現大多數TCP/IP協議棧的常用功能,它還支持IP片,TCP中提供阻塞控制!快速恢復等功能,支持IPv6(IntemetProtoeolversion6,網際網絡通信協議第6版)"它還提供了豐富的應用程序接口。5.3.1LwIP與應用程序接收到的數據暫存在分開的較小的內存塊中,但是許多應用程序都需要在一塊連續的內存區域內處理數據,因此就需要一個專門的函數來負責從這些不連續的緩沖區內復制數據到一個連續的內存區。LwIP的進程模型:所有的TCP/IP協議獨立于操作系統內核之外,駐留在同一個進程的方式,TCP/IP協議棧和操作系統內核分開了,應用層程序既可以是單獨的進程也可以是駐留在LwIP的進程中。應用程序與LwIP協議棧一般使用兩種方式通信,而如上述所說的,應用程序駐留在LwIP的進程中時,一般是采用函數調用的方式,而另一種是使用API。5.3.2LwIP與底層網絡設備驅動是底層硬件和整個軟件局部的接口,需要對外部的PHY進展控制,尤其是存放器的配置,來實現數據的發送和接收,并為上層協議提供訪問的方法。主要的工作包括初始化,設備的翻開和關閉,數據包的發送和接收,中斷處理等。而其中LwIP提供了一些網絡驅動的模型。使用LwIP提供的API做一些網絡驅動時,需要對LwIP協議棧進展初始化,用一個網絡接口的初始化函數來完成底層網絡的初始化功能做,添加并配置底層網絡接口,建設底層的接收或發送線程,創立TCP/IP線程等。LwIP的底層接口初始化其實就是對數據鏈路層和物理層功能的實現。需要做幾個方面的動作:LwIP的初始化、網絡層設備的初始化、以太網控制器的初始化等。如圖5.2所示,網絡模塊的初始化函數的流程是首先是LwIP協議棧的初始化,再進展數據鏈路層發送接收線程的創立,之后進展網絡層設備的初始化。圖5.2LwIP底層接口初始化而進展LwIP協議棧初始化時,先初始化LwIP統計信息,初始化操作系統的仿真層,再進展初始化存儲管理構造,最后創立TCP/IP線程。LwIP協議棧的初始化中可以調用LwIP協議棧所提供的API來實現。以太網控制器的初始化中,對于STM32F107,需要在初始化中進展設定網卡的MAC地址,初始化網卡,建設穩定的物理層和數據鏈路層。然后開場向LwIP注冊鏈路層發送函數,創立承受線程。而網卡初始化過程中需要進展幾個步驟:關閉FEC模塊關閉中斷注冊中斷向量和中斷處理函數開啟中斷設置MAC地址和Flash存放器設置發送控制存放器和接收控制存放器初始化發送函數和接收函數開啟FEC模塊在硬件模塊完成了物理層和數據鏈路層的構建,這時,需要一方面從MAC中提取數據局部,然后傳送給LwIP協議棧線程進展處理,一方面要把上層中的IP數據包傳送給硬件模塊,通過硬件模塊把數據封裝成MAC幀發送到物理網絡上。這個過程中為了減少中斷處理程序的反復使用,可以將底層數據到LwIP協議棧的數據傳送工作獨立出來,獨立出一個接收線程和一個發送線程來完成。接收線程和發送線程與底層驅動中數據收發的同步可以利用信號量的機制來實現。5.4本章小結本章介紹了本設計中所涉及的相關網絡協議,通過對這些網絡協議的學習和理解將為后續的程序編寫打下根基。6軟件設計系統軟件總體構造如圖所示,整個程序是圍繞stm32f107單片機設計的,軟件程5化子程序、RS232數據采集子程序和RS485通訊子程序。主程序主程序RS232通訊子程序網口通訊子程序I/O口數據處理子程序系統初始化子程序RS232通訊子程序網口通訊子程序I/O口數據處理子程序系統初始化子程序圖6.1LwIP系統軟件總體構造6.1主程序設計主程序流程圖如圖6.2所示。系統運行后進入主程序,首先對系統硬件進展初始化,而后再對網絡進展初始化,然后檢查網絡連接是否正常,在連接正常的情況下進展周期運行顯示。局部代碼如下所示:圖6.2主程序流程圖intmain(void){ System_Setup();//系統的時鐘、以太網、I/O口、中斷和外設設置 Show_Msg(); TIMConfiguration(); LwIP_Init();//網絡初始化IP地址分配 Check_ETH_PHY();//檢查以太網連接 ETH_To_UART_init(); d_init(); USART_ITConfig(USART2,USART_IT_RXNE,ENABLE); while(1) { System_Periodic_Handle();//系統周期運行顯示 delay_ms(200); USART3_Put_Char(0x21); }}6.2系統初始化子程序系統初始化子程序主要完成系統上電后,硬件初始化,時鐘頻率的設置,中斷初始化和中斷優先級的設置,串行通訊口的初始化配置。同時,在這個子程序中對本設計所涉及的I/O口進展了總體配置。系統初始化子程序的代碼如下所示:voidSystem_Setup(void){RCC_ClocksTypeDefRCC_Clocks;SystemInit();USART_COM1_Init();USART_COM3_Init();RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);RCC_AHBPeriphClockCmd(RCC_AHBPeriph_ETH_MAC|RCC_AHBPeriph_ETH_MAC_Tx|RCC_AHBPeriph_ETH_MAC_Rx,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOE|RCC_APB2Periph_AFIO,ENABLE);NVIC_Configuration();GPIO_Configuration();Ethernet_Security();}6.3RS232通訊子程序RS232子程序完成了串口最根本的設置,就是波特率的設置。其中包括對端口的使能復位和控制,具體代碼如下所示:USART_InitStructure.USART_BaudRate=115200;USART_InitStructure.USART_WordLength=USART_WordLength_8b;USART_InitStructure.USART_StopBits=USART_StopBits_1;USART_InitStructure.USART_Parity=USART_Parity_No;USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;USART_InitStructure.USART_Mode=USART_Mode_R

溫馨提示

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

最新文檔

評論

0/150

提交評論