这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 板卡试用 » 【换取手持示波器】NUCLEO-F429ZI Mongoose移植

共1条 1/1 1 跳转至

【换取手持示波器】NUCLEO-F429ZI Mongoose移植

助工
2025-03-10 22:26:44   被打赏 30 分(兑奖)     打赏

1、Mongoose简介

Mongoose是一个广受欢迎的嵌入式网络库,它为TCP、UDP、HTTP、WebSocket、MQTT等协议实现了基于事件驱动的非阻塞API,非常适合在资源受限的嵌入式系统中使用。以下是关于Mongoose的一些详细介绍:

1.1、核心特性:

事件驱动: Mongoose采用事件驱动模型,使得网络操作非阻塞,这对于实时系统来说至关重要,因为它可以在等待网络事件时执行其他任务。

轻量级: 整个Mongoose库主要由两个文件组成:mongoose.c和mongoose.h,使得集成和使用非常方便。

依赖少: Mongoose仅涉及纯粹的Socket编程,没有依赖任何第三方库,这降低了集成复杂度并减少了潜在的兼容性问题。

丰富的文档和示例: Mongoose提供了详细的文档和丰富的示例代码,帮助开发者快速上手和使用。

1.2、使用场景:

Web UI界面: 在设备上实现基于Web的用户界面。

RESTful API服务: 提供Web服务接口,进行数据的增删改查等操作。

遥测数据交换: 设备与服务器之间进行数据的远程交换。

产品远程控制: 通过网络对设备进行远程控制。

远程软件更新: 通过网络实现设备的远程固件更新。

远程监控: 实现对设备状态的远程监控。

2、器材准备、编程环境

NUCLEO-F429ZI开发板;

路由器一台;

网线一根;

$ZAAY394D`Z~579FK{Z]_CF.png

编程环境为CubeIDE。

cubemx配置参考如下:

勾选ETH外设,接口选择RMII,其他选项保持默认

image.png

NUCLEO-F429ZIETH外设没有集成物理层的数据转换芯片,板载外部PHY模块为LAN8742

image.png

取消ETH中断回调函数声明,这个回调函数后边需要自行声明并实现。

image.png

3、移植mongoose

https://github.com/cesanta/mongoose/tree/master

{79_{$VZMTT7XFMOM`R$4PP.png

下载以上源码包,只需要使用以下两个源码文件

image.png

cubeide工程导入以上两个文件,并添加相应头文件路径

image.png

新建配置文件,用于配置mongoose的各项工作参数

image.png

4、软件实现

mongoose_config.h文件

#ifndef
__MONGOOSE_CONFIG_H
#define
__MONGOOSE_CONFIG_H
 
 
#defineMG_ARCH MG_ARCH_NEWLIB
#defineMG_ENABLE_TCPIP 1
#defineMG_ENABLE_CUSTOM_MILLIS 1
#define
MG_ENABLE_DRIVER_STM32F 1
 
#endif

main.c文件

/* USER CODE BEGIN 2 */
struct mg_mgr mgr;
mg_mgr_init(&mgr);

struct mg_tcpip_if mif = {
.mac = {2, 0, 1, 2, 3, 4},
.driver = &mg_tcpip_driver_stm32f,
};
mg_tcpip_init(&mgr, &mif);

for (;;) mg_mgr_poll(&mgr, 100);//运行mongoose应用
/* USER CODE END 2 */

/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */

/* USER CODE BEGIN 3 */
//HAL_Delay(500);
//HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_7);

}
/* USER CODE END 3 */
}

别忘了添加mong头文件

/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include "mongoose.h"
#include "mongoose_config.h"
/* USER CODE END Includes */

5、测试结果

程序编译无误后烧录固件到开发板,将开发板网口连接到路由器。

image.png

同时观察串口输出的调试信息,稍等片刻可以看到mongoose应用从DHCP服务器获得的IP地址

image.png

由上图知IP地址为192.168.0.115,还有网关、MAC信息。

ping测试如下:

这个ping延迟很低,mongoose的以太网通信效率做得很不错。

image.png

至此mongoose库移植完成,该库的运行依赖于以太网通信接口,这个cubemx可以完全图形化配置和无代码驱动,也可以是基于WIFI通信接口、甚至USB通信接口来实现。mongoose库的初衷是帮助客户构建更轻量高效的嵌入式Web站应用。基于moogoose库,以下是一个小型web网站的应用示例:

61L4VN`5Z_(E`G{153VF0SI.png





关键词: Mongoose移植    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]