Chinaunix首页 | 论坛 | 博客
  • 博客访问: 102441
  • 博文数量: 23
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 140
  • 用 户 组: 普通用户
  • 注册时间: 2014-04-22 10:44
文章分类

全部博文(23)

文章存档

2018年(3)

2017年(1)

2015年(1)

2014年(18)

我的朋友

分类: 嵌入式

2014-09-19 14:02:14

定时器+信号的方式
setitimer + signal

信号的安装和定时器

信号的安装

  1. typedef void (*timer_func)(int)
  2. void *timer_function(int)//回调函数
  3. {
  4. //定时处理的函数
  5. }
  6. void init_sigaction(timer_func timer_function)//参数是回调函数的指针
  7. {
  8.    signal(SIGALRM, timer_function);    //alarm 信号装载回调函数。
  9. }


定时器配置

配置定时器的触发时间:

  1. void init_basetime(int usec_time)//参数是微秒数
  2. {
  3.     struct itimerval it;
  4.     unsigned int sec;
  5.     unsigned int usec;
  6.     int    res = 0;
  7.     
  8.     sec = usec_time/1000000;//
  9.     usec = (usec_time%1000);//微秒
  10.     
  11.     
  12.     it.it_interval.tv_sec = sec;
  13.     it.it_interval.tv_nsec = usec;
  14.     it.it_value.tv_sec = sec;
  15.     it.it_value.tv_nsec = usec;
  16.     res = setitimer(ITIMER_REAL, &it, NULL);
  17.     if(res != 0)
  18.     {
  19.         printf("Set timer error. %s \n", strerror(errno) );
  20.     }
  21. }

使用:
这两个函数在主函数中调用就可以,只要main函数不退出,系统都会定时的去触发回调函数去执行内容。


阅读(1390) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~