1. 程式人生 > >9、軟定時器

9、軟定時器

軟定時器

  1. 軟定時器的原理與建立
  2. 軟定時器的啟動與停止
  3. 軟定時器的刪除與狀態查詢

1、軟定時器的原理與建立

// 軟定時器結構
typedef struct _tTimer
{
 // 連結串列結點
tNode linkNode;

// 初次啟動延後的ticks數
uint32_t startDelayTicks;

// 週期定時時的週期tick數
uint32_t durationTicks;

// 當前定時遞減計數值
uint32_t delayTicks;

// 定時回撥函式
void (*timerFunc) (void * arg);

// 傳遞給回撥函式的引數
void * arg;

// 定時器配置引數
uint32_t config;

// 定時器狀態
tTimerState state;
}tTimer;
#// 定時器1:100個tick後啟動,以後每10個tick啟動一次
tTimerInit(&timer1, 100, 10, timerFunc, (void *)&bit1, TIMER_CONFIG_TYPE_HARD);
#原型:
/**********************************************************************************************************
** Function name:   tTimerInit
** Descriptions :   初始化定時器
** parameters   :   timer 等待初始化的定時器
** parameters   :   delayTicks 定時器初始啟動的延時ticks數。
** parameters   :   durationTicks 給週期性定時器用的週期tick數,一次性定時器無效
** parameters   :   timerFunc 定時器回撥函式
** parameters   :   arg 傳遞給定時器回撥函式的引數
** parameters   :   timerFunc 定時器回撥函式
** parameters   :   config 定時器的初始配置
** Returned value   :   無
***********************************************************************************************************/
void tTimerInit (tTimer * timer, uint32_t delayTicks, uint32_t durationTicks,
 void (*timerFunc) (void * arg), void * arg, uint32_t config)
{
tNodeInit(&timer->linkNode);
timer->startDelayTicks = delayTicks;
timer->durationTicks = durationTicks;
timer->timerFunc = timerFunc;
timer->arg = arg;
timer->config = config;

// 如果初始啟動延時為0,則使用週期值
if (delayTicks == 0)
{
timer->delayTicks = durationTicks;
}
else
{
timer->delayTicks = timer->startDelayTicks;
}
timer->state = tTimerCreated;
}

2、軟定時器的啟動與停止

3、軟定時器的刪除與狀態查詢

相關推薦

9定時

軟定時器 軟定時器的原理與建立 軟定時器的啟動與停止 軟定時器的刪除與狀態查詢 1、軟定時器的原理與建立 // 軟定時器結構 typedef struct _tTimer { //

java定時Spring定時和Quartz定時

   當前java程式中能夠實現定時的主要有三種方式,分別是:java定時器,spring定時器,quartz定時器。    下面依次講講他們的應用! java定時器的應用    其實java很早就有解決定時器任務的方法了,ja

嵌入式常用模組——定時

文章目錄 嗯 硬體的資源總是緊張的,用這些有限的資源去做更多的事情,這大概就是每個硬體工程師一直在計較的事情了吧。定時器應該是很常用的一個功能了,很多地方都需要。然而硬定時器就那麼幾個。所以面對一些對時間精度要求沒那麼高的地方,軟定時器就很有用了。 簡單描述 所

微控制器定時

一直想在微控制器上實現一個像MFC和WPF一樣的軟定時器,花了點時間終於寫出來了,使用時需把timer_run函式放到定時器中斷服務函式裡面 typedef struct _TIMER { unsigned char isEnable; unsigned int c

linux核心分析之定時筆記

定時器是一種軟體功能,即允許在將來的某個時刻,函式在給定的時間間隔用完時被呼叫。超時表示與定時器相關的時間間隔已經用完的那個時刻。 linux上考慮兩種型別的定時器,即動態定時和間隔定時器。第一種型別由核心使用,而間隔定時器由程序在使用者態建立。 動態定時器 動態定時的主要

STM32 ——高階定時通用定時基本定時的區別

STM32 ——高階定時器、通用定時器、基本定時器的區別 TIM1和TIM8定時器的功能包括【增強型】: ● 16位向上、向下、向上/下自動裝載計數器 ● 16位可程式設計(可以實時修改)預分頻器,計數器時鐘頻率的分頻係數為1~65535之間的任意數值 ● 多達4個獨

IAR上部分UCOS定時無法啟動的問題

平臺:MSP430F5438A UCOSII:V2.86 IAR版本:5.10或者7.10 問題描述:使用OSTmrCreate建立的軟定時器,OSTmrStart之後回撥函式總是無法被執行 解決辦法:後來對比了keil上STM32的ucosII程式碼 發現在os_cpu

定時的實現java定時介紹與Spring中定時的配置

1定時器的作用 在實際的開發中,如果專案中需要定時執行或者需要重複執行一定的工作,定時器顯現的尤為重要。 當然如果我們不瞭解定時器就會用執行緒去實現,例如: package org.lzstone.action public class FinanceAction exte

定時的實現java定時Timer和Quartz介紹與Spring中定時的配置

欄位 允許值 允許的特殊字元    秒 0-59 , - * /    分 0-59 , - * /    小時 0-23 , - * /    日期 1-31 , - * ? / L W C    月份 1-12 或者 JAN-DEC , - * /    星期 1-7 或者 SUN-SAT , - *

9.定時看門狗和RTC》

《9.定時器、看門狗和RTC》 第一部分、章節目錄 1.9.1.什麼是定時器 1.9.2.S5PV210中的定時器 1.9.3.S5PV210的PWM定時器1 1.9.4.S5PV210的PWM定時器2 1.9.5.S5PV210的PWM定時器3 1.9.6.蜂鳴器和PWM定時器程式設計

js 定時用法詳解——setTimeout()setInterval()clearTimeout()clearInterval()

ntb 幫助 .get tint num 用法 -c 函數 tel 在js應用中,定時器的作用就是可以設定當到達一個時間來執行一個函數,或者每隔幾秒重復執行某段函數。這裏面涉及到了三個函數方法:setInterval()、setTimeout()、clearI

MySQL5-函數/存儲過程與定時觸發器

名稱 狀態 訪問 safe 安全問題 ant comm gnu led 目錄 一、函數/存儲過程 二、定時器 三、觸發器 四、函數語句學習 一、函數/存儲過程 1、函數與存儲過程 (1) function與procedure的區別:一個有返回值,一個沒有,僅此而已。

iOS 計時三種定時的用法NSTimerCADisplayLinkGCD

並且 reat clas 就會 固定 tro run mod 不同 原文:http://www.cocoachina.com/ios/20160919/17595.html 一、三種計時器 二、全局倒計時 #import "ViewController.h" @inte

定時osTimerCreate返回NULL

bug popu == msi fonts enter content eat stm32 CMSIS-RTOS是對FreeRtos的封裝,函數名比較適合純軟件編程。 如今的版本號是1.0.2. id1 = osTimerCreate(osTimer(T

9.SFB前端邊緣服務更新

exchange skype for business 下載更新1.截至2017年7月,最新的SFB更新為:KB30610642.下載地址:https://www.microsoft.com/en-us/download/details.aspx?id=476903.官方安裝說明。安裝更新(標準版前端

第34天:日期函數定時倒計時

spl inner function nth 設置 gin dem 案例 支持 一、日期函數(Date())設置本地日期:年月日時分秒1、聲明日期var date=new Date();//創建一個新的日期函數2、使用函數date.getTime();//提倡使用,date

centos 6.9部署svn服務(服務客戶端環境配置)

svn svn服務器 tortoisesvn tortoisesvn使用 svn版本控制系統有很多用途,最近公司使用它加腳本實現產品補丁小更新(因為如果每次都大更新的話,每次都要重新打rpm包,更新yum源等,很麻煩)。一、服務器端安裝1、安裝svn[root@svn ~]#yum insta

9.1定時 小時分秒

ets enter 當前系統時間 style function chrom art href idt 功能:用切換圖片0-9效果顯示當前系統時間 屬性:img的src 1.用到 new Date() getHours(),getMinutes(),getSeconds()

emWin 2天速成實例教程004_定時(Timer)和位圖片動畫

emwin timer image 定時器 動畫 備註:(1)打開工程目錄下的"Exe\GUISimulationDebug.exe"即可看到效果。(2)看完教程000~005就基本會用emWin做項目,其他章節可以需要時再參考。 emWin的TIMER是一個軟件定時

Day4 - Python基礎4 叠代裝飾件開發規範

The 用戶 主程 容量 自然數 num tin class 本質 Day4 - Python基礎4 叠代器、裝飾器、軟件開發規範 1.叠代器&生成器  生成器  背景:通過列表生成式能生成一個列表,但受內存限制,列表的容量肯定是有限的。而且當列表元素很多時,會占用