[经验分享] 【DigiKey“智造万物,快乐不停”创意大赛】实现STM32F746 LVGL+LwIP+MQTT收发数据

lugl4313820   2023-11-1 19:58 楼主

【DigiKey“智造万物,快乐不停”创意大赛】 移植FreeRTOS + LVGL +Lwip实现TCPclient

前面在完成了lvgl_lwip+tcp后考虑需要数据的收发,那么采用mqtt是最好的选择之一。

【学习资料】

此次移植的学习资料来源于野火的《LwIP应用与开发指南》

195745i1gdwwwggwzpo93o.png

在线的网址为:21. MQTT协议 — [野火]LwIP应用开发实战指南—基于野火STM32 文档 (embedfire.com)

【移植过程】

1、下载源码:

https://pan.baidu.com/s/1O3EKcZ5JFGKYdFGMOpJGNQ

提取码:b92p

  1. 下载后找到mqtt的例程,复制源码中的MQTT文件夹到工程目录下面:
    195745nl52jihjiuuvwa6l.png
  2. 然后复制mqttclient.c/h两个文件到Src目录下面:
    195745v8rrffko7ppq8oup.png
  3. 修改mqttclient.h中的服务器IP地址,用户名与密码:
    195745qj1qmiwee4emsdww.png
  4. 在freeRTOS中新建两个任务,并在任务中启用recv与send任务:

195745nzyj2cxczc6lqlxj.png

6、在lvgl的按键事件中发出消息,在发送任务中读取事件,如果有按下的消息,则发送给服务器。

195745mz3b52hbec3hab3h.png

【实验效果】

  1. 打开一下mqttx调试器,连上mqtt服务器,发送消息后,在串口打印出消息内容:

195745f0poe9cs68syoszo.png

2、按下开发板的button键,发布一则消息,在mqttx中可以接收到该内容

195745rbjccbepbkkttzbw.png

【讨论】

在调试mqtt的过程中,我发现freertos对于任务的栈大小难于掌握,如果任务栈的太大,就会启动任务失败,或者运行中死机。有经验的大佬指点一下。

回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复