单片机IWIP 原子云实验

单片机IWIP 原子云实验
单片机 STM32F407开发板DMF407电机开发板平台keil V5.31HSE 为8MHZHSI为16MHZ主函数int main(void) { HAL_Init(); /* 初始化HAL库 */ sys_stm32_clock_init(336, 8, 2, 7); /* 设置时钟,168Mhz */ delay_init(168); /* 延时初始化 */ usart_init(115200); /* 串口初始化为115200 */ usmart_dev.init(84); /* 初始化USMART */ led_init(); /* 初始化LED */ lcd_init(); /* 初始化LCD */ key_init(); /* 初始化按键 */ my_mem_init(SRAMIN); /* 初始化内部SRAM内存池 */ my_mem_init(SRAMCCM); /* 初始化内部SRAMCCM内存池 */ freertos_demo(); /* 创建lwIP的任务函数 */ }demovoid freertos_demo(void) { /* start_task任务 */ xTaskCreate((TaskFunction_t )start_task, (const char * )start_task, (uint16_t )START_STK_SIZE, (void * )NULL, (UBaseType_t )START_TASK_PRIO, (TaskHandle_t * )StartTask_Handler); vTaskStartScheduler(); /* 开启任务调度 */ }void start_task(void *pvParameters) { pvParameters pvParameters; g_lwipdev.lwip_display_fn lwip_test_ui; lwip_test_ui(1); /* 加载后前部分UI */ while (lwip_comm_init() ! 0) { lcd_show_string(30, 110, 200, 16, 16, lwIP Init failed!!, RED); delay_ms(500); lcd_fill(30, 50, 200 30, 50 16, WHITE); lcd_show_string(30, 110, 200, 16, 16, Retrying... , RED); delay_ms(500); LED1_TOGGLE(); } while (!ethernet_read_phy(PHY_SR)) /* 检查MCU与PHY芯片是否通信成功 */ { printf(MCU与PHY芯片通信失败请检查电路或者源码\r\n); } while ((g_lwipdev.dhcpstatus ! 2)(g_lwipdev.dhcpstatus ! 0XFF)) /* 等待DHCP获取成功/超时溢出 */ vTaskDelay(5); taskENTER_CRITICAL(); /* 进入临界区 */ /* 创建lwIP任务 */ xTaskCreate((TaskFunction_t )lwip_demo_task, (const char* )lwip_demo_task, (uint16_t )LWIP_DMEO_STK_SIZE, (void* )NULL, (UBaseType_t )LWIP_DMEO_TASK_PRIO, (TaskHandle_t* )LWIP_Task_Handler); /* LED测试任务 */ xTaskCreate((TaskFunction_t )led_task, (const char* )led_task, (uint16_t )LED_STK_SIZE, (void* )NULL, (UBaseType_t )LED_TASK_PRIO, (TaskHandle_t* )LEDTask_Handler); /* key任务 */ xTaskCreate((TaskFunction_t )key_task, (const char * )key_task, (uint16_t )KEY_STK_SIZE, (void * )NULL, (UBaseType_t )KEY_TASK_PRIO, (TaskHandle_t * )KEYTask_Handler); vTaskDelete(StartTask_Handler); /* 删除开始任务 */ taskEXIT_CRITICAL(); /* 退出临界区 */ }void lwip_demo_task(void *pvParameters) { pvParameters pvParameters; lwip_demo(); while (1) { vTaskDelay(5); } }void lwip_demo(void) { int err; g_mysock lwip_transport_open(HOST_NAME,HOST_PORT); printf(%s,(uint8_t *)atk_decode(11928636062013881341,12345678)); err lwip_transport_send_packet_buffer(g_mysock, (uint8_t *)atk_decode(11928636062013881341,12345678), strlen((char *)atk_decode(11928636062013881341,12345678))); if (err 0) { lcd_show_string(5, 170, 200, 16, 16, Link succeed, BLUE); lwip_data_send(); /* 创建发送线程 */ while (1) { memset(g_lwip_demo_recvbuf, 0, sizeof(g_lwip_demo_recvbuf)); g_rc lwip_transport_getdata(g_lwip_demo_recvbuf,sizeof(g_lwip_demo_recvbuf)); if (g_rc 0) { lcd_fill(5, 210,lcddev.width,lcddev.height,WHITE); lcd_show_string(5, 210, lcddev.width, 16, 16, (char *)g_lwip_demo_recvbuf, BLUE); } vTaskDelay(10); } } lcd_show_string(5, 170, 200, 16, 16, Link fail, RED); }实验结果