
什么语言?C++?JAVA?
while(true)
{
run();//你要运行的程序
sleep(2000);//间隔2秒
}
当然这个是死循环,满足你说的要求,但是不好,一般情况下:
如果是C++,可以用SetTimer来定时触发这个程序,KillTimer来解除定时触发。
如果是JAVA,可以用Timer类去schedule
TimerTask类的run()方法。
你要把你的主要实现和主界面分开,就是用多线程,一个线程用于处理数据,主界面线程用于显示和接受用户 *** 作,当用户按开始按钮时,开启处理线程,暂停时暂停处理线程,继续时再唤醒处理线程就行了。直接在主界面线程中sleep,肯定会造成界面没有响应的。
/
File: Mainc
功能: 使用定时器0实现1s定时,并打开IRQ中断,控制LED闪烁
同时使用定时器1实现比较匹配输出
/
#include "configh"
#define LEDCON 0x00002000 /P013引脚控制LED,低电平点亮/
/
名称: main()
功能: 控制LED闪烁
/
int main(void)
{ PINSEL0=0x02000000; //设置MAT10连接到P012
PINSEL1=0x00000000;
IODIR=LEDCON; //设置LED控制口为输出
TargetInit(); //定时器0初始化(Targetc文件)
while(1); //等待定时器0中断或定时器1匹配输出
return(0);
}
以上是主函数
接下来是targetc这个文件中的初始化函数(targetc是模板中的一个文件)
void TargetInit(void)
{
/初始化定时器0,实现05s定时;定时器1实现01s定时
Fclk=Fosc4=110592MHz4=MHz
Fpclk=Fcclk/4=MHz/4=110592MHz
/
T0PR=99; //设置定时器分频为100分频,得147450Hz
T0MCR=0x03; //匹配通道0匹配中断并复位T0TC
T0MR0=110592/2; //比较值
T0TCR=0x03; //启动并复位T0TC
T0TCR=0x01;
T1PR=99; //设置定时器分频为100分频,得147450Hz
T1MCR=0x02; //匹配通道0匹配中断并复位T1TC
T1MR0=110592/10; //比较值
T1EMR=0x30; //设置定时器1的T1MR0匹配输出,输出方式为翻转
T1TCR=0x03; //启动并复位T1TC
T1TCR=0x01;
/设置定时器0中断IRQ/
VICIntSelect=0x00; //所有中断通道设置为IRQ中断
VICVectCntl0=0x24; //定时器0中断通道分配最高优先级(向量控制器0)
VICVectAddr0=(uint32)IRQ_Exception; //设置中断服务程序地址向量
VICIntEnable=0x00000010; //使能定时器0中断
}
SetTimer(1,2000,NULL);//
设置定时器2秒启动
void
CXXDlg::OnTimer(UINT
nIDEvent)
{
KillTimer(nIDEvent);//
你的代码
OnCancel();
CDialog::OnTimer(nIDEvent);
}
添加消息循环
BEGIN_MESSAGE_MAP(CXXDlg,
CDialog)
……
ON_WM_TIMER()
END_MESSAGE_MAP()
以上就是关于怎样反复地运行一个程序,然后结束全部的内容,包括:怎样反复地运行一个程序,然后结束、MFC让程序暂停后等待用户按一个继续按钮,程序继续执行,如何实现、飞利浦2100系列ARM7的定时器计时程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)