前言
目标:lwIP+FreeRTOS实现MQTT通信
一、准备工作
硬件平台:正点原子探索者开发板
二、使用步骤
1.新建工程
依次点击File-->New-->STM32 Project:
2.工程配置
保持工程默认配置:
代码生成选项配置:
3.可视化配置
网卡配置:
默认生成的引脚配置:
修改为适配正点原子探索者开发板的引脚配置:
基本参数配置:
高级参数配置:
打开串口1:
FreeRTOS配置:
修改默认定时器:
任务堆栈大小设置:
高级参数设置,使能新库可重用功能 :
LWIP配置:
配置静态IP地址:
设置MEMP_NUM_SYS_TIMEOUT为合适大小:
生成代码,Project-->Generate Code:
usart.c中添加重定向函数:
/* USER CODE BEGIN 0 */
#include "stdio.h"
#ifdef __GNUC__
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
PUTCHAR_PROTOTYPE
{
// 注意下面第一个参数是&huart1,因为cubemx配置了串口1自动生成的
HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, HAL_MAX_DELAY);
return ch;
}
#endif
/* USER CODE END 0 */
main.c中添加头文件包含:
/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include "stdio.h"
/* USER CODE END Includes */
打开项目-->属性,进入设置界面:
添加lwip官方例程中的mqtt_example.c和mqtt_example.h:
添加网卡初始化代码:
main.c中包含头文件:
freertos.c中添加mqtt初始化函数 :
编译链接下载:
将开发板接入路由器:
MQTT代理选择EMQ进行测试:
实验效果:
总结
实验效果:开发板订阅主题并接收主机发送过来的消息。