定时器实例
#include "Timer.h"
#define HWTIMER_DEV_NAME "timer3"
rt_device_t TimerDev = RT_NULL;
rt_uint8_t TimerDevInit(rt_err_t (*Callback)(rt_device_t dev, rt_size_t size))
{
rt_err_t ret = RT_EOK;
rt_hwtimer_mode_t TimerMode = HWTIMER_MODE_PERIOD;
rt_hwtimerval_t TimerTimeOut =
{
.sec = 0,
.usec = 1000
};
TimerDev = rt_device_find(HWTIMER_DEV_NAME);
if (RT_NULL == TimerDev)
{
rt_kprintf("Can't find %s device!\n", HWTIMER_DEV_NAME);
return RT_ERROR;
}
ret = rt_device_open(TimerDev, RT_DEVICE_OFLAG_RDWR);
if (ret != RT_EOK)
{
rt_kprintf("open %s device failed!\n", HWTIMER_DEV_NAME);
return ret;
}
ret = rt_device_control(TimerDev, HWTIMER_CTRL_MODE_SET, &TimerMode);
if (ret != RT_EOK)
{
rt_kprintf("set mode of %s device failed!\n", HWTIMER_DEV_NAME);
return ret;
}
rt_device_set_rx_indicate(TimerDev, Callback);
if(rt_device_write(TimerDev, 0, &TimerTimeOut, sizeof(TimerTimeOut)) != sizeof(TimerTimeOut))
{
rt_kprintf("Set timeout value failed!\n");
return RT_ERROR;
}
return ret;
}
#ifndef TIMER_H
#define TIMER_H
#include <rtdevice.h>
extern rt_uint8_t TimerDevInit(rt_err_t (*Callback)(rt_device_t dev, rt_size_t size));
#endif