登录 免费注册 首页 | 行业黑名单 | 帮助
维库电子市场网
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统
驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe

求助!!!进入不了__main()函数!!!

作者:halley_yun 栏目:ARM技术
求助!!!进入不了__main()函数!!!
程序如下所示,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<
参与讨论
昵称:
讨论内容:
 
 
相关帖子
请教KEIL ARM使用外部FLASH问题。
tcp实验中timer1有什么用
启动代码
SmartARM2200的wdt实验??
串口连续发送数据会产生数据终止,请教!急!!
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入


Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号