web嵌入式伺服器搭建stm
Ⅰ 如何在IAR EWARM下建立工程和配置STM32開發環境
一、生成一個新項目
要使用IAR進行STM32嵌入式系統開發,必須從建立一個項目(project)開始,下面以在E:\下建立一個名為Example的項目為例介紹。
1. 創建項目目錄、復制公共文件
(1)在E盤下創建名為的Example文件夾,即項目根目錄為E:\Example。
(2)在項目根目錄下建立一個EWARMv5文件夾用於存放項目文件、工作空間文件和項目配置相關文件。
(3)解壓標准外設驅動文件庫(stm32f10x_stdperiph_lib_V3.1.2.zip),將其中的「Libraries」文件夾復制到Example目錄下。
(4)復制標准外設驅動庫目錄Project\Template下的stm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it.h三個文件到Example文件夾下。main.c可以不用復制,我們自己寫。
復制標准外設驅動庫目錄Project\Template\EWARMv5下的stm32f10x_flash.icf、stm32f10x_flash_extsram.icf、stm32f10x_nor.icf和stm32f10x_ram.icf到Example\EWARMv5文件夾下。
復制好的目錄如圖1所示。
圖1. Example文件夾下的文件
2. 創建新的工作空間
嵌入式系統開發大都是面向項目(Project)的,需要建立Project來管理項目開發。IAR EWRAM又是基於工作空間(Workspace)的集成開發環境,Project必須放在工作空間裡面,所以我們首先應該建立工作空間。一個工作空間裡面可以放多個項目。
開始?程序?IAR Systems?IAR Embedded Workbench,進入IDE環境。File ?New?Workspace。
這樣工作空間就建好了,但是這個工作空間裡面還沒有項目,所以還不能保存,下面將在這個工作空間裡面建立新項目。
3. 創建新項目
在上面第2步已經建立好的工作空間里創建新項目。
Project?Create New Project。彈出「Create New Project」對話框,「Tool Chain」選擇ARM,「Project Template」選擇Empty project模板,這樣所有的文件都由用戶自己來寫。點擊OK,彈出「另存為…」對話框,選擇我們剛剛建好的Example目錄下的EWARMv5文件夾下,然後輸入工程名 ,這里我輸入Template,然後點擊保存。這樣一個名為Template的IAR EWARM項目就建好了,下面我們添加一些文件,然後再修改一些參數,使得這個項目真正地能夠使用。
4. 添加文件到項目
(1)文件分組
按說現在就可以往項目裡面添加文件了,但是由於ARM系統開發涉及文件較多,類型繁雜,加上我們使用ST公司的標准固件庫驅動文件,這樣就要添加很多文件到項目里,隨著項目的復雜程度加大,文件的數量是很多的。為了便於管理,我們將這些文件在項目里分組保存,IAR EWARM支持文件分組。
在IDE左側的Workspace裡面,我們在剛剛建立的Template項目上點右鍵,選擇Add? Add Group…。在彈出的對話框裡面輸入組名(Group Name),點OK即可。我們將添加如下幾個組,如圖2所示。
從圖2可見,項目名字後面有個星號(*),這是說明項目或工作空間已經修
改,但是還沒有保存,現在點File?Save All,這時彈出對話框讓我們保存工作空間。還記得工作空間嗎?第2步我們新建的工作空間,但是當時沒有保存,因為當時工作空間裡面沒有項目,不能保存。輸入工作空間名Template,然後點保存,這時候項目後面的星號*消失。
註:工作空間擴展名.eww,項目擴展名
Ⅱ 物聯網(二)---原理分析[STM32+OneNET+ESP8266]
物聯網(一)---快速上手[STM32+OneNET+ESP8266]
物聯網(二)---原理分析[STM32+OneNET+ESP8266]
物聯網(三)---WEB下發命令控制單片機[STM32+OneNET+ESP8266]
物聯網(四)---搭建自己的TCP伺服器[ESP8266]
物聯網(五)---搭建自己的雲平台[ESP8266+Django]
上圖:
圖片上信息已經很豐富了,這里再稍微解釋一下。
單片機通過串口先發送 AT指令 給 ESP8266 完成參數配置,配置完成後將 ESP8266 斷電重啟一次,以使配置生效(這一步可由 AT指令 完成)。
ESP8266 重啟後將會自動連接 AT指令 所指定的 WIFI 名稱,連接成功後會通過串口返回 OK ,程序中可以通過檢測是否返回 OK 來判斷是否成功連接網路,下面使 ESP8266 的初始化程序。
你可能注意到有一個 1000ms 的延時,這個是為了等待完成數據發送、接收。
伺服器再接收到數據後會對所提交的數據做出響應。提交成功後,伺服器會返回數據如下:
這里多 ESP8266 也產生了一個 WIFI 信號,這是由於使用了 AT指令 配置了 AP+STA 模式, ESP8266 在這里可以充當一個中繼的角色.
這里要注意的是,必須選擇你電腦熱點的介面,不能是其他介面,否則數據是無法查看到的,這里我選擇的是我電腦的熱點。
下面的 {"errno":0,"error":"succ"} 也恰好和我們前面串口助手裡看到的信息相符合。
如果和上一片文章一樣配置好了的話,就可以在伺服器端OneNET上查看數據了,像下面這樣。
Ⅲ 基於keil MDK給stm32編程的問題。。。嵌入式系統開發環境的搭建
您好,一、【安裝STM32庫】 將下載後的stm32f10x_stdperiph_lib.zip解壓後得到三個文件夾分別是:"Libraries"、"Project"、"Utilities"將這3個目錄復制到"Keil uVision4"的安裝目錄,和目錄中的文件覆蓋合並。二、【新建工程】 1、打開"Keil uVision4",在Project菜單中選擇新建工程,選擇工程要保存的位置,在彈出的「Select Device for target」的對話框中選擇使用的STM32單片機的型號如「STM32F103C8」,點確定,然後在彈出的「Copy startup code」的對話框中點選"NO".
2、在Project「Target 1」上點選右鍵菜單「Option for target target1中設置相關參數」在[Output]選項卡中點選「Create HEX file」,點"Select folder for objects"設置臨時生成的obj文件的存放目錄,當然也可以不選擇;
3、在[C/C++]選項卡的"Preprocessor Sysmbols"的Define框中做如下定義:USE_STDPERIPH_DRIVER,STM32F10X_MD
其中USE_STDPERIPH_DRIVER表明要使用ST提供的庫,在"system_stm32f10x.c"文件中包含的"stm32f10x.h"文件中有如下定義:
#ifdef USE_STDPERIPH_DRIVER #include "stm32f10x_conf.h"#endif在[C/C++]選項中添加的USE_STDPERIPH_DRIVER宏就是這個作用,用來包含"stm32f10x_conf.h"這個文件被稱為"Library Configuration file"用來配置你需要使用到庫的那些文件的,例如需要使用到GPIO就應在在這個文件中加上#include "stm32f10x_gpio.h"這個文件可以在STM32庫的給出的常式中找得到(C:\Keil\ARM\Project\STM32F10x_StdPeriph_Examples)另外還需要在常式中復制"stm32f10x_it.c"和"stm32f10x_it.h"這2個文件,這2個文件時用來完成STM32中重中斷服務程序的將一下三個文件復制到自己工程的user目錄下供以後使用:"stm32f10x_conf.h"、"stm32f10x_it.c"、"stm32f10x_it.h"STM32F10X_MD 表明使用的是STM32F10X系列的CPU而該CPU的Flash代碼密度是中等(Medium-density devices)這個和使用的CPU相關的查閱CPU的手冊就可以得到。
然後在該選項卡的下方的"Include Paths"中設置include使用的路徑等,如下圖所示:其中.\user路徑是用來保存自己定義的頭文件的路徑4、[Debug]選項卡選擇使用"Cortex-M/R J-Link/J-Trace",然後點"Settings"按鈕在新打開的對話框中選擇[Flash Download]選項卡點"Add"按鈕添加編程使用的Flash,在本例中選用的CPU是STM32F103C8,其Flah為Medium-density使用片上的Flash型號為"STM32F10X Med-density Flash On-chip-Flash 128K",最終點OK保存設置。5、[Utilities]選項卡中的"Use Target Device for Flash Programing"要選擇和[Debug]選項卡中一樣的調試器"Cortex-M/R J-Link/J-Trace";6、然後再次在左側的"Target 1"上點選右鍵,在菜單中選擇"Manger Components"然後在"Project components"選項卡的"Group"中新建3個組名稱分別為"user"、"libs"、"cmsis"1、 分別用來保存用戶自己的C文件、stm32f10x_stdperiph_lib的庫、和cortex-m3的啟動文件等。
users:
Keil\ARM\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\ system_stm32f10x.c (stm32f10x_it.c該文件定義各種中斷的中斷服務函數)
libs:
Keil\ARM\ Libraries\ STM32F10x_StdPeriph_Driver\src\*.*
cmsis:
Keil\ARM\ Libraries\ CMSIS\ CM3\ CoreSupport\core_cm3.c
Keil\ARM\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\system_stm32f10x.c
keil\ARM\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm\startup_stm32f10x_md.s
(該文件和CPU的Flash的代碼密度相關,本例中的STM32F103C8是Medium-density故選用xxx_md.s)
Ⅳ STM32 WEB伺服器經常用到CGI SSI,可是為什麼這方面一個具體的應用教程都沒有
其實SSI跟asp差別蠻大的,ssi只能是在shtml文件載入的時候,其中的ss標簽被替換為其他內容,(何種標簽替換為何種內容 是用戶在LwIP協議中自定義的),而ASP、CGi是可以在html載入後動態調用的,他們才能實現完善的動態交互功能
至於如何入手,lwip的源碼裡面有詳盡的英文注釋,lz可以對著看看。
如果你想進行lwip 的CGI編程,建議你看看這么幾個文件:httpd.h httpd.c httpd_cgi_ssi.c
我剛好是先學習了普通的PC機上搭建 IIS 伺服器,學習html 、cgi、asp方面的知識,然後才接觸lwip,然後在別人搭建好的嵌入式伺服器上進行cgi編程,基本上手了。
硬體上的cgi編程更底層,而復雜,如果你難以入手,你可以在你的windows下搭建IIS伺服器,熟悉一下cgi,再轉stm32上實現