OSStartHighRdy,OSCtxSw,OSTaskStkInit已经通过验证,现在进入验证OSIntCtxSW和OSTickISR,<br />用44b0的RTC的Tick做时钟节拍,RTC的Tick中断模块我验证过没问题,现在我初始化RTC的Tick时把pISR_TICK指向中断服务函数OSTickISR,程序如下:<br /><br />void Rtc_Tick_init(void)<br />{<br /> pISR_TICK=(unsigned)OSTickISR; //安装中断向量 <br /> rINTMSK=~(BIT_GLOBAL|BIT_TICK); <br /> rTICINT = 127+(1<<7); //START<br />}<br />/*********************************************************************************************<br />在OSTickISR中调用此函数*********************************************************************************************/<br />void tick_hook(void)<br />{<br /> rI_ISPC=BIT_TICK; //清中断标志<br />}<br /><br />/*********************************************************************************************<br />* name: TestTask<br />*********************************************************************************************/<br />void TestTask(void *pdata)<br />{<br /> pdata = pdata;<br /> Rtc_Tick_init(); //初始化时钟节拍,1秒1次<br /> while(1)<br /> {<br /> Uart_Printf("
### ############
");<br /> OSTimeDly(5);<br /> } <br />}<br />/*********************************************************************************************<br />* name: main<br />*********************************************************************************************/<br />void Main(void)<br />{ <br /> sys_init();<br /> Uart_Init(0,115200); <br /> Uart_Printf("
### Main Starts !
");<br /><br /> OSInit(); <br /> OSTaskCreate(TestTask, (void *)0, &TaskStk[0][TASK_STK_SIZE-1], 0); <br /> OSStart();<br />}<br /><br />现在问题是<br />1:全速运行时输出<br />### Main Starts !<br />### ############<br />只输出一次就没见反映了,停止运行AXD显示PC指向一堆DCD....<br />2:单步运行时<br />程序执行到TestTask的Uart_Printf要串口输出时PC跳到0x14处,<br />此处指令为:bl 0x14 程序进入死循环<br /><br />好几天,能想到都试过了,还是没反映,实在没辙了,各位大侠帮忙看看,谢谢 |
|