TI中文支持网
TI专业的中文技术问题搜集分享网站

程序无法切换,时间中断不能定时触发

程序基本架构,CLK函数作为硬件时间中断,每隔200us运行一次,运行SEM_post.然后task1在等待到SEM0发送后执行函数,最后切换到task2,运行后切换到task3.程序基本例程如下

void  clk()

{

//采用时间中断,每200us执行一次

SEM_post(&SEM0);

}

void  task1()

{

for(;;){

SEM_pend(&SEM0,SYS_FOREVER);

//function

SEM_post(&SEM1);

TSK_yield();

}

}

void  task2()

{

for(;;){

SEM_pend(&SEM1,SYS_FOREVER);

//function

TSK_yield();

}

}

以上程序在DEMO中(没有function功能函数添加)运行很正常。但是在实际程序中,CLK-task1-task2之后就开始运行空循环了,不再进入CLK,检查结构也查不出什么,请问能帮忙看看从哪里下手查原因吗?谢谢

noaming:

你好,

建议你添加一些打印,把整个程序的循环过程打印出来,看走到哪里出的问题。

junfeng zhang:

回复 noaming:

经过打印显示,程序第一次运行完task2后,切换到了task1的SEM_pend(&SEM0,SYS_FOREVER);这时候似乎所有的中断都不起效果,时间中断也不会运行,SEM_pend一直在等待。这个是问题点。逻辑上没有错误,难道SEM等待的时候会屏蔽所有中断?

noaming:

回复 junfeng zhang:

你好,

在没有function功能函数添加的情况下,程序打印的是什么情况?

junfeng zhang:

回复 noaming:

假设clk函数打印输出clk,task1和task2输出task1和task2.未添加function功能函数情况下,

clk-task1-task2-clk-task1-task2-clk-task1-task2———-

添加之后,clk-task1-task2.再下来就是一直空循环,不知道循环到哪去了

赞(0)
未经允许不得转载:TI中文支持网 » 程序无法切换,时间中断不能定时触发
分享到: 更多 (0)