LV010-定时器实例
一、定时器 demo
1. demo 源码
09_kernel_timer/01_timer_basic
2. 开发板验证
这个基本的定时器测试 demo 就是在驱动中直接打开的,我们使用以下命令加载驱动就会启动定时器:
shell
insmod sdriver_demo.ko然后会看到以下打印信息:

可以看到超时时间是 5s,基本上看内核日志的时间戳就可以知道每次打印间隔就是 5s。
二、app 控制定时器
app 怎么控制定时器?我们可以通过 ioctl 方法来实现,我们可以定义三个命令:
c
#define CMD_TIMER_SETPERIOD (_IOW('T', 100, int)) /* 设置定时器周期命令 */
#define CMD_TIMER_OPEN (_IO('T', 101)) /* 打开内核定时器 */
#define CMD_TIMER_CLOSE (_IO('T', 102)) /* 关闭内核定时器 */1. demo 源码
2. 开发板验证
我们执行以下命令,来验证效果:
shell
./app_demo.out /dev/sdevchr 4然后们可以看到以下打印信息:

可以看到打开定时器后,默认超时时间为 5s,之后改为 2 秒超时,每次打印间隔变成了 2s。
三、秒设备
我们来通过定时器定义一个秒设备。这个直接看 demo 吧:
其实就是定义一个变量,再定义一个定时器,每秒让变量自增,应用再来读取。