单片机IWIP RAW webserver实验
·
单片机 :STM32F407
开发板:DMF407电机开发板
平台:keil V5.31
HSE 为8MHZ
HSI为16MHZ
主函数
void lwip_test_ui(uint8_t mode)
{
uint8_t speed;
uint8_t buf[30];
if(mode & 1<< 0)
{
lcd_show_string(6, 10, 200, 32, 32, "STM32", DARKBLUE);
lcd_show_string(6, 40, lcddev.width, 24, 24, "lwIP WebServer Test", DARKBLUE);
lcd_show_string(6, 70, 200, 16, 16, "ATOM@ALIENTEK", DARKBLUE);
}
if(mode & 1 << 1)
{
lcd_show_string(6, 110, 200, 16, 16, "lwIP Init Successed", MAGENTA);
if(g_lwipdev.dhcpstatus == 2)
{
sprintf((char*)buf,"DHCP IP:%d.%d.%d.%d",g_lwipdev.ip[0],g_lwipdev.ip[1],g_lwipdev.ip[2],g_lwipdev.ip[3]); /* 显示动态IP地址 */
}
else
{
sprintf((char*)buf,"Static IP:%d.%d.%d.%d",g_lwipdev.ip[0],g_lwipdev.ip[1],g_lwipdev.ip[2],g_lwipdev.ip[3]); /* 打印静态IP地址 */
}
lcd_show_string(6, 130, 200, 16, 16, (char*)buf, MAGENTA);
speed = ethernet_chip_get_speed(); /* 得到网速 */
if(speed)
{
lcd_show_string(6, 150, 200, 16, 16, "Ethernet Speed:100M", MAGENTA);
}
else
{
lcd_show_string(6, 150, 200, 16, 16, "Ethernet Speed:10M", MAGENTA);
}
}
}
int main(void)
{
uint8_t t;
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(); /* 初始化按键 */
beep_init(); /* 初始化蜂鸣器 */
rtc_init(); /* 初始化RTC */
adc_init(); /* 初始化ADC */
my_mem_init(SRAMIN); /* 初始化内部SRAM内存池 */
my_mem_init(SRAMCCM); /* 初始化内部SRAMCCM内存池 */
lwip_test_ui(1); /* 加载前半部分UI */
lcd_show_string(6, 110, 200, 16, 16, "lwIP Init !!", BLUE);
while (lwip_comm_init() != 0)
{
lcd_show_string(6, 110, 200, 16, 16, "lwIP Init failed!!", BLUE);
delay_ms(500);
lcd_fill(6, 50, 200 + 30, 50 + 16, WHITE);
lcd_show_string(6, 110, 200, 16, 16, "Retrying... ", BLUE);
delay_ms(500);
LED1_TOGGLE();
}
while (!ethernet_read_phy(PHY_SR)) /* 检查MCU与PHY芯片是否通信成功 */
{
printf("MCU与PHY芯片通信失败,请检查电路或者源码!!!!\r\n");
}
#if LWIP_DHCP
lcd_show_string(6, 130, 200, 16, 16, "DHCP IP configing... ", BLUE); /* 开始DHCP */
while ((g_lwipdev.dhcpstatus != 2) && (g_lwipdev.dhcpstatus != 0XFF)) /* 等待DHCP获取成功/超时溢出 */
{
lwip_periodic_handle();
}
#endif
lwip_demo(); /* lwIP程序入口 */
lwip_test_ui(2); /* 加载后半部分UI */
while (1)
{
lwip_periodic_handle(); /* LWIP轮询任务 */
delay_ms(2);
t++;
if (t >= 200)
{
t = 0;
LED0_TOGGLE();
}
}
}
void lwip_demo(void)
{
/* Httpd Init */
httpd_init();
/* 配置SSI处理程序 */
httpd_ssi_init();
/* 配置CGI处理器 */
httpd_cgi_init();
}
void
httpd_init(void)
{
struct altcp_pcb *pcb;
#if HTTPD_USE_MEM_POOL
LWIP_MEMPOOL_INIT(HTTPD_STATE);
#if LWIP_HTTPD_SSI
LWIP_MEMPOOL_INIT(HTTPD_SSI_STATE);
#endif
#endif
LWIP_DEBUGF(HTTPD_DEBUG, ("httpd_init\n"));
/* LWIP_ASSERT_CORE_LOCKED(); is checked by tcp_new() */
pcb = altcp_tcp_new_ip_type(IPADDR_TYPE_ANY);
LWIP_ASSERT("httpd_init: tcp_new failed", pcb != NULL);
httpd_init_pcb(pcb, HTTPD_SERVER_PORT);
}
void httpd_ssi_init(void)
{
http_set_ssi_handler(SSIHandler, ppcTAGs, NUM_CONFIG_SSI_TAGS); /* 配置SSI句柄 */
}
void httpd_cgi_init(void)
{
http_set_cgi_handlers(ppcURLs, NUM_CONFIG_CGI_URIS); /* 配置CGI句柄 */
}
测试结果

更多推荐

所有评论(0)