Chinaunix首页 | 论坛 | 博客
  • 博客访问: 830935
  • 博文数量: 281
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2770
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-02 19:45
个人简介

邮箱:zhuimengcanyang@163.com 痴爱嵌入式技术的蜗牛

文章分类
文章存档

2020年(1)

2018年(1)

2017年(56)

2016年(72)

2015年(151)

分类: 嵌入式

2015-12-10 16:19:57

利用软件定时器,来实现一个打印的任务。每隔1s中打印一行字符串。

1. 定义一个软件定时器和定时周期

点击(此处)折叠或打开

  1. static softtimer_t printTask_timer = TIMER_INIT;
  2. #define HAL_READ_TRH_PERIOD 1000

2. 定义一个时间到执行函数:回调函数

点击(此处)折叠或打开

  1. void printTask_handler(void* data)
  2. {
  3.     printf("printTask_handler \n");
  4. }

3. 初始化定时器,并启动它

点击(此处)折叠或打开

  1. void printTask_init(void)
  2. {
  3.     /* 添加循环打印任务到 Software_timer 链表中,并启动它 */
  4.     Timer_StartPeriodic(&printTask_timer, HAL_READ_TRH_PERIOD, printTask_handler);
  5. }

4. 记得在前一篇说过,要定义一个硬件定时器中断,来产生系统tick。
比如这里(stm32平台),利用SysTick的中断:
void SysTick_Handler(void)
{
    Callback_Timer_TickISR();    // 产生系统Tick中断
}
上一篇讲到:

点击(此处)折叠或打开

  1. void Callback_Timer_TickISR(void)
  2. {
  3.     timerTicks++;
  4.     //EventQueue_Enqueue(&hwTimerExpired);
  5.     EventQueue_Enqueue_ISR(&hwTimerExpired);
  6. }

这样就OK了,是不是很方便了。



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