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

中国城乡住房建设部网站网站百度统计表格怎么做

中国城乡住房建设部网站,网站百度统计表格怎么做,做电商网站价钱,注册局官网00. 目录 文章目录 00. 目录01. 定时器概述02. 定时器API03. 定时器常用API3.1 osTimerNew3.2 osTimerDelete3.3 osTimerStart3.4 osTimerStop 04. 程序示例05. 附录 01. 定时器概述 软件定时器,是基于系统Tick时钟中断且由软件来模拟的定时器,当经过设…

00. 目录

文章目录

    • 00. 目录
    • 01. 定时器概述
    • 02. 定时器API
    • 03. 定时器常用API
      • 3.1 osTimerNew
      • 3.2 osTimerDelete
      • 3.3 osTimerStart
      • 3.4 osTimerStop
    • 04. 程序示例
    • 05. 附录

01. 定时器概述

软件定时器,是基于系统Tick时钟中断且由软件来模拟的定时器,当经过设定的Tick时钟计数值后会触发用户定义的回调函数。定时精度与系统Tick时钟的周期有关。

硬件定时器受硬件的限制,数量上不足以满足用户的实际需求,因此为了满足用户需求,提供更多的定时器,OpenHarmony LiteOS-M内核提供软件定时器功能。软件定时器扩展了定时器的数量,允许创建更多的定时业务。

软件定时器功能上支持:

  • 静态裁剪:能通过宏关闭软件定时器功能。
  • 软件定时器创建。
  • 软件定时器启动。
  • 软件定时器停止。
  • 软件定时器删除。
  • 软件定时器剩余Tick数获取。

02. 定时器API

(1) osTimerNew

功能:创建并初始化一个新的软件定时器。

参数:

func:定时器到期时的回调函数。

type:定时器的类型,可以是 osTimerOnce(一次性定时器)或osTimerPeriodic(周期性定时器)。

argument:传递给定时器回调函数的参数。

attr:指向定时器属性的指针,通常可以设置为 NULL 以使用默认属性。

返回值:返回一个 osTimerId_t 类型的定时器 ID,用于后续操作定时器。如果创建失败,则返回 NULL。

(2) osTimerStart

功能:启动或重启定时器。

参数:
timer_id:通过 osTimerNew 获得的定时器 ID。

ticks:定时器超时前的 Tick 数(以 RTOS 的 Tick 周期为单位)。

返回值:返回 osStatus_t 类型的状态码,表示操作结果。成功时返回 osOK,失败时返回相应的错误码。

(3) osTimerStop

功能:停止定时器。

参数:
timer_id:通过 osTimerNew 获得的定时器 ID。

返回值:返回 osStatus_t 类型的状态码,表示操作结果。成功时返回 osOK,失败时返回相应的错误码。

(4) osTimerDelete

功能:删除定时器,释放其占用的资源。

参数:

timer_id:通过 osTimerNew 获得的定时器 ID。

返回值:返回 osStatus_t 类型的状态码,表示操作结果。成功时返回 osOK,失败时返回相应的错误码。

(5) osTimerGetName

功能:获取定时器的名称。

参数:
timer_id:通过 osTimerNew 获得的定时器 ID。

返回值:返回定时器的名称字符串。如果定时器没有设置名称,则可能返回空字符串或默认名称。

(6)其他相关函数

osTimerIsRunning:检查定时器是否正在运行。

osTimerGetRemainingTicks:获取定时器剩余的 Tick 数(可选,具体取决于 RTOS 实现)。

03. 定时器常用API

3.1 osTimerNew

osTimerId_t osTimerNew (osTimerFunc_t func, osTimerType_t type, void * argument, const osTimerAttr_t * attr)

描述:

定时器创建函数。

用于创建一个定时器,定时器osTimerStart启动之前处于停止状态。

参数:

Name描述
func定时器回调函数。
type定时器类型,仅限于osTimerOnce或osTimerPeriodic。
argument定时器回调函数参数。
attr定时器属性,当前不支持该参数,参数可为NULL。

返回:

返回创建的定时器ID。

NULL,表示执行失败或在中断中调用该函数。

3.2 osTimerDelete

osStatus_t osTimerDelete (osTimerId_t timer_id)

描述:

定时器删除函数。

参数:

Name描述
timer_id定时器ID(由osTimerNew创建)。

返回:

osOK,表示执行成功。

osErrorParameter,表示参数错误。

osErrorResource,表示其他错误。

osErrorISR,表示在中断中调用本函数。

3.3 osTimerStart

osStatus_t osTimerStart (osTimerId_t timer_id, uint32_t ticks)

描述:

定时器开始运行函数。

参数:

Name描述
timer_id定时器ID(由osTimerNew创建)。
ticks定时器颗粒度。

返回:

osOK,表示执行成功。

osErrorParameter,表示参数错误。

osErrorResource,表示其他错误。

osErrorISR,表示在中断中调用本函数。

3.4 osTimerStop

osStatus_t osTimerStop (osTimerId_t timer_id)

描述:

定时器停止运行函数。

参数:

Name描述
timer_id定时器ID(由osTimerNew创建)。

返回:

osOK,表示执行成功。

osErrorParameter,表示参数错误。

osErrorResource,表示其他错误。

osErrorISR,表示在中断中调用本函数。

04. 程序示例

创建 1 个任务和 1 个软件定时器,任务 1 间隔 1S 输出信息,定时器间隔 3S输出信息。

template.c

/******************************************************************************************************* @file        template.c***************************************************************************************************** 实验现象:打开串口助手,任务1间隔1S输出信息,定时器间隔3S输出信息******************************************************************************************************/#include <stdio.h>
#include <unistd.h>#include "ohos_init.h"
#include "cmsis_os2.h"osThreadId_t Task1_ID; //  任务1 ID
osTimerId_t Timer_ID;  // 定时器ID
#define TASK_STACK_SIZE 1024
#define TASK1_DELAY_TIME 1 // s/*** @description: 任务1* @param {*}* @return {*}*/
void Task1(void)
{while (1) {printf("enter Task 1.......\n");sleep(TASK1_DELAY_TIME); // 1秒}
}
/*** @description: 定时器1回调函数* @param {*}* @return {*}*/
void timer1_Callback(void)
{printf("enter timer1_Callback.......\n");
}/*** @description: 初始化并创建任务* @param {*}* @return {*}*/
static void template_demo(void)
{printf("-Hi3861开发板--LiteOS软件定时器\r\n");Timer_ID = osTimerNew(timer1_Callback, osTimerPeriodic, NULL, NULL);       // 创建定时器if (Timer_ID != NULL) {printf("ID = %d, Create Timer_ID is OK!\n", Timer_ID);osStatus_t timerStatus = osTimerStart(Timer_ID, 300U);      // 开始定时器, 并赋予定时器的定时值(在Hi3861中,1U=10ms,100U=1S)if (timerStatus != osOK) {printf("timer is not startRun !\n");}}osThreadAttr_t taskOptions;taskOptions.name = "Task1";              // 任务的名字taskOptions.attr_bits = 0;               // 属性位taskOptions.cb_mem = NULL;               // 堆空间地址taskOptions.cb_size = 0;                 // 堆空间大小taskOptions.stack_mem = NULL;            // 栈空间地址taskOptions.stack_size = TASK_STACK_SIZE;           // 栈空间大小 单位:字节taskOptions.priority = osPriorityNormal; // 任务的优先级Task1_ID = osThreadNew((osThreadFunc_t)Task1, NULL, &taskOptions); // 创建任务1if (Task1_ID != NULL){printf("ID = %d, Create Task1_ID is OK!\n", Task1_ID);}}
SYS_RUN(template_demo);

运行结果
在这里插入图片描述

05. 附录

http://www.dtcms.com/a/433133.html

相关文章:

  • 景区宣传网站制作模板天元建设集团有限公司六公司
  • 微信网站改版价格网站主页排版
  • 技术好的手机网站建设服务器做网站用什么系统
  • 网站建设找谁无锡网站制作工具
  • 免费用搭建网站购买网站平台如何做分录
  • 千秋网络是家西安做网站的公司成都软件公司前100强
  • 印刷报价网站源码下载网站建设项目规划书目录
  • 全国新增确诊病例广州百度首页优化
  • 鄞州区住房和城乡建设局网站河北建设厅网站上不去
  • 绵阳低价网站建设自动化毕设题目网站开发
  • 水务 网站建设叶文语 厦门建设局
  • 公司怎么注册官方网站网站开发全流程图
  • 做网站开发哪里可以接单河北 全部阳性了
  • 网站开发主要学什么价格低性能好的手机
  • 网站做进一步优化网站建设大忌
  • 深圳最好的网站开发公司电话手机网站图片 触摸 放大代码 js
  • Windows内存DC
  • 广西建设工程管理网站如何做自己的业务网站
  • 手机网站制作流程淄博网站建设制作
  • 四川省住房与城乡建设 厅网站网站优化外包服务
  • 怎么选择营销型网站建设公司网站建设实训设计思想
  • 万网网站域名注册网站开发如何修改域名
  • 公司做网站买域名之后做什么数据库课程设计报告网站开发
  • 如何区分网站开发语言wordpress媒体库 不显示
  • 赣州人才网最新招聘信息网广西网站建设seo优化
  • GDB调试中info address命令详解
  • 网站建设化妆品的目录企业网站和信息化建设
  • 广州网站设计公司科技之门
  • 国家重点学科建设网站宁波在线网
  • 网站推广方式方法百度总部地址