|
发表于 2010-8-12 10:23:59
|
显示全部楼层
我的测试程序:
让两个小灯闪烁
结果:一个灯闪烁两次后,另一个灯接着闪烁两次。之后就没反应了。
直接跑的楼主的程序!!!
#include <avr/io.h>
#include "ucos_ii.h"
#include "atmega128.h"
OS_STK TestTaskStk[100];
void TestTask(void* pdata);
OS_STK TestTaskStkb[100];
void TestTaskb(void* pdata);
OS_STK TestTaskStkc[100];
void TestTaskc(void* pdata);
void led_gprs_on()
{
PORTE &=~(1<<2);
}
void led_gprs_out()
{
PORTE |=(1<<2);
}
void led_sms_on()
{
PORTE &=~(1<<3);
}
void led_sms_out()
{
PORTE |=(1<<3);
}
void delay_1ms(void)
{
unsigned int i;
for(i=1;i<1000;i++)
;
}
void _delay_ms(unsigned int n)
{
unsigned int i=0;
while(i<n)
{
delay_1ms();
i++;
}
}
void _delay_s(unsigned int n)
{
int i=0;
while(i<1000*n)
{
delay_1ms();
i++;
}
}
int main(void)
{
DDRE |=(1<<2);
DDRE |=(1<<3);
PORTE |=(1<<2);
PORTE |=(1<<3);
OSInit();
OSTaskCreate(TestTaskb,(void*)0,&TestTaskStkb[199],6);
OSTaskCreate(TestTaskc,(void*)0,&TestTaskStkc[199],7);
OSTaskCreate(TestTask,(void*)0,&TestTaskStk[199],0);
OSStart();
}
void TestTask(void* pdata)
{
pdata=pdata;
while(1)
{
led_sms_on();
_delay_s(1);
led_sms_out();
_delay_s(1);
led_sms_on();
_delay_s(1);
led_sms_out();
OSTimeDly(1000);
}
}
void TestTaskb(void* pdata)
{
pdata=pdata;
while(1)
{
led_gprs_on();
_delay_s(1);
led_gprs_out();
_delay_s(1);
led_gprs_on();
_delay_s(1);
led_gprs_out();
OSTimeDly(1);
}
}
void TestTaskc(void* pdata)
{
pdata=pdata;
while(1)
{
OSTimeDly(100);
}
} |
|