今天在板子上测试了定时器,下面的程序不用修改一个字,可以直接编译通过。
timer.c.zip (2 K) 下载次数:9 /*
Environment
Operating system is Ubuntu 9.10 (PC)
Using MINI2440 original installation:
http://www.mini-box.com/mini2440v2 Using default user directory /home/plg for FTP (MINI2440)
Board ip address: 192.168.2.230
Testing directory is: /home/frank/frank/test/Frank_Timer
On PC:
cd /home/frank/frank/test/Frank_Timer
arm-linux-g++ -static Frank_timer.c will create a.out
frank@frank-laptop:~/frank/test/Frank_Timer$ ftp 192.168.2.230
Connected to 192.168.2.230.
220 FriendlyARM FTP server (Version 6.4/OpenBSD/Linux-ftpd-0.17) ready.
Name (192.168.2.230:frank): plg
331 Password required for plg.
Password:
230 User plg logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> put a.out
local: a.out remote: a.out
200 PORT command successful.
150 Opening BINARY mode data connection for 'a.out'.
226 Transfer complete.
513951 bytes sent in 0.30 secs (1658.2 kB/s)
ftp>
On MINI2440:
cd /home/plg
./a.out
Now on the console we can see:(PC)
sec = 1121673296 usec = 463275
2005 - 7 - 18 15:54:56
sec = 1121673301 usec = 463274
2005 - 7 - 18 15:55:1
sec = 1121673306 usec = 463279
2005 - 7 - 18 15:55:6
sec = 1121673311 usec = 463274
2005 - 7 - 18 15:55:11
sec = 1121673316 usec = 463278
2005 - 7 - 18 15:55:16
sec = 1121673321 usec = 463278
2005 - 7 - 18 15:55:21
sec = 1121673326 usec = 463280
2005 - 7 - 18 15:55:26
sec = 1121673331 usec = 463279
2005 - 7 - 18 15:55:31
sec = 1121673336 usec = 463280
2005 - 7 - 18 15:55:36
sec = 1121673341 usec = 463284
2005 - 7 - 18 15:55:41
sec = 1121673346 usec = 463276
2005 - 7 - 18 15:55:46
Output every five seconds.
Enter Ctrl+C will terminate the timer.
*/
// Source from
http://sns.linuxpk.com/space-1717-do-blog-id-13229.html/*******************************************************
* Copyright (C), 2008
*
* 文件名 : timer.c
*
* 创建人 : Bai Huai Wei <
bhw1996@126.com>
*
* 日期 :2008
*
* 版本号 : 1.0
*
*文件描述 :定时器中断。
********************************************************/
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>
#include <termios.h>
#include <signal.h>
#include <sys/ioctl.h>
#include <time.h>
#include <sys/time.h>
#include <sys/timeb.h>
/*********************************************************
* 函数名 :static void ElsfTimer(int signo)
*
* 参数 :int signo
*
* 功能描述 :得到当前时间。
*
* 返回值 :无
**********************************************************/
static void ElsfTimer(int signo)
{
struct timeval tp;
struct tm *tm;
//tp.tv_sec 秒。 tp.tv_usec 微妙
gettimeofday(&tp,NULL);
tm=localtime(&tp.tv_sec);
printf(" sec = %ld \t",tp.tv_sec);
printf(" usec = %ld \n",tp.tv_usec);
printf(" %d - %d - %d %d:%d:%d \n",tm->tm_year+1900,tm->tm_mon+1,tm->tm_mday,tm->tm_hour,\
tm->tm_min,tm->tm_sec);
}
/*********************************************************
* 函数名 :staitc void InitTime(void)
*
* 参数 :无
*
* 功能描述 :初始化定时器。
*
* 返回值 :无
**********************************************************/
static void InitTime(int tv_sec,int tv_usec)
{
struct itimerval value;
signal(SIGALRM, ElsfTimer);
value.it_value.tv_sec = tv_sec; //秒
value.it_value.tv_usec = tv_usec; // 纳秒
value.it_interval.tv_sec = tv_sec;
value.it_interval.tv_usec = tv_usec;
setitimer(ITIMER_REAL, &value, NULL);
}
int main( void)
{
InitTime(5,0);
while(1)
{
}
exit( 0 );
}