【FRDM-MCXN947测评】基于FreeRTOS下的lwIP版MQtt测试
[复制链接]
1、项目简介
本次测试是IoT连接常使用的Mqtt协议联网的测试。测试使用FRDM-MCXN947开发板的以太网端口。PHY芯片使用的是LAN8741A芯片。
该测试是基于例程:lwip_mqtt_freertos项目为基础的。开发板做为联网设备,PC软件MQTT-Explorer-0.4.0-beta1作为连接的另一台设备使用。
使用串口助手软件监视程序运行。
2、项目配置
项目使用MCUXpresso Config Tools 添加引用到测试目录。
(1)设置好SDK目录,编译器使用自己配套的工具,这里使用的是:GNU ARM工具。
(2)项目使用例程lwip_mqtt_freertos。
设置完成后,检查设或添加设置。
为了能够使用mqtt控制外设,这里使用了RED LED的设置,P0_10
RGB LED引脚设置如下:
设置引脚方向,标签使用RED_LED,生成程序(更新源代码)
3、程序与设备
使用vscode打开项目,定位到mqtt_freertos.c文件。找到函数mqtt_incoming_data_cb()
/*!
* [url=home.php?mod=space&uid=159083]@brief[/url] Called when recieved incoming published message fragment.
*/
static void mqtt_incoming_data_cb(void *arg, const u8_t *data, u16_t len, u8_t flags)
{
int i;
char cmdStr[20]="";
int ret = 0;
LWIP_UNUSED_ARG(arg);
for (i = 0; i < len; i++)
{
if (isprint(data[i]))
{
PRINTF("%c", (char)data[i]);
if ( i < 20 ){ cmdStr[i] = (char)data[i]; }
}
else
{
PRINTF("\\x%02x", data[i]);
}
}
if (flags & MQTT_DATA_FLAG_LAST)
{
PRINTF("\"\r\n");
}
if (i<20)
{
ret = strcmp(cmdStr, "ledon");
if (ret == 0 ) { PRINTF("LED ON!\n"); }
ret = strcmp(cmdStr, "ledoff");
if (ret == 0 ) { PRINTF("LED OFF!\n"); }
}
}
添加代码到程序,编译运行程序
4、过程测试
程序正常驱动,启动PC程序
设置mqtt服务器地址
添加订阅消息, Topic: lwip_topic/100
发送消息
从串口中发现,程序执行成功。
|