文章目录
1 软定时器的启动与停止
软定时器单独开一个定时器任务来处理,硬定时器直接放在Systick中断中进行处理。
定时器启动:

定时器停止:

具体的实现代码如下:
/*************************************** Copyright (c)******************************************************
** File name : tTimer.c
** Latest modified Date : 2016-06-01
** Latest Version : 0.1
** Descriptions : tinyOS的软定时器实现
**
**--------------------------------------------------------------------------------------------------------
** Created by : 01课堂 lishutong
** Created date : 2016-06-01
** Version : 1.0
** Descriptions : The original version
**
**--------------------------------------------------------------------------------------------------------
** Copyright : 版权所有,禁止用于商业用途
** Author Blog : http://ilishutong.com
**********************************************************************************************************/
#include "tinyOS.h"
#include "tTimer.h"
// "硬"定时器列表
static tList tTimerHardList;
// "软"定时器列表
static tList tTimerSoftList;
// 用于访问软定时器列表的信号量
static tSem tTimerProtectSem;
// 用于软定时器任务与中断同步的计数信号量
static tSem tTimerTickSem;
/**********************************************************************************************************
** Function name : tTimerInit
** Descriptions : 初始化定时器
** parameters : timer 等待初始化的定时器
** parameters : delayTicks 定时器初始启动的延时ticks数。
** parameters : durationTicks 给周期性定时器用的周期tick数,一次性定时器无效
** parameters : timerFunc 定时器回调函数
** parameters : arg 传递给定时器回调函数的参数
** parameters : timerFunc 定时器回调函数
** parameters : config 定时器的初始配置
** Returned value : 无
***********************************************************************************************************/
void tTimerInit (tTimer * timer, uint32_t delayTicks, uint32_t durationTicks,
void (*timerFunc) (void * arg), void * arg, uint32_t config)
{
tNodeInit(&timer->linkNode);
timer->startDelayTicks = delayTicks;
timer->durationTicks = durationTicks;
timer->timerFunc = timerFunc;
timer->arg = arg;
timer->config = config;
// 如果初始启动延时为0,则使用周期值
if (delayTicks == 0)
{
timer->delayTicks = durationTicks;
}
else
{
timer->del

最低0.47元/天 解锁文章
979

被折叠的 条评论
为什么被折叠?



