0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

STM32F407板子上搭建TCP Server及TFTP Server

STM32單片機 ? 來源:互聯(lián)網(wǎng) ? 作者:佚名 ? 2017-09-25 17:03 ? 次閱讀
開發(fā)平臺

STM32F407開發(fā)板(帶以太網(wǎng)),板子上的PHY為LAN8720A,沒有用到顯示屏全為串口輸出調(diào)試信息。

實現(xiàn)功能

通過STM32CubeMX在原子STM32F407板子上搭建TCP Server 及 TFTP Server ,實現(xiàn)這些功能非常簡單。

步驟

功能介紹、工程搭建、工程代碼、TFTP 服務(wù)器測試

1、TCP Server 實現(xiàn)顯示連接上的客戶端IP及對客戶端發(fā)來的數(shù)據(jù)回傳2、TFTP Server 實現(xiàn)IAP功能及讀取MCU內(nèi)部FLASH數(shù)據(jù)。這里用到的是文件傳輸協(xié)議,主要是參考官方文檔UM1709,及官STM324xG_EVAL的LWIP IAP例子。

工程搭建

外設(shè)配置

打開STM32CubeMX,點NEW PROJECT,在左側(cè)的輸入框中輸入407ZG,在右側(cè)會顯示STM32F407ZGT6的MCU列表,選擇此列表,雙擊。設(shè)置時鐘源為外部時鐘開啟SWD調(diào)試接口,開啟ETH外設(shè),選擇RMII接口(LAN8720A為RMII接口),中間件里時能LWIP。使用RMII接口的時候軟件會自動配置對應(yīng)的引腳,但是一定要仔細對比軟件配置的引腳是否為板子上硬件所連接的。

原子F407板子上的LAN8720A的RMII接口引腳如下圖,

  1. 配置時鐘外部高速晶振選擇為8M,PLL SORCE MUX 選擇為HSE,在HCLK處輸入168點回車,軟件會自動配置好

  2. 中間件配置這里主要配置,ETH、LWIP、串口1、GPIO

  3. 生成工程代碼

    點左上角的Project,選擇Settings...(不建議直接點黃色的齒輪),點擊OK。再點右上方的黃色齒輪即可生成工程代碼。

工程代碼

1、TCP Server 的實現(xiàn)

看起來代碼很多,其實真的不復(fù)雜。

大致流程:先新建一個TCB_PCB、開始監(jiān)聽、掛載客戶端連接請求回調(diào)函數(shù)、掛載接收數(shù)據(jù)回調(diào)函數(shù)、掛載發(fā)送完成回調(diào)函數(shù)、掛載出錯回調(diào)函數(shù)、掛載心跳包回調(diào)函數(shù)、關(guān)閉連接等,最重要的是釋放內(nèi)存!每收到一個數(shù)據(jù)鏈,它已經(jīng)被申請了內(nèi)存,所有在處理完這個數(shù)據(jù)后一定要釋放。

2、TCP服務(wù)器測試網(wǎng)絡(luò)調(diào)試助手連接TCP服務(wù)器(兩者必須在一個網(wǎng)關(guān)里面,192.168.000.XXX),網(wǎng)絡(luò)調(diào)試助手里選擇TCP客戶端,遠程主機IP為 192.168.0.120 , 端口號為7

詳細測試步驟請點擊閱讀原文下載。

通過測試,則表示TCP服務(wù)器已經(jīng)完成。您也可以通過手機連接這個路由器的WIFI,通過 網(wǎng)絡(luò)調(diào)試助手APP來連接這個開發(fā)板的服務(wù)器,電腦可以通過 TCP客戶端與開發(fā)板的TCP服務(wù)器連接同時也可以用手機做TCP客戶端連接開發(fā)板的TCP服務(wù)器

3、TFTP Server 的實現(xiàn)還是在上面的代碼上來實現(xiàn)此功能,即在TCP 服務(wù)器的代碼上實現(xiàn)TFTP 服務(wù)器。打開剛才STM32CubeMX工程,在原來的基礎(chǔ)上來配置LWIP。

因為是要通過TFTP 來實現(xiàn) IAP 功能 ,所有一定有FLASH 的操作,這里我們COPY官方例子里面的flash_if.c和flash_if.h

至此,TFTP服務(wù)器搭建完成,下載到開發(fā)板,串口顯示如下信息:Start 開始監(jiān)聽 掛載客戶端連接回調(diào)函數(shù) TFTP初始化成功 Static IP address: 192.168.0.120可以通過上面的TCP服務(wù)器測試步驟來測試TCP服務(wù)器功能,正常測試,工作正常,ping也能

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    12

    文章

    8701

    瀏覽量

    84567
  • STM32
    +關(guān)注

    關(guān)注

    2258

    文章

    10828

    瀏覽量

    352509
  • TFT
    TFT
    +關(guān)注

    關(guān)注

    10

    文章

    381

    瀏覽量

    110598
  • TCP
    TCP
    +關(guān)注

    關(guān)注

    8

    文章

    1324

    瀏覽量

    78759
  • STM32F4
    +關(guān)注

    關(guān)注

    3

    文章

    194

    瀏覽量

    27889

原文標題:基于STM32F407搭建TCP服務(wù)器及TFTP服務(wù)器

文章出處:【微信號:STM32_STM8_MCU,微信公眾號:STM32單片機】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    請問TCP server如何做到在AP偵聽?

    我現(xiàn)在的ESP8266是AP和STA共存模式,我按照sdk及sample中的示例建了一個TCP server,我的原意是這個TCP serer要在AP偵聽的,但是我發(fā)現(xiàn)它卻是STA接
    發(fā)表于 07-12 12:51

    請問esp8266 rtos sdk能否同時啟動tcp socke clent和udp server?

    我在用的是V1.5的rtos 的sdk,想在esp8266同時啟動tcp的socket client和udp的socket server。 但是我發(fā)現(xiàn),只要我一啟動upd server
    發(fā)表于 07-12 07:07

    STM32F407開發(fā)板移植了LwIP TCP,在while(1)里或者接收到數(shù)據(jù)后就什么也發(fā)不出來的原因?

    STM32F407開發(fā)板移植了LwIP TCP,當我想做客戶端的時候,在初始化階段使用函數(shù)tcp_write()就可以發(fā)送出來數(shù)據(jù),但是,當在while(1)里或者接收到數(shù)據(jù)之后,
    發(fā)表于 04-12 08:13

    如何在STM32F407移植lwip?

    如題,使用rt-thread操作系統(tǒng),在STM32F407如何移植lwip,下載了最新的rt-thread代碼,不知如何入手。 誰能幫幫我嗎,或者有沒有移植手冊發(fā)我看看。
    發(fā)表于 03-05 08:32

    stm32f407 double類型

    STM32F407是意法半導(dǎo)體(STMicroelectronics)推出的一款A(yù)RM Cortex-M4內(nèi)核的微控制器。它是針對智能電動車領(lǐng)域的實時操作、數(shù)字信號處理和高性能應(yīng)用而設(shè)計的。在這
    的頭像 發(fā)表于 01-07 16:45 ?2660次閱讀

    stm32f407 LAN8720A速率調(diào)整

    STM32F407是一款基于ARM Cortex-M4內(nèi)核的高性能微控制器,而LAN8720A是一款高速以太網(wǎng)PHY芯片。它們的組合可以實現(xiàn)在STM32F407使用以太網(wǎng)功能。 調(diào)整
    的頭像 發(fā)表于 01-05 13:54 ?2853次閱讀

    stm32f407浮點運算速度

    STM32F407 是 STMicroelectronics 公司推出的一款基于 ARM Cortex-M4 內(nèi)核的微控制器。它具有較強的處理能力和豐富的外設(shè)資源,在嵌入式系統(tǒng)中得到廣泛應(yīng)用。該芯片
    的頭像 發(fā)表于 01-04 10:58 ?2951次閱讀

    mysql和sql server區(qū)別

    MySQL和SQL Server是兩種常見的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS),用于存儲和管理數(shù)據(jù)庫。雖然它們都支持SQL語言,但在其他方面存在一些顯著的區(qū)別。以下是MySQL和SQL Server
    的頭像 發(fā)表于 11-21 11:07 ?1248次閱讀

    基于STM32F407的FreeRTOS學(xué)習(xí)筆記(9)

    在嵌入式編程中,定時器是一個非常重要且強大的功能,用來幫我們定時性的調(diào)用中斷服務(wù)函數(shù)來幫助我們處理程序。定時器通常是用硬件來實現(xiàn)的,例如STM32F407就有8個硬件定時器。
    的頭像 發(fā)表于 11-08 11:08 ?715次閱讀
    基于<b class='flag-5'>STM32F407</b>的FreeRTOS學(xué)習(xí)筆記(9)

    分享一種STM32F407的鎖相環(huán)PLL重新配置方法

    老農(nóng)最近搞基于STM32F407的IAP升級固件升級功能,遇到了這樣一個問題:IAP引導(dǎo)程序和APP程序都是基于STM32CUBEMX的程序模板生成,單獨調(diào)試運行APP功能也都正常,但是只要采用IAP方式將APP程序的bin文件燒寫到程序存儲區(qū),再跳轉(zhuǎn)到APP的地址運行就
    的頭像 發(fā)表于 10-30 17:30 ?1659次閱讀
    分享一種<b class='flag-5'>STM32F407</b>的鎖相環(huán)PLL重新配置方法

    基于STM32F407-LTC6804芯片的BMS方案

    本文介紹2款基于STM32F407的以凌力爾特(linear)LTC6804芯片為主的BMS方案。2款方案都是從板或者說是子板方案,都是要配套STM32F407主板來使用。理解后可以直接打樣制作,文末提供了整體方案的下載鏈接!
    的頭像 發(fā)表于 10-23 09:58 ?1522次閱讀
    基于<b class='flag-5'>STM32F407</b>-LTC6804芯片的BMS方案

    stm32f407的rj45接口,如何類似于串口一樣發(fā)送接收數(shù)據(jù)?

    stm32f407的rj45接口,如何類似于串口一樣發(fā)送接受數(shù)據(jù)?
    發(fā)表于 10-16 06:49

    rt-thread studio新建stm32f407工程

    rt-thread studio新建stm32f407工程,使用的版本是:2.2.6,stm32f4的支持包版本為0.2.2。先不用0.2.3,因為使用0.2.3建立的模板編譯會報錯。
    的頭像 發(fā)表于 10-12 17:42 ?1051次閱讀

    基于MM32F3270以太網(wǎng)Server使用

    基于MM32F3270以太網(wǎng)Server使用
    的頭像 發(fā)表于 09-27 15:46 ?412次閱讀
    基于MM32<b class='flag-5'>F</b>3270以太網(wǎng)<b class='flag-5'>Server</b>使用

    基于MM32F3270以太網(wǎng)Server_Socket使用

    基于MM32F3270以太網(wǎng)Server_Socket使用
    的頭像 發(fā)表于 09-27 15:41 ?393次閱讀
    基于MM32<b class='flag-5'>F</b>3270以太網(wǎng)<b class='flag-5'>Server</b>_Socket使用