|
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统 驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe |
求助!!!进入不了__main()函数!!! |
作者:halley_yun 栏目:ARM技术 |
程序如下所示,TaskGpioStart任务是流水灯。当我用/*和*/屏蔽了程序下半部有关lwip的函数后,ucos就能正常启动,流水灯任务开始执行。当没有屏蔽时,到不了__main()函数的断点处,总在启动代码处循环执行。请各位指教!!! TEST.c #include "config.h" #include "debug.h" #include "opt.h" #include "def.h" #include "mem.h" #include "pbuf.h" #include "sys.h" #include "tcpip.h" #include "api.h" #include "arp.h" #include "loopif.h" #include "ne2kif.h" #include "sys_arch.h" /******************************************************************************************************/ #define SPI_CS 0x00000100 //和gpio有关的定义和函数 #define SPI_DATA 0x00000040 #define SPI_CLK 0x00000010 #define SPI_IOCON 0x00000150 const u8_t DISP_TAB[14]={0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF}; /******************************************************************************************************/ #define GPIO_TASK_STK_SIZE 64 //和UCOS有关的定义 OS_STK TaskGpioStartStk[GPIO_TASK_STK_SIZE]; void TaskGpioStart(void *data); /******************************************************************************************************/ extern struct netif *rtl8019if_netif; struct RTL8019if *rtlif; extern void OSISR(void); extern void OSTimeTick(void); extern void ne2k_isr(void); #define TASK_STK_SIZE 4096 // Stack size, in size of SO_STK, or int OS_STK lwip_init_stk[TASK_STK_SIZE]; // lwip stacks void lwip_init_task(void *pParam); void tcpip_init_done(void *arg); //void tcpecho_init(void); int main(void) { int LineNo11 = 1; OSInit(); //OSTaskCreate(lwip_init_task, &LineNo11, &lwip_init_stk[TASK_STK_SIZE-1], 2); OSTaskCreate(TaskGpioStart, (void *)0, &TaskGpioStartStk[GPIO_TASK_STK_SIZE - 1], 10); OSStart(); return 0; } /******************************************************************************************************/ void DelayNS(u32_t dly) {u32_t i; for(;dly>0;dly--) for(i=0;i<5000;i++); } void HC595_SendDat(u8_t dat) {u8_t i; IO0CLR=SPI_CS; for(i=0;i<8;i++) {IO0CLR=SPI_CLK; if((dat&0x80)!=0) IO0SET=SPI_DATA; else IO0CLR=SPI_DATA; dat<<=1; IO0SET=SPI_CLK; } IO0SET=SPI_CS; } void TaskGpioStart(void *pdata) { u8_t i; PINSEL0=0X00000000; IO0DIR=SPI_IOCON; while(1) {for(i=0;i<14;i++) {HC595_SendDat(DISP_TAB[i]); DelayNS(5); } } } /*********************************************************/ /* 以后为和lwip有关的函数 */ /*********************************************************/ void lwip_init_task(void * pParam) { struct ip_addr ipaddr, netmask, gw; sys_sem_t sem; //yangye 2003-1-23 //move HARDWARE init here! //TargetInit(); #ifdef STATS stats_init(); #endif //STATS sys_init(); mem_init(); memp_init(); pbuf_init(); //mainthread netif_init(); sem = sys_sem_new(0); tcpip_init(tcpip_init_done, &sem); sys_sem_wait(sem); sys_sem_free(sem); //add loop interface IP4_ADDR(&gw, 127,0,0,1); IP4_ADDR(&ipaddr, 127,0,0,1); IP4_ADDR(&netmask, 255,0,0,0); netif_add(&ipaddr, &netmask, &gw, loopif_init, tcpip_input); //add ne2k interface IP4_ADDR(&gw, 10,0,0,1); IP4_ADDR(&ipaddr, 10,0,0,2); IP4_ADDR(&netmask, 255,255,255,0); netif_set_default(netif_add(&ipaddr, &netmask, &gw, ne2k_init, tcpip_input)); //we can add tcpip application here ! //yangye 2003-1-27 //notice :must use sys_thread_new() to add lwip tasks !!! //OSTaskCreate(udpecho_thread, (void *)0x1111, &LwipStk1[TASK_STK_SIZE - 1], 6); // httpd_init(); tcpecho_init(); rtlif = rtl8019if_netif->state; //TEST!!!!! ///Block for ever. sem = sys_sem_new(0); sys_sem_wait(sem); } void< |
|
|
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入 |
Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号 |