/*
*********************************************************************************************************
* SETUP THE TICK RATE
*********************************************************************************************************
*/
void OSTickISR_Handler (void)
{
OSTimeTick();
}
/*
*********************************************************************************************************
* SETUP THE TICK RATE
*********************************************************************************************************
*/
void OSTickISR_Init (void)
{
CLI();
TCNT0 = 0x00; //清零Timer0计数器
OCR0 = OS_SYS_TIME; //每逢1ms产生一次匹配中断
TCCR0 = 0x03; //工作于输出比较匹配模式,不连接OC0端口,时钟32预分频
TIFR |= 0x02; //清除输出比较匹配中断标志位
TIMSK |= 0x02; //使能输出比较匹配中断
SEI();
}
我的是这样配置TICK的,这个对吗? mega128的,和那位同学上传的不一样
出现的问题是执行函数
static void AppTask2(void *p_arg)
{
INT8U err;
p_arg = p_arg;
while (1) {
PORTD = 0x00;
OSTimeDlyHMSM(0,0,1,0);
PORTD = 0xff;
OSTimeDlyHMSM(0,0,1,0);
}
}
时,灯闪烁得特别快,有10Hz左右吧,这是什么问题造成的呢?
另外cfg配置文件里是:
#define CPU_CLK_FREQ 12000000L
#define OS_SYS_TIME CPU_CLK_FREQ / OS_TICKS_PER_SEC / 32;
硬件采用的晶体确实是12Mhz的
还有,是不是
#define OS_TICKS_PER_SEC 50
的问题呢? |