【北京迅为】iTOP-4412全能版使用手册-第二十一章 延时函数专题

iTOP-4412全能版采用四核Cortex-A9,主频为1.4GHz-1.6GHz,配备S5M8767 电源管理,集成USB HUB,选用高品质板对板连接器稳定可靠,大厂生产,做工精良。接口一应俱全,开发更简单,搭载全网通4G、支持WIFI、蓝牙、陀螺仪、CAN总线、RS485总线、500万摄像头等模块,稳定运行Android 4.0.3/Android 4.4操作,系统通用Linux-3.0.15+Qt操作系统(QT支持5.7版本),Ubuntu版本:12.04,接口智能分配 方便好用。


第二十一章 延时函数专题

本章介绍的延时函数,使用起来非常简单,但是却会经常用到的,所以单独作为一个专题来介绍。

除了介绍系统编程中的延时函数,还会介绍到内核中的延时函数,它们的使用方法多是类似的,在驱动专题中大家可以使用,本章就不提供具体的例子了,只介绍函数调用。

本章配套视频为

“视频 12_01 延时之基本知识介绍”

“视频 12_02 延时之延时实验

21.1 Linux 中的延时函数介绍

这里要注意的是,不同的操作系统下,延时函数是不一样的,由具体系统决定的。Linux 中常用的函数有以下函数 sleep、usleep、ndelay、udelay、mdelay 等。

Linux 系统编程下用到的延时函数在头文件“#include <unistd.h>”中,包括函数sleep、usleep。

Linux 内核中用到的延时函数在“#include <linux/delay.h>”中,包括函数 ndelay、udelay、mdelay。

函数 sleep

函数 sleep 是秒延时。函数原型如下:

unsigned int sleep(unsigned int seconds);

例如:sleep(1),即延时一秒。

返回无符号的整形数值,如果延时成功则返回 0,如果延时过程中被打断,则返回剩余的秒数。

例如 sleep(5),返回值为 3,那么实际延时就是 5-3=2 秒。

函数 usleep 

函数 usleep 是微妙延时。函数原型如下:

int usleep(useconds_t usec);

useconds 需要小于 1000000

例如:usleep(10),表示延时 10 微秒。

延时成功则返回 0,失败则返回-1

函数 delay 系列

函数 delay 系列是在 Linux 内核中用的,也就是在 linux 驱动中,会用到。函数 mdelay 是毫秒延时,函数原型如下:

void mdelay(unsigned long msecs);

例如:mdelay(10),表示延时 10 毫秒。

函数 udelay 是微秒延时,函数原型如下:

void udelay(unsigned long usecs);

例如:udelay(5),表示延时 5 微秒。

函数 ndelay 是纳秒延时,函数原型如下:

void ndelay(unsigned long nsecs);

例如:ndelay(3),表示延时 3 纳秒。

再提醒一下,这里的 delay 函数只是在内核中使用的,sleep 是在系统编程中使用的。要注意区分。

21.2 Linux应用中的延时实验

本实验先介绍简单的延时应用,在学习了后面时间管理之后,再对这些延时函数的进度进行测试,虽然函数看起来类似,但是实现的原理不一样,精度不同,导致应用的场合也会不同。

函数代码

linux 系统编程中使用的是 sleep 和 usleep 函数。编写简单的 sleep.c 文件测试 sleep 函数。

首先添加头文件,如下图所示。

 然后 main 函数如下图所示。

 

如上图代码所示。

使用 sleep 和 usleep 函数分别延时 2 秒和 1 秒,然后循环打印信息。

编译运行测试

在 Ubuntu 系统下,如下图所示,进入前面实验创建的目录“/home/linuxsystemcode/”,使用命令“mkdir sleep”新建 sleep 文件夹,将源码sleep.c 拷贝进去。

进入新建的文件夹 sleep,如下图所示。

 

使用命令“arm-none-linux-gnueabi-gcc -o sleep sleep.c -static”编译 sleep 文件, 如下图所示,使用命令“ls”可以看到生成了 sleep 可执行文件。 

 

这里介绍 U 盘拷贝代码的方法,也可以编译进文件系统,具体方法参考 10.3.5 小节。将编译成的可执行文件 sleep,拷贝到 U 盘,启动开发板,插入 U 盘,加载 U 盘,运行程序如下。 

 

如上图所示,运行之后会打印“sleep 2!”和“usleep 1000000!”。退出可以使用键盘输入“Ctrl+c”

21.3 Linux内核驱动中的延时

Linux 内核中使用 delay 系列函数,在后面驱动的学习中,再去测试 delay 函数,用起来比较简单。

先要调用头文件“#include <linux/delay.h>”,然后就可以使用 delay 系列的函数,在驱动做做延时操作了。

常用的地方,例如在驱动对硬件进行初始化的时候,例如芯片有上电时序,那么这个时候就需要用到延时函数,直接调用 delay 即可。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值