打印

ucos+gui+LwIP交流

[复制链接]
5922|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xiepengchenghn|  楼主 | 2010-5-28 11:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 xiepengchenghn 于 2010-5-28 16:46 编辑

本人将LwIP,ucos-II,uc/gui整合到一起,单独跑LwIP没有问题,LwIP也移植到了ucos-II上,应该没有问题,但是ucos-II多任务始终调度不起来。在
OSStartHighRdy中执行到死循环里
      OSStartHang
           B       OSStartHang
无法出来,百思不得其解,调试了4天了,还是解决不了。不知道哪位感兴趣的高人能够指点一下。ucos-II的源文件已经更换成了2.88版本的。想共同提高的朋友不妨讨论下。
备注:开发平台金牛开发板stm32f107+mdk4.11

/* Includes ------------------------------------------------------------------*/
#include "stm32_eth.h"
#include "netconf.h"
#include "main.h"
#include "helloworld.h"
#include "httpd.h"
#include "tftpserver.h"
#include "includes.h"

/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
#define SYSTEMTICK_PERIOD_MS  10

/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
__IO uint32_t LocalTime = 0; /* this variable is used to create a time reference incremented by 10ms */
uint32_t timingdelay;

/* Private function prototypes -----------------------------------------------*/
void System_Periodic_Handle(void *pdata);
void AppTask(void *pdata);
void AppTaskCreate(void );

static OS_STK HelloTaskStartStk[256];
static OS_STK httpdTaskStartStk[256];
static OS_STK PeriodicTaskStartStk[256];
static OS_STK AppTaskStartStk[256];

/* Private functions ---------------------------------------------------------*/

/**
  * @brief  Main program.
  * @param  None
  * @retval None
  */
int main(void)
{
   
  INT8U  OS_err;
   /* Set the Vector Table base location at 0x08000000 */  
  NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);  
  RCC_DeInit();  
  /* Setup STM32 system (clocks, Ethernet, GPIO, NVIC) and STM3210C-EVAL resources */
  
   BSP_Init();
   GUI_Init();
   LCD_Init();

   
              
  /* Initilaize the LwIP satck */
  LwIP_Init();

  OSInit();
  /*此处注意cortex M3中栈是向下生长的,与数组地址增长方向相反,所以栈顶即数组最后一个元素*/


  OS_err=OSTaskCreate(AppTask,(void *)0,(OS_STK*)&AppTaskStartStk[255],7);
  if(OS_err==OS_ERR_NONE)
  {
   GUI_DispStringAt("Task Create Success",128,12);
}



  OSStart();

  return 0;
   
   
}


void AppTask(void *pdata)
{
OSStatInit();
AppTaskCreate();
while(1)
{
OSTimeDly(10);
}
}

void AppTaskCreate(void)
{
INT8U  OS_err;
OS_err=OSTaskCreate(HelloWorld_init,(void *)0,(OS_STK*)&HelloTaskStartStk[255],8);
if(OS_err==OS_ERR_NONE)
   {
   GUI_DispStringAt("Hello Create Success",128,12);
}

OS_err=OSTaskCreate(httpd_init,(void *)0,(OS_STK*)&httpdTaskStartStk[255],9);
if(OS_err==OS_ERR_NONE)
   {
   GUI_DispStringAt("http Create Success",128,12);
}

OSTaskCreate(System_Periodic_Handle,(void *)0,(OS_STK*)&PeriodicTaskStartStk[255],10);
if(OS_err==OS_ERR_NONE)
   {
   GUI_DispStringAt("Sys Create Success",128,12);
}
}





/**
  * @brief  Handles the periodic tasks of the system
  * @param  None
  * @retval None
  */
void System_Periodic_Handle(void *pdata)
{
  
   
  /* LwIP periodic services are done here */
while(1)
{
     LwIP_Periodic_Handle(LocalTime);
  OSTimeDly(10);
}
}


#ifdef  USE_FULL_ASSERT

/**
  * @brief  Reports the name of the source file and the source line number
  *   where the assert_param error has occurred.
  * @param  file: pointer to the source file name
  * @param  line: assert_param error line source number
  * @retval None
  */
void assert_failed(uint8_t* file, uint32_t line)
{
  /* User can add his own implementation to report the file name and line number,
     ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */

  /* Infinite loop */
  while (1)
  {}
}
#endif


/******************* (C) COPYRIGHT 2009 STMicroelectronics *****END OF FILE****/

lwip ucos2.88 ucgui.part2.rar

4.37 MB

lwIP ucos2.88 ucgui.part03.rar

4.37 MB

沙发
2004sz| | 2010-5-28 16:55 | 只看该作者
本帖最后由 2004sz 于 2010-5-28 16:57 编辑

你先确定单独运行UCOS 有没有问题哦?
我是先跑UCOS 再把LWIP多任务移植上去,能运行,稳定行没有测试,
占用RAM 太多,如果跑UC GUI可能少了,不过可以试试或许可以

使用特权

评论回复
板凳
xiepengchenghn|  楼主 | 2010-5-28 19:29 | 只看该作者
2# 2004sz

能否下载我的代码帮忙看看呢?

使用特权

评论回复
地板
xiepengchenghn|  楼主 | 2010-5-29 21:49 | 只看该作者
2# 2004sz
用ucos跑流水灯还是没有问题,不过要用ST2.0的库,用3.2.1的库,还是会出现陷入死循环的问题

使用特权

评论回复
5
zwll| | 2010-5-29 22:51 | 只看该作者
有点晕,呵呵

使用特权

评论回复
6
xiepengchenghn|  楼主 | 2010-5-30 11:39 | 只看该作者
5# zwll
我把用UCOS跑流水灯实验成功,用的是ST的2.0的库,换成3.0的后,完成必要的修改后,又跳入
OSStartHang
    B       OSStartHang
中了,不知道什么原因

使用特权

评论回复
7
xiepengchenghn|  楼主 | 2010-6-2 20:45 | 只看该作者
终于知道原因了,还是向量表的问题

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

267

帖子

1

粉丝