你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

使用STM32F469I构建Mongoose嵌入式网络库

[复制链接]
点点&木木 发布时间:2019-3-2 18:27
本帖最后由 点点&木木 于 2019-4-12 11:31 编辑

Mongoose是目前最流行的开源嵌入式Web服务器和网络库,它支持mbed平台。

1.jpg



这个项目中使用的东西
硬件组件
STMicroelectronics STM32F469I-DISCO
ARM mbed平台支持的任何主板   × 1      
CC3100BOOST SimpleLink CC3100 Wi-Fi BoosterPack   
德州仪器CC3100BOOST SimpleLink CC3100 Wi-Fi BoosterPack    ×       1      



介绍
我将向您展示如何使用Mongoose ,这是最受欢迎的开源嵌入式Web服务器和网络库,其中ARM支持的任何ARM板mbed都连接到TI CC3100 WiFi子板。



布线
您需要做的就是用6根线将CC3100板连接到您的设备。将4条SPI线连接到SPI端口1的相应引脚。对于nHIB和IRQ线,您可以选择任何可用的GPIO。你可以很容易地找到SPI_MOSI,SPI_MISO,SPI_CLK,并SPI_CS与这幅画的帮助下板:

2.jpg
这是STM64的引脚图,因此您无需自己搜索:
3.jpg

该mbed平台将主SPI定义为:
  SPI_MOSI   = PB_15,
   SPI_MISO   = PB_14,
   SPI_SCK    = PD_3,
   SPI_CS     = PH_6,
这在技术上就是SPI2。可能是因为SPI1用于驱动LCD屏幕。

只需连接相同名称的电线,即SPI_MOSISTM32连接到SPI_MOSICC3100(没有交叉输入/输出; MOSI代表主输出从输入)。



HTTP服务器
该项目的目标是构建一个连接到WiFi网络并托管HTTP服务器的设备。设备将运行一些自定义代码以响应传入的请求,例如闪烁LED并生成一些回复。

我简化了一下我在这里介绍的来源; 只是为了避免分心。您可以在此处找到动态Web服务器示例的源代码。



int main() {
// configures networkinterface
SimpleLinkInterface wifi(PG_10, PG_11);  // nHIB, IRQpins
// disables defaultexample web server
sl_NetAppStop(SL_NET_APP_HTTP_SERVER_ID);
// connect to yourwifi network
wifi.connect("yourssid", "yourpass");
// ...

真棒。呼叫wifi.connect呼叫将阻塞,直到设备加入网络并获得IP地址,从而准备好运行。

我们可以访问有关WiFi连接的IP地址和其他信息:
const char *ip= wifi.get_ip_address();
const char *gw = wifi.get_gateway();
const char *mac = wifi.get_mac_address();
printf("IP address is: %s\n", ip ? ip : "No IP");
printf("GW address is: %s\n", gw ? gw : "No IP");
printf("MAC address is: %s\n", mac ? mac : "No MAC");

或者我们可以启动动态Web服务器,为您的设备提供API:
mg_connection*nc = mg_bind(&mgr, "80", ev_handler);
mg_set_protocol_http_websocket(nc);
printf("Server address: http://%s\n", ip);

这将在默认端口上启动Web服务器http,您可以编写对HTTP请求作出反应的代码。我们来看看如何:

void ev_handler(struct mg_connection *nc, int ev, void *ev_data) {
switch (ev) {
   case MG_EV_ACCEPT: {
     // ...
     break;
   }
   case MG_EV_HTTP_REQUEST: {
     struct http_message *hm = (struct http_message *) ev_data;
     mg_send_response_line(nc, 200,
                           "Content-Type: text/html\r\n"
                           "Connection: close");
     mg_printf(nc,
               "\r\n<h1>Hello, Sir!</h1>\r\n"
               "You asked for %.*s\r\n",
               (int) hm->uri.len, hm->uri.p);
     // we're donewith the reply.
     nc->flags |= MG_F_SEND_AND_CLOSE;
     // Makesomething happen on the device
     led_blue = !led_blue;
     break;
   }
   case MG_EV_CLOSE: {
     // ...
     break;
   }
}
}

使用浏览器导航到在串行控制台上打印出来的URL。您应该看到一个简单的问候页面,由处理程序和相应的消息创建:MG_EV_HTTP_REQUEST
0x20000878: Connection from 192.168.1.15:38548
0x20000708: GET/
0x20000708: Connection closed
代码
--- mongoose-master.zip (3.82 MB, 下载次数: 70)
收藏 评论2 发布时间:2019-3-2 18:27

举报

2个回答
Kevin201707 回答时间:2019-3-4 12:48:26
学习下
simpong 回答时间:2019-6-12 11:17:56
附件里没工程代码

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

相似分享

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版