打印

验证OSIntCtxSW和OSTickISR无法通过,情况如下

[复制链接]
2051|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
fwj556|  楼主 | 2007-6-22 16:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
TI, ck, ic, os, NTC
OSStartHighRdy,OSCtxSw,OSTaskStkInit已经通过验证,现在进入验证OSIntCtxSW和OSTickISR,
用44b0的RTC的Tick做时钟节拍,RTC的Tick中断模块我验证过没问题,现在我初始化RTC的Tick时把pISR_TICK指向中断服务函数OSTickISR,程序如下:

void Rtc_Tick_init(void)
{
   pISR_TICK=(unsigned)OSTickISR;   //安装中断向量 
   rINTMSK=~(BIT_GLOBAL|BIT_TICK); 
   rTICINT = 127+(1<<7);        //START
}
/*********************************************************************************************
在OSTickISR中调用此函数*********************************************************************************************/
void tick_hook(void)
{
    rI_ISPC=BIT_TICK; //清中断标志
}

/*********************************************************************************************
* name:        TestTask
*********************************************************************************************/
void    TestTask(void *pdata)
{
   pdata =    pdata;
   Rtc_Tick_init();          //初始化时钟节拍,1秒1次
   while(1)
   {
      Uart_Printf("  ### ############ ");
      OSTimeDly(5);
    }    
}
/*********************************************************************************************
* name:    main
*********************************************************************************************/
void Main(void)
{    
   sys_init();
   Uart_Init(0,115200);    
   Uart_Printf("  ### Main Starts ! ");

   OSInit();    
   OSTaskCreate(TestTask, (void *)0, &TaskStk[0][TASK_STK_SIZE-1], 0);    
   OSStart();
}

现在问题是
1:全速运行时输出
### Main Starts !
### ############
只输出一次就没见反映了,停止运行AXD显示PC指向一堆DCD....
2:单步运行时
程序执行到TestTask的Uart_Printf要串口输出时PC跳到0x14处,
此处指令为:bl 0x14 程序进入死循环

好几天,能想到都试过了,还是没反映,实在没辙了,各位大侠帮忙看看,谢谢

相关帖子

沙发
飞雪季节| | 2007-7-3 09:36 | 只看该作者

估计还是你出中断的时候寄存器没有恢复好

建议检查下汇编,
从现象来看,OSStartHighRdy运行正常, 但发生一次中断时候就出错了

使用特权

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

本版积分规则

9

主题

47

帖子

1

粉丝