使用百问网的STM32F103MINI开发板完成下面实验。
1、编写添加的任务函数。
void StartMyTask(void *argument)
{
uint8_t rx_data[200] = {0};
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
//按键按下
if (Key_GetFlag())
{
ESP8266_Send_UDP("{\"data\":\"doorbell\",\"status\":\"1\"}");
}
//收到UDP数据
if (USART2_Receive(rx_data))
{
//printf("%s\r\n", rx_data);
if (strstr((char *)rx_data, "\"dev\":\"led\",\"status\":\"0\""))
{
printf("led off\r\n");
HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_SET);
USART2_ClearBuf();
memset(rx_data, 0, 200);
}
else if (strstr((char *)rx_data, "\"dev\":\"led\",\"status\":\"1\""))
{
printf("led on\r\n");
HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET);
USART2_ClearBuf();
memset(rx_data, 0, 200);
}
}
osDelay(1);
}
}
2、主函数中发送AT指令。
①uint8_t wifi_data[200] = {0}; //定义数组,初始化为0
②Key_Update_WIFI((char *)wifi_data, 500); //更新WIFI和密码的函数
这个函数有默认的WIFI和密码,按键按下会更新WIFI和密码,
通过strcat()连接字符串,并通过memcpy()拷贝字符串。
③ESP8266_SendCommand("AT+RST", "OK", 500); //复位WIFI模块
④ESP8266_SendCommand("AT+CWMODE=1", "OK", 500); //设置模式
⑤ESP8266_SendCommand((char *)wifi_data, "OK", 5000); //连接WIFI
⑥ESP8266_SendCommand
("AT+CIPSTART=\"UDP\",\"192.168.50.230\",9999,9999,2", "OK", 500);
创建UDP连接
⑦ESP8266_GetIP(); //获取IP地址
⑧ *** 作系统内核初始化、FreeRTOS初始化、 *** 作系统内核启动。
osKernelInitialize();
MX_FREERTOS_Init()
osKernelStart();
3、FreeRTOS的函数。
①创建一个结构体,使用其可以创建对象,对象用于函数的参数。
typedef struct
{
const char *name; //函数名称
uint32_t attr_bits; //属性位
void *cb_mem; //控制块内存指针
uint32_t cb_size; //控制块大小
void *stack_mem; //栈内存指针
uint32_t stack_size; //栈大小
osPriority_t priority; //优先级
TZ_ModuleID_t tz_module; //信任块标识
uint32_t reserved; //保留
} osThreadAttr_t;
const osThreadAttr_t MyTask_attributes =
{
.name = "MyTask";
.stack_size = 256 * 4;
.priority = (osPriority_t) osPriorityLow,
};
osThreadID_t MyTaskHandle; //任务句柄
extern void StartMyTask(void* argument); ///函数声明
void MX_FREERTOS_Init(void)
{
MyTaskHandle = osThreadNew(StartMyTask, NULL, &MyTask_attributes);
...
}
4、实验结果。
①下载程序,通过串口可以打印过程信息。
②通过手机连接电脑的热点。110 12345678
③微信小程序,绑定IP,912.168.137.49。
④点台灯图表,可以控制开发板的LED,按下开发板的按键,
可以看到手机微信小程序的门铃图表变红。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)