打印
[AVR单片机]

ucos_ii的OSTimeDlyHMSM()函数 不太懂了

[复制链接]
4507|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wangwo|  楼主 | 2010-3-5 21:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/*
*********************************************************************************************************
*                           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   
的问题呢?

相关帖子

沙发
Karlshen| | 2010-3-6 11:05 | 只看该作者
:L

使用特权

评论回复
板凳
suoma| | 2010-3-9 19:23 | 只看该作者
不懂,帮顶

使用特权

评论回复
地板
Karlshen| | 2010-3-9 20:03 | 只看该作者
http://www.dzsc.com/data/html/2009-6-8/76738.html
浅析μC/OS-ⅡAPI的设计思想及实现机制

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

99

主题

806

帖子

2

粉丝