读书人

告假关于UCOS_II

发布时间: 2013-06-25 23:45:42 作者: rapoo

请假关于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
...
...
一直在上面这个位置,我很奇怪。。找不到原因,有哪位高手能解决一下啊,谢谢了。!!!

读书人网 >单片机

热点推荐