void rt_init_thread_entry(void* parameter) { #if RT_USING_RTC rt_device_t rtc_dev; #endif #if TEST_TRAP || EM_ALL_TYPE_BASE || TEST_485 rt_thread_t thread_h; #endif RT_APPS_INIT_DEBUG(("invoke rt_init_thread_entry()!\n")); say_thread_start(); #if TEST_485 thread_h = rt_thread_create("t485", rt_test_485_entry, RT_NULL, 512, 30, 10); if (thread_h != RT_NULL) rt_thread_startup(thread_h); #endif #if TEST_TRAP trap_test_init(); #endif #if EM_ALL_TYPE_BASE && !TEST_485 /* recv ptct info server */ thread_h = rt_thread_create("rpct-ser", recv_em_frame, RT_NULL, 1024, 30, 10); if (thread_h != RT_NULL) rt_thread_startup(thread_h); #endif #if RT_USING_RS485_BUS && !TEST_485 #if EM_MASTER_DEV || EM_MULTI_MASTER_DEV rs485_master_init(); /* David */ #elif WIRELESS_MASTER_NODE rs485_slave_init(); #endif #endif /* Filesystem Initialization */ #if RT_USING_FILESYSTEM RT_APPS_INIT_DEBUG(("will init fs\n")); rt_hw_spiflash_init(); sf_set_prote_level_to_none(); /* init the device filesystem */ dfs_init(); #ifdef RT_USING_DFS_ELMFAT /* init the elm chan FatFs filesystam*/ elm_init(); #if 1 /* mount spi-flash fat partition 1 as root directory */ if (dfs_mount("sf0", "/", "elm", 0, 0) == 0) #else /* mount sd card fat partition 1 as root directory */ if (dfs_mount("sd0", "/", "elm", 0, 0) == 0) #endif rt_kprintf("File System initialized!\n"); else rt_kprintf("File System initialzation failed!\n"); #endif #endif /* LwIP Initialization */ #if RT_USING_TCPIP_STACK init_tcpip_lwip_stack(); #endif #if RT_USING_GUI { extern void rtgui_startup(); extern void rt_hw_lcd_init(); extern void rtgui_touch_hw_init(void); rt_device_t lcd; /* init lcd */ rt_hw_lcd_init(); /* init touch panel */ rtgui_touch_hw_init(); /* re-init device driver */ rt_device_init_all(); /* find lcd device */ lcd = rt_device_find("lcd"); /* set lcd device as rtgui graphic driver */ rtgui_graphic_set_device(lcd); /* startup rtgui */ rtgui_startup(); } #endif /* #if RT_USING_GUI */ nvic_cfg_app(); #if USE_STM32_IWDG IWDG_Enable(); #endif #if RT_USING_RTC rtc_dev = rt_device_find("rtc"); if (NULL != rtc_dev) { rtc_dev->control(rtc_dev, RT_DEVICE_CTRL_RTC_CALI_SET, NULL); } else { rt_kprintf("find rtc device fail\n"); } #endif #if EM_ALL_TYPE_BASE extern void sinkinfo_ipc_init(void); sinkinfo_ipc_init(); #endif #if (RT_USING_RS485_BUS && EM_ALL_TYPE_BASE && !TEST_485) ammeter_init(); #endif #if WIRELESS_MASTER_NODE creat_4432master_th(); #elif WIRELESS_SLAVE_NODE /* #if WIRELESS_MASTER_NODE */ creat_4432slave_th(); #else /* none */ #endif /* #if WIRELESS_MASTER_NODE */ #if RT_USING_ADE7880 && !TEST_485 start_7880(); /* 有较长的延迟, 秒级别, David */ #endif #if EM_ALL_TYPE_BASE && !TEST_485 sinkinfo_init(); #endif }
void rt_init_thread_entry(void *parameter) { rt_device_t lcd; rt_hw_led_init(); rt_hw_key_init(); rt_hw_adc_init(); rt_hw_lcd_init(); rt_hw_cpu_init(); #ifdef RT_USING_RTGUI extern void rtgui_system_server_init(void); /* find lcd device */ lcd = rt_device_find("lcd"); /* set lcd device as rtgui graphic driver */ rtgui_graphic_set_device(lcd); /* init rtgui system server */ rtgui_system_server_init(); /* startup rtgui */ rtgui_startup(); #else { char buf[20] = {'\0'}; struct lcd_msg msg; rt_device_t device; device = rt_device_find("lcd"); rt_device_control(device, RT_DEVICE_CTRL_LCD_CLEAR_SCR, RT_NULL); x = 1; y = 1; rt_device_control(device, RT_DEVICE_CTRL_LCD_PUT_STRING, "ADC"); x = 1; y = 20; rt_device_control(device, RT_DEVICE_CTRL_LCD_PUT_STRING, "CPU"); x = 1; y = 40; rt_device_control(device, RT_DEVICE_CTRL_LCD_PUT_STRING, "KEY"); while(1) { if (rt_mq_recv(&mq, &msg, sizeof(msg), RT_WAITING_FOREVER) == RT_EOK) { switch(msg.type) { case ADC_MSG: x = 40; y = 1; rt_memset(buf, 0, sizeof(buf)); rt_sprintf(buf, "%04d", msg.adc_value); rt_device_control(device, RT_DEVICE_CTRL_LCD_PUT_STRING, buf); break; case CPU_MSG: x = 40; y = 20; rt_memset(buf, 0, sizeof(buf)); rt_sprintf(buf, "%03d %03d", msg.major, msg.minor); rt_device_control(device, RT_DEVICE_CTRL_LCD_PUT_STRING, buf); break; case KEY_MSG: x = 40; y = 40; rt_memset(buf, 0, sizeof(buf)); switch(msg.key) { case KEY_DOWN: rt_sprintf(buf, "DOWN KEY "); break; case KEY_UP: rt_sprintf(buf, "UP KEY "); break; case KEY_RIGHT: rt_sprintf(buf, "RIGHT KEY"); break; case KEY_LEFT: rt_sprintf(buf, "LEFT KEY "); break; case KEY_ENTER: rt_sprintf(buf, "ENTER KEY"); break; default: rt_sprintf(buf, "NO KEY "); break; } rt_device_control(device, RT_DEVICE_CTRL_LCD_PUT_STRING, buf); break; } } } } #endif }