利用软件定时器,来实现一个打印的任务。每隔1s中打印一行字符串。
1. 定义一个软件定时器和定时周期
-
static softtimer_t printTask_timer = TIMER_INIT;
-
#define HAL_READ_TRH_PERIOD 1000
2. 定义一个时间到执行函数:回调函数
-
void printTask_handler(void* data)
-
{
-
printf("printTask_handler \n");
-
}
3. 初始化定时器,并启动它
-
void printTask_init(void)
-
{
-
/* 添加循环打印任务到 Software_timer 链表中,并启动它 */
-
Timer_StartPeriodic(&printTask_timer, HAL_READ_TRH_PERIOD, printTask_handler);
-
}
4. 记得在前一篇说过,要定义一个硬件定时器中断,来产生系统tick。
比如这里(stm32平台),利用SysTick的中断:
void SysTick_Handler(void)
{
Callback_Timer_TickISR(); // 产生系统Tick中断
}
上一篇讲到:
-
void Callback_Timer_TickISR(void)
-
{
-
timerTicks++;
-
//EventQueue_Enqueue(&hwTimerExpired);
-
EventQueue_Enqueue_ISR(&hwTimerExpired);
-
}
这样就OK了,是不是很方便了。
阅读(993) | 评论(0) | 转发(0) |