首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

告假关于UCOS_II

2013-06-25 
请假关于UCOS_IICPU Atmega128.从网上下载了个ucos-ii,移植到cpu后,可以创建任务,但是创建的任务只是执行

请假关于UCOS_II
   CPU Atmega128.
从网上下载了个ucos-ii,移植到cpu后,可以创建任务,但是创建的任务只是执行一次后就进入空闲任务OSTaskIdle();
我是新手,查了资料,创建的代码与书本上的一样。


*********************************************************************************************************
*/
void  main (void)
{
  SYS_Init();
OSInit();
OSTaskCreate(AppTask1,(void*)0,&Task1Stk[OS_TASK_STK_SIZE-1],1);
OSStart();
}
static void  AppTask1(void *p_arg)
{
    INT8U err;
p_arg = p_arg;
OSTickISR_Init();                            /* Initialize the ticker  */定时器0初始化
OSTaskCreate(AppTask2,(void*)0,&Task2Stk[OS_TASK_STK_SIZE-1],2);
SEI();
    while (1) {
    PORTB = 0x00;
    PORTE = 0xFF;
OSTimeDlyHMSM(0,0,1,0);
}
}

static void  AppTask2(void *p_arg)
{
    INT8U err;
p_arg = p_arg;

    while (1) {
    PORTE = 0x00;
    PORTB = 0xFF;
OSTimeDlyHMSM(0,0,1,0);
    }
}
void SYS_Init(void)
{
PORTA = 0xFF;
    DDRA = 0xFF;
    PORTB = 0x00;
    DDRB = 0xFF;
    PORTC = 0xDF;
    DDRC = 0xDF;
    PORTD = 0x38;
    DDRD = 0x38;
    PORTE = 0x00;
    DDRE = 0xFF;
    PORTF = 0x00;
    DDRF = 0x00;
    PORTG = 0x10;
    DDRG = 0x10;
}

AppTask1();AppTask2();都只是运行一次后就进入OSTaskIdle()死循环;(在线调试)

请教高手,哪里设置错了。

[解决办法]
是不是优先级的事情啊
[解决办法]
估计是时钟ticks的问题
[解决办法]
定时器中断问题
[解决办法]
lz要理解什么是任务。。。。

任务在RTOS就是线程,就是要一直执行的线程,怎么一直执行,当然就需要死循环啊。

void task(void) {
 task_init(); //任务初始化执行一次

 while(1)
{
//任务本体是个死循环。。。。
//平时可以处于sleep状态,如果接受到消息或者事件标志则唤醒。。基本是这样。。

}
}
[解决办法]
感觉像是没移植成功
[解决办法]
没有问题,一般运行的时候就是进入空闲任务。
看来uc/os这块的书,内核讲得多,uc/os运行原理将的比较少。
(如果你有两个标志灯的情况下,你建立两个任务让灯的闪烁的频率不一样。这样可以测试一下)
[解决办法]
代码好像没有什么问题

检查一下移植的是否正确

任务没有调度


看看你的OSTickISR中有没有调用OSTimeTick。

或者把你的代码传上来看看。仅看这一点看不到什么问题。


[解决办法]

引用:
没有问题,一般运行的时候就是进入空闲任务。
看来uc/os这块的书,内核讲得多,uc/os运行原理将的比较少。
(如果你有两个标志灯的情况下,你建立两个任务让灯的闪烁的频率不一样。这样可以测试一下)


正常情况下,应该可以正常在各个任务间切换

从LZ的表述来看,它的任务切换没有出来

所以我觉得有可能是移植没有成功


[解决办法]
小弟初学,你看看中断配置吧!!!!
[解决办法]
为什么我用IAR写的UCOS,在下载到板子后,就一直死循环,连MAIN函数都没进去,谁能解答一下?
用的LPC1766,就想点一个LED灯。程序一直停在下面:
  BusFault_Hander:
  DebufMon_Handler:
  HardFault_Handler:
  MemManage_Handler:
  NMI_Handler...+4 symbols not displayed:
  0x144c: 0xe7fe B.N BusFault_Handler ; 0x144c
  ...
  ...
一直在上面这个位置,我很奇怪。。找不到原因,有哪位高手能解决一下啊,谢谢了。!!!
[解决办法]
楼主悲剧~~
[解决办法]
为什么我用IAR写的UCOS,在下载到板子后,就一直死循环,连MAIN函数都没进去,谁能解答一下?
用的LPC1766,就想点一个LED灯。程序一直停在下面:
  BusFault_Hander:
  DebufMon_Handler:
  HardFault_Handler:
  MemManage_Handler:
  NMI_Handler...+4 symbols not displayed:
  0x144c: 0xe7fe B.N BusFault_Handler ; 0x144c
  ...
  ...
一直在上面这个位置,我很奇怪。。找不到原因,有哪位高手能解决一下啊,谢谢了。!!! 

热点排行