新手入门
- 积分
- 13
- 金钱
- 13
- 注册时间
- 2018-2-7
- 在线时间
- 8 小时
|
最近在做ucosIII软件定时器的实验遇到一个问题,我首先定义了两个软件定时器,同时声明了回调函数,OS_TMR tmr1; OS_TMR tmr2;
void tmr1_callback(void *p_tmr, void *p_arg); void tmr2_callback(void *p_tmr, void *p_arg);
然后在开始任务中创建定时器,定时器1为单次定时器,定时器为周期定时器
OSTmrCreate((OS_TMR *)&tmr1,
(CPU_CHAR *)"tmr1",
(OS_TICK )200,
(OS_TICK )0,
(OS_OPT )OS_OPT_TMR_ONE_SHOT,
(OS_TMR_CALLBACK_PTR)tmr1_callback,
(void *)0,
(OS_ERR *)&err);
OSTmrCreate((OS_TMR *)&tmr2,
(CPU_CHAR *)"tmr2",
(OS_TICK )20,
(OS_TICK )100,
(OS_OPT )OS_OPT_TMR_PERIODIC,
(OS_TMR_CALLBACK_PTR)tmr2_callback,
(void *)0,
(OS_ERR *)&err);
在串口中断中开启定时器1,在定时器1中开启定时器2,
void tmr1_callback(void *p_tmr, void *p_arg)
{
OS_ERR err;
static u8 tmr1_num=0;
tmr1_num++;
printf("timer1 start:%d\r\n", tmr1_num);
LED0 = ~LED0;
OSTmrStart(&tmr2, &err);
OSTimeDlyHMSM(0,0,1,0,OS_OPT_TIME_PERIODIC,&err); //Ñóê±1s
}
void tmr2_callback(void *p_tmr,void *p_arg)
{
OS_ERR err;
static u8 tmr2_num=0;
tmr2_num++;
printf("timer1 start:%d\r\n", tmr2_num);
LED1 = ~LED1;
OSTimeDlyHMSM(0,0,1,0,OS_OPT_TIME_PERIODIC,&err);
}
测试的时候发现,串口中断可以顺利进入,定时器1按道理来说应该正常开启,但是定时器1并没有开启,打印信息也并未打印,这是为什么呢?有没有哪位仁兄帮我测试一下?
|
|