10911|7

61

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

ucos+gui+LwIP交流 [复制链接]



本人将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)

此帖出自stm32/stm8论坛

最新回复

楼主能否将模板共享一下!!!  详情 回复 发表于 2011-10-8 20:55
点赞 关注
 

回复
举报

82

帖子

0

TA的资源

一粒金砂(初级)

沙发
 


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

回复

73

帖子

0

TA的资源

一粒金砂(初级)

板凳
 


能否下载我的代码帮忙看看呢?
此帖出自stm32/stm8论坛
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

4
 

用ucos跑流水灯还是没有问题,不过要用ST2.0的库,用3.2.1的库,还是会出现陷入死循环的问题
此帖出自stm32/stm8论坛
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(中级)

5
 
                                 有点晕,呵呵
此帖出自stm32/stm8论坛
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

6
 

我把用UCOS跑流水灯实验成功,用的是ST的2.0的库,换成3.0的后,完成必要的修改后,又跳入
OSStartHang
    B       OSStartHang
中了,不知道什么原因
此帖出自stm32/stm8论坛
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

7
 
                                 终于知道原因了,还是向量表的问题
此帖出自stm32/stm8论坛
 
 
 

回复

105

帖子

0

TA的资源

一粒金砂(中级)

8
 
楼主能否将模板共享一下!!!
此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表