(2)對新的定時器初始化(結構體賦值) -->setup_timer(timer, fn, data)
(3)編寫定時中斷服務函式
(4)啟動定時器 -->add_timer(struct timer_list * timer)
--> int mod_timer(struct timer_list *timer, unsigned long expires);這個比add_timer更加方便,相當於在此時間點上往後推遲
expires的時間就好了。
1.定時器結構體:struct timer_list
struct timer_list ;
2.初始化定時器:setup_timer();
void setup_timer(struct timer_list * timer, void (*function)(unsigned long), unsigned long data);
函式功能:初始化定時器--》對定時器結構體成員進行賦值,除了時間戳以外
形參列表:
timer:定時器結構體變數
*function:初始化的定時中斷函式
data:傳遞到定時中斷函式的傳參
返回值:無
3.啟動定時器:add_timer(); --> mod_timer();
void add_timer(struct timer_list *timer);
函式功能:啟動定時器 --> (定時器不在定時器管理匯流排上)
形參列表:
timer:要啟動的定時器 --> 往定時器管理匯流排新增乙個定時器
返回值:無
int mod_timer(struct timer_list *timer, unsigned long expires);
函式功能:修改乙個定時器的定時時間(時間戳),啟動定時器
這個也是啟動定時器函式,不過add_timer在此函式上封裝了,但是使用起來還是mod_timer更加方便快捷形參列表:其實等價於:del_timer(timer); timer->expires = expires; add_timer(timer);
timer:要操作的定時器
expires:時間戳 --> 要給定時器設定的新的定時時間
返回值:
成功:失敗:錯誤碼
注意:乙個定時器只能有乙個定時時間,修改時間戳,新的時間戳覆蓋舊的時間戳!
expires引數的用法:
timer->expires = jiffies + hz /200 //5ms後定時中斷 -- 其中jiffies代表的是當前的時間戳,而hz則是linux下的乙個時鐘頻率,也就是hz等價於1000,1s來1000次時鐘中斷
4.刪除定時器:del_timer(struct timer_list *timer);
linux驅動學習 linux中斷程式編寫流程
linux中斷 1 確定中斷號 2 申請中斷號 request irq 不用一定要釋放free irq 3 編寫中斷服務函式 request irq unsigned int irq,irq handler t handler,unsigned long flags,const char name,...
STM32 TIM定時 中斷
今天講解stm32f103定時器定時 中斷功能,在昨天定時器延時的軟體工程上新增tim3定時的功能,自己也可以試著將昨天的工程新增修改得到。訪問密碼 acd8 工程現象 間隔 定時器定時 500ms led變化一次,並且串列埠列印 stm32f103ze有8個定時器 tim1 tim8 改工程以ti...
stm8s定時中斷
stm8s定時器有高階定時器tim1,通用定時器tim2,tim3,tim5,以及基本定時器tim4,tim6。定時中斷配置基本一樣。需要注意的也就是分頻不同,定時器位數不同。16位定時器配置後面再說,這裡以基本定時器tim4為例,產生2ms中斷,配置如下 tim4 ier uie 1 使能tim4...