SylixOS下定时器使用

2023-11-02

1. 适用范围
    本文档介绍SylixOS下实现定时器功能的方法,使用者应熟悉SylixOS以及SylixOS下的编程规范。
2. 实现方案
    SylixOS提供标准定时器接口,用户可在应用层直接调用,下面列出定时器的创建、启动、停止以及删除等操作,除此之外系统还提供如定时器复位、获取定时器状态等操作接口。
2.1 创建定时器

    创建定时器API_TimerCreate函数原型为:

#include <SylixOS.h>
LW_OBJECT_HANDLE  API_TimerCreate (CPCHAR       pcName,
                                   ULONG        ulOption,
                                   LW_OBJECT_ID	*pulId);
    API_TimerCreate函数原型分析:
  • 函数执行成功返回定时器句柄,执行失败返回0;
  • 参数pcName为定时器名称;
  • 参数ulOption为定时器类型,SylixOS支持告诉定时器和普通定时器;
  • 参数pulId为定时器ID号。

2.2 启动定时器

    启动定时器API_TimerStart函数原型为:

#include <SylixOS.h>
ULONG  API_TimerStart (	LW_OBJECT_HANDLE         	ulId,
                       	ULONG                    	ulCounter,
                       	ULONG                   	ulOption,
                       	PTIMER_CALLBACK_ROUTINE		cbTimerRoutine,
                       	PVOID                  		pvArg);

    API_TimerStart函数原型分析:

  • 函数执行成功返回ERROR_NONE,执行失败返回错误码;
  • 参数ulId为定时器句柄;
  • 参数ulCounter为重复计数初始值;
  • 参数ulOption为操作选项;
  • 参数cbTimerRoutine为回调函数;
  • 参数pvArg为参数。
2.3 停止定时器

    停止定时器API_TimerCancel函数原型为:

#include <SylixOS.h>
ULONG  API_TimerCancel (LW_OBJECT_HANDLE  ulId);

    API_TimerCancel函数原型分析:

  • 函数执行成功返回ERROR_NONE,执行失败返回错误码;
  • 参数ulId为定时器句柄。
2.4 删除定时器

    删除定时器API_TimerDelete函数原型为:

#include <SylixOS.h>
ULONG  API_TimerDelete (LW_OBJECT_HANDLE  *pulId);

    API_TimerDelete函数原型分析:

  • 函数执行成功返回ERROR_NONE,执行失败返回错误码;
  • 参数pulId为定时器句柄。
3. 使用实例
    SylixOS下定时器使用实例如程序清单 3.1所示。

程序清单 3.1  定时器实例

#include <stdio.h>
 
#define  TIMER_FREQUENCY  100                       /*  定时器检测周期              */

static void  timerCallBack (void  *pvArg)
{
    printf("this is a timer\n");
}

Int  main (int argc, char **argv)
{
    unsigned long  ulRet   = -1;
    timer_t         timerFd = 0;

    timerFd = API_TimerCreate("timer",
                              LW_OPTION_ITIMER | LW_OPTION_OBJECT_LOCAL,
                              LW_NULL);          /*  创建定时器                  */
    if (timerFd == ERROR_NONE) {
        printf("timer create failed\n");
        return  (PX_ERROR);
    }

    ulRet = API_TimerStart(timerFd,
                           TIMER_FREQUENCY,
                           LW_OPTION_AUTO_RESTART,
                           (PTIMER_CALLBACK_ROUTINE)timerCallBack,
                            LW_NULL);              /*  启动定时器                  */
    if (ulRet != ERROR_NONE) {
        printf("timer start failed\n");
        API_TimerDelete(&timerFd);
        return  (PX_ERROR);
    }

    while (1);

    return  (ERROR_NONE);
}

    在虚拟器上运行程序,结果如程序清单 3.2所示。

程序清单 3.2  运行结果
[root@sylixos:/root]# /apps/testApp/testApp
this is a timer
this is a timer
this is a timer
this is a timer
this is a timer
... 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SylixOS下定时器使用 的相关文章

  • SylixOS下DNS配置

    SylixOS下支持DNS xff08 域名解析 xff09 服务 xff0c 既可以通过域名地址来访问网络地址 测试 先进行一个域名解析的测试 xff1a 由上图可知 xff0c 在其他网络配置正确的情况下 xff0c SylixOS可以
  • SylixOS 教培官网上线

    4月末翼辉创建的包括SylixOS教培在内的文档中心已上线 今天SylixOS教培又上线了 Shell 命令手册 和 IDE 使用手册 方便大家学习和查阅SylixOS相关知识点 SylixOS教培官网 https docs acoinfo
  • sylixos标准工程移植到Lite版本

    1 概述 针对低端处理器 xff08 如ARM M系列处理器 xff09 的开发工作 xff0c 翼辉信息推出了SylixOS Lite工程版本 SylixOS Lite版本工程属于SylixOS轻量级工程 xff0c 与标准的SylixO
  • Spring Boot创建定时任务(并实现动态参数传递执行)

    关于Spring Boot创建定时任务非常简单 有两种方式进行创建 第一种注解方式 静态参数 使用 Scheduled 进行创建定时任务 仅仅几行代码就可以完成 而且支持灵活的参数表达式cron 还有支持简单的延时操作 例如 fixedDe
  • 51单片机——串口通信

    51单片机 串口通信 串口通信 串口通信的原理 串口的配置 定时器的配置 c源代码 netty源代码 结果 本篇博客的最终效果是实现51单片机用串口发送Hello World netty监听串口读到Hello World后回发给51单片机
  • Quartz概述

    Quartz是开源任务调度框架中的翘楚 它提供了强大的 任务调度机制 Quartz允许开发人员灵活的定义触发器的调度时间表 并可对触发器和任务进行关联映射 此外 Quartz提供了调度运行环境的持久化机制 可以保存并恢复调度现场 即使系统因
  • [Linux用户空间编程-3]:Linux定时机制的几种实现方法

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 123376014 目录 前言 定时器的
  • STM32理论 —— 定时器、时钟

    文章目录 1 定时器 1 1 分类与简介 1 1 1 分类与主要功能特点 1 1 2 三种常用的定时器简介 1 1 3 三种计数模式 1 1 4 定时器计数原理 1 1 5 如何快速定位定时器对应IO 引脚 1 2 时钟来源 1 3 通用定
  • js定时器单次执行、循环执行

    1 定时器定义 定时器 用以指定在一段特定的时间后执行某段程序 2 定时器应用 设置只执行一次的定时器 window setTimeout send 1000 设置重复执行的定时器 self setInterval send 8 1000
  • SylixOS Unit Test介绍

    1 Unit Test工程介绍 在开发过程中 经常需要进行复杂的测试工作 部分测试工作需要生成多个可执行程序 普通类型的工程在测试时需要建立多个测试工程 这样会导致测试工作冗余繁杂 Unit Test 工程可以实现一个工程生成多个可执行程序
  • vue定时器无法停止。

    vue模板里面的定时器问题 文章目录 前言 一 定时器是什么 二 使用步骤 1 使用过程 2 读入数据 总结 前言 有些时候我们在使用vue模板时 不免会使用定时器来定时请求后台获取数据 但是在获取数据的时候 定时器就像踩不住刹车的小车 飘
  • STM32单片机示例:多个定时器级联使用

    文章目录 目的 基础说明 关键配置与代码 示例链接 目的 有些情况下会遇到单片机的定时器位数不够用 这时候可以使用低定时器级联的方式来处理 这里将对此做个示例说明 基础说明 这里说的定时器级联是指一个定时器正常计数工作 然后在发生溢出时发送
  • 看门狗定时器

    看门狗定时器 WDT Watch Dog Timer 是单片机的一个组成部分 它实际上是一个计数器 一般给看门狗一个数字 程序开始运行后看门狗开始倒计数 如果程序运行正常 过一段时间CPU应发出指令让看门狗复位 重新开始倒计数 如果看门狗减
  • 基于51单片机的时钟设计

    今天小刚做了一个基于51单片机的时钟 本来想把数码管显示动态扫描放到定时器1的中断里到但是 一按按键 就卡住了 效果不是很理想 所以就放弃了这种方案 不过最后也实现了功能 以下是程序代码 4个按键功能 1 切换 2 时间 3 时间 4 清零
  • java定时器,每天00:00执行任务

    import java text SimpleDateFormat import java util Calendar import java util Timer import java util TimerTask public cla
  • Unity中定时器的简易使用

    定时器写法1 float total time void Update this total time Time deltaTime if total time gt 5 5秒后停止 return 定时器写法2 void Hello thi
  • STM32定时器----TIMx->SR寄存器

    在研究stm32定时器时发现 当进入定时器的中断时 定时器计数器以及中断接收时正常运行的 并没有因为进入中断而停止 具体看以下分析 定时器初始化代码 TIM捕获通道开启宏定义 1 开启 0 关闭 define TIM ICCH1 1 def
  • C51单片机数码管动态显示

    数码管作为最廉价的输出设备 在各种自动化设备中有很大的应用 最简单普通的显示方式为动态刷新显示 称为假动态显示 即通过分时扫描每一位 利于人眼的视觉停留现象 造成一种静态显示的效果 如下图所示 C51单片机由于运行速度很慢 在高刷新频率下
  • SylixOS学习三—— SylixOS的引导与安装1

    自学SylixOS启程之旅笔记 一 SylixOS 引导过程分析 1 SylixOS 常用引导程序 2 SylixOS 支持ARM设备的几种引导方式 3 SylixOS引导过程分析 总流程分析 3 1 一个设备从上电到启动完成的整个流程 3
  • VMware 中搭建 SylixOS 环境

    1 制作 x86 平台 U 盘启动盘 详细步骤见 RealEvo IDE 使用手册 第八章 制作成功后插入 U 盘 2 创建 VMware 虚拟机设备 打开 VMware 这里使用版本为 15 5 6 点击 创建新的虚拟机 按如下步骤创建虚

随机推荐

  • 计算机视觉项目-人脸识别与检测

    点击上方 小白学视觉 选择加 星标 或 置顶 重磅干货 第一时间送达 作者丨吃猫的鱼python CSDN 编辑丨3D视觉开发者社区 目 录 content 一 项目介绍前言 二 识别检测方法 本文方法 项目解析 三 完整代码及效果展示 一
  • 已解决Win10家庭版找不到组策略gpedit.msc

    已解决Win10家庭版找不到组策略gpedit msc 本文目录 一 Bug描述 二 定位报错点及原因 三 解决方案 1 建立一个txt文档 四 注意事项 总结 写在后面的话 一 Bug描述 今天在解决回收站的问题时候 顺便还发现了找不到组
  • Conda更新报错:requests.exceptions.HTTPError: 404 Client Error: Not Found for url: https://mirrors.tuna.t

    Conda更新报错 requests exceptions HTTPError 404 Client Error Not Found for url https mirrors tuna tsinghua edu cn anaconda p
  • “指定的文件名无效或太长” 无法拷贝,咋办

    话不多说 上图 移动硬盘中的数据 无法拷贝 无法删除 无法移动 无法改名 无法用RAR压缩 怎么办呢 我要拷出来用呢 这是因为 文件名中有冒号 冒号属于特殊字符 windows不认冒号 解决方法 不要在windows底下 拷贝了 找一个LI
  • 如何写出正确CUDA程序(持续更新中)

    本文不谈CUDA优化 只谈如何正确写出CUDA程序 先写对 再说优化 最近写CUDA程序也是断断续续的 经常程序写完了需要很长的时间调试 各种错误 调试的方法也是简单的printf 目前没找到更好的调试方法 如果有更好的办法的化希望告知 昨
  • python flask使用session.delete(result)删除数据库数据报错Class ‘builtins.list‘ is not mapped

    下面代码报错 results session query SchoolModel filter by exam id examId all session delete results session commit Class builti
  • SpringMVC框架(详解)

    目录 一 简介 1 1 什么是MVC 1 2 SpringMVC的优缺点 1 3 MVC模式 二 使用SpringMvc 21 创建maven web项目 修改webapp目录下WEB INF目录下的web xml文件 2 2 web xm
  • Elasticsearch专栏-5.es基本用法-分词查询

    es基本用法 分词查询 什么是分词 如何查看分词结果 分词涉及关键字说明 text和keyword match和term 举例说明 分词查询 match phrase 什么是分词 所谓分词 就是把一段语句 分割成一个个单词的过程 比如 71
  • 睿智的目标检测45——TF2搭建Faster R-CNN目标检测平台

    睿智的目标检测45 TF2搭建Faster R CNN目标检测平台 学习前言 什么是FasterRCNN目标检测算法 源码下载 Faster RCNN实现思路 一 预测部分 1 主干网络介绍 2 获得Proposal建议框 3 Propos
  • OpenSessionInViewFilter的作用及原理

    Hibernate 允许对关联对象 属性进行延迟加载 但是必须保证延迟加载的操作限于同一个 Hibernate Session 范围之内进行 如果 Service 层返回一个启用了延迟加载功能的领域对象给 Web 层 当 Web 层访问到那
  • JDK配置,切换

    目录 基础概念 windows 安装版 解压版 多个JDK切换 基础概念 JDK安装版会向注册表里面写入一些配置信息 添加环境变量信息 而解压版不会 需要自己配置环境变量 指向jdk的安装目录JAVA HOME JDK的安装路径 指定命令搜
  • 在openeuler22.03平台上基于atmoz/sftp容器运行老版本的openssh服务器

    在国产化openeuler22 03平台上容器化openssh默认为8 8p1 为进行安全加固 我们将其升级到了9 3了 但部分应用的sftp客户端版本老旧 无法连接到新版服务器 故本文尝试在国产开源操作系统搭建老版本的openssh服务器
  • 更新服务器列表不显示进度条,Ajax 请求服务器更新进度条

    Ajax Progress Bar var xmlHttp var key var bar color gray 进度条的颜色 var span id block var clear function createXMLHttpReques
  • 【C++】泛型编程

    为了让函数或者类有更好的复用性 C 引入了摸板的技术 让不同的数据类型 能使用到相同的函数或者类中去 这种编程的思想也叫做泛型编程 一 摸板 void Swap int left int right int temp left left r
  • Pandas系列学习(二):数据读取与输出

    平时工作中 主要会涉及到csv excel和sql等数据的导入与导出比较多 pandas库也内置了相应的函数进行处理读取与输出这些文件 首先 看看pd read csv 函数的语法格式如下 1 pd read csv pd read csv
  • ArcGIS:读取nc格式文件并导出为tif格式文件,降雨或温度NC等数据

    使用ArcGIS读取nc文件步骤 1 打开ArcGIS 在多维工具下选择 创建NetCDF栅格图层 2 输入nc文件 其他参数可忽略 点击确定 3 创建好后 右键点击图层 点击属性 选择 NetCDF 然后选择波段纬度 接着点击纬度对应的值
  • [XenServer] 修改默认安装XenServer系统盘(4G)大小

    安装XenServer系统盘默认大小为4G 安装前我们可以调整大小 注 此教程只适用于在全新安装XenServer的时候使用 已经安装过XenServer的无法修改系统盘 4G 大小 注 如果带数据重装 安装的时候一定要保证XenServe
  • day o1

    一java的发展史 1995年Sun公司发布Java1 0版本 1997年发布Java 1 1版本 1998年发布Java 1 2版本 2000年发布Java 1 3版本 2002年发布Java 1 4版本 2004年发布Java 1 5版
  • C2143 C4430 C2238错误

    原因是头文件互相包含了 错误1 error C2143 语法错误 缺少 在 lt 的前面 错误2 error C2238 意外的标记位于 之前 错误3 error C4430 缺少类型说明符 假定为int 注意 C 不支持默认int
  • SylixOS下定时器使用

    1 适用范围 本文档介绍SylixOS下实现定时器功能的方法 使用者应熟悉SylixOS以及SylixOS下的编程规范 2 实现方案 SylixOS提供标准定时器接口 用户可在应用层直接调用 下面列出定时器的创建 启动 停止以及删除等操作