当前位置: 首页 > news >正文

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

iTOP-4412开发板【精英版】搭载三星Exynos四核处理器,配备1GB内存,4GB固态硬盘EMMC存储,兼具快速读取与大容量,纵使海量思考也能及时处理。配备三星S5M8767电源管理。配备Android、Linux+Qt、Ubuntu操作系统,开启学习、研发的全新方式。Exynos4412开发板处理器成功应用于三星GALAXYS3,联想K860,魅族MX2等热门产品当中,并取得巨大成功。功耗控制以及强劲的性能一直为业内称道,超过5000万片的出货量,足以证明其稳定性与可用性。已成为三星官方推广的处理器之一,并承诺长期供货。


第二十一章 延时函数专题

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

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

本章配套视频为

“视频 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 即可。

相关文章:

  • Javascript什么是原型和原型链,八股文
  • 单片机 - STM32F407 ADC 模式详解:单次转换、连续转换、扫描模式、非扫描模式
  • 【飞牛os0.9.9系统使用docker 挂载cgroup2异常问题】
  • platformIO开发ESP32程序时,出现崩溃重启时如何根据堆栈定位到源代码位置
  • 抖音 pc + 翻页
  • 《高等数学》(同济大学·第7版)第五章第一节定积分的概念与性质
  • 动态代理选择:JDK vs CGLIB
  • 荒原之梦:致力于考研数学实战
  • 如何卸载360及360壁纸
  • 【unitrix】 1.6 数值类型基本结构体(types.rs)
  • Java大模型开发入门 (8/15):连接外部世界(上) - RAG入门与文档加载
  • Ubuntu安装Gym及其仿真
  • 永磁同步电机控制算法--双矢量模型预测转矩控制MPTC(占空比)
  • Keepalived 高可用
  • MACD指标
  • java中扩展运算符
  • <11>-MySQL事务管理
  • 算法训练第十七天
  • Hugging face 和 魔搭
  • 浅拷贝 与 深拷贝
  • 广西网站建设证件查询/百度合伙人官网app
  • 视频网站建站免费/软文推广怎么做
  • 日本男女做受网站/深圳十大教育培训机构排名
  • 怎么做网站写手/百度指数如何分析数据
  • 长沙网站建设有哪些/网站推广方案有哪些
  • 不懂代码如何做网站/网络营销推广实训报告