OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5718|回复: 0

在ucosii上移植lwipucosii就不能用了

[复制链接]

10

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2013-4-21
在线时间
0 小时
发表于 2013-4-30 15:42:58 | 显示全部楼层 |阅读模式

各位大哥,有空帮我解决下问题吗,我在ucosii上移植lwip,没有lwip功能,ucosii是正常的,添加lwip的功能后,ucosii跑着跑着就进入了HardFault_Handler,搞了好多天了实在搞不懂了,请大伙帮帮忙了,谢谢。
下面是main.c中的代码:
 #include "stm32f4x7_eth.h"
#include "stm32f4x7_eth_bsp.h"
#include "netconf.h"
#include "main.h"
#include "lwip/tcp.h"
#include "usart.h"
#include <stdio.h>
#include "stm32f4xx.h"           

#include "ucos_ii.h"
#include "app_cfg.h"
#include "bsp.h"
#include "led.h"

#include "tcpip.h"
/* this variable is used to create a time reference incremented by 10ms */
__IO uint32_t LocalTime = 0;
uint32_t timingdelay;
USART DebugUart;
unsigned short Sec_flag = 0;//全局变量,代表1s时钟信号
OS_EVENT * MsgQueue;    ///<监控任务队列
void * MsgQueueBuf[16];   ///<监控任务入口

OS_STK   AppStartTaskStk_1[SYS_TASK_START_STK_SIZE];
#define TASK1_PRIO  11
#define TASK1_STK_SIZE  512//128
static void task1(void *p_arg);
static OS_STK task1_stk[TASK1_STK_SIZE];
/*************************************************************************************
  * 函数名称:main()
  * 参数    :void
  * 返回值  :void
  * 描述    :程序主入口main函数
**************************************************************************************/
int main(void)

OSInit();
OSTaskCreate(SystemRunTask,
 (void *)0,
 &AppStartTaskStk_1[SYS_TASK_START_STK_SIZE-1],
 SYS_TASK_START_PRIO_1);   
OSStart();
return (0);
}
/***************************************************************************
  * 函数名称:SystemRunTask()
  * 参数    :void
  * 返回值  :void
  * 描述    :指示系统正常工作的任务执行程序
****************************************************************************/
void SystemRunTask (void *p_arg)
{
unsigned int i,j;
/*add a long delay wait for DP83848 finish reset*/  
for(i=0;i<50;i++)
{
for(j=0;j < 65500;j++);
}
  (void)p_arg;
OS_CPU_SysTickInit();
/* Configure ethernet (GPIOs, clocks, MAC, DMA) */
ETH_BSP_Config();
/* Initilaize the LwIP stack */
// LwIP_Init();
/* Initilaize the leds rtc and net interrupt */   
BSP_Init();
OSTaskCreate(task1, (void *)0,&task1_stk[TASK1_STK_SIZE - 1], TASK1_PRIO);
/*  infinite loop */
while(1)
{
OSTimeDly(500);
}
}
static void task1(void *p_arg)
{
INT32U message;
INT8U err;
MsgQueue = OSQCreate(&MsgQueueBuf[0], 16);// 建立监控任务的消息队列
while (1)
{
message = (INT32U)OSQPend(MsgQueue, 0, &err);
switch(message)
{
case MSG_RTC_1SECOND:
STM_EVAL_LEDToggle(LED1);
break;
default:
break;
}
}
}
/*********************************************************************************
*函数名:ETH_IRQHandler
*描述:网络通信中断函数
*返回值:无
**********************************************************************************/
void ETH_IRQHandler(void)
{
OSIntEnter();      /* Tell uC/OS-II that we are starting an ISR  */
/* Handles all the received frames */
while(ETH_CheckFrameReceived() != 0)
{
LwIP_Pkt_Handle();
}
LwIP_Periodic_Handle(LocalTime);
/* Clear the Eth DMA Rx IT pending bits */
ETH_DMAClearITPendingBit(ETH_DMA_IT_R);
ETH_DMAClearITPendingBit(ETH_DMA_IT_NIS);
OSIntExit();         /* Tell uC/OS-II that we are leaving the ISR  */
}
// LwIP_Init();这条语句注释掉之后,系统是正常运行的,也就是指示灯一闪一灭,加了它之后,系统立马死掉了

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-5-29 06:37

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表