在移植了ucosIII后创建了两个定时器
//创建软定时器 1
OSTmrCreate((OS_TMR *)&Timer1, //定时器1
(CPU_CHAR *)"Timer1", //定时器名字
(OS_TICK )200, //200*01=2000ms
(OS_TICK )200, //100*10=1000ms
(OS_OPT )OS_OPT_TMR_PERIODIC, //周期模式
(OS_TMR_CALLBACK_PTR)Timer1_Callback,//定时器1回调函数
(void *)0, //参数为0
(OS_ERR *)&err); //返回的错误码
//创建软定时器 2
OSTmrCreate((OS_TMR *)&Timer2, //定时器1
(CPU_CHAR *)"Timer2", //定时器名字
(OS_TICK )20, //200*01=2000ms
(OS_TICK )20, //100*10=1000ms
(OS_OPT )OS_OPT_TMR_PERIODIC, //周期模式
(OS_TMR_CALLBACK_PTR)Timer2_Callback,//定时器1回调函数
(void *)0, //参数为0
(OS_ERR *)&err); //返回的错误码
OSTmrStart(&Timer2,&err);
定时器2创建完成后直接启动,没有问题,可以进入回调函数。
定时器1通过按键启动也没问题,可以进入回调函数。
if(keys==0)
OSTmrStart(&Timer1,&err);
但是我想通过上位机发送命令来启动定时器,死活不行。
if((AutoSendFlag==1 )&&(Timer1_Sta==0))
{
OSTmrStart(&Timer1,&err);
SYS_STA |=0x0004;
// printf("Autosend: %d\r\n",AutoSendFlag);
// printf("Timer1_Sta: %d\r\n",Timer1_Sta);
}
if((AutoSendFlag==0) && (Timer1_Sta==1))
{
OSTmrStop(&Timer1,OS_OPT_TMR_NONE,0,&err);
Timer1_Sta=0;
}
AutoSendFlag 通过上位机修改它的值,通过串口打印和仿真,都能实现修改,但是就是启动不了软定时器!
还请高手们指点
|