日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

arduino定时器函数如何使用_【Arduino101教程】定时器的使用

發布時間:2025/10/17 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 arduino定时器函数如何使用_【Arduino101教程】定时器的使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

定時器中斷

外部中斷是通過檢測輸入電平的變化,而產生中斷信號。除了外部中斷方式外,Genuino 101還可以按時間變化產生中斷,這里即會使用到定時器(Timer),而對應產生的中斷被稱為定時器中斷。

定時器是嵌入式系統中的一個特殊的計數器。它可以對分頻后時鐘信號的進行計數,當計數值達到設定值,即會產生定時器中斷。且通過時鐘頻率和計數值可以計算出時間,所以可以達到以時間觸發中斷的效果。

簡而言之,當需要以特定頻率運行某個中斷程序時,可以使用定時器中斷。

使用Curie定時器功能,須引用頭文件CurieTimerOne.h:

[mw_shl_code=cpp,true]#include "CurieTimerOne.h"[/mw_shl_code]

和IO中斷一樣也需要先定義一個返回值為空的中斷函數:

[mw_shl_code=cpp,true]void Blink () {

}[/mw_shl_code]

使用start函數即可開啟定時器中斷

[mw_shl_code=cpp,true]CurieTimerOne.start(time, Blink)[/mw_shl_code]

其中參數time為時間,單位微秒,ISR為定時器中斷產生后運行的函數。

第一章中的Blink示例也可以用定時器實現,實現代碼如下:

[mw_shl_code=cpp,true]#include "CurieTimerOne.h"

bool lighting= true;

int time = 1000000;

void Blink() {

digitalWrite(13, lighting);

lighting = !lighting;

}

void setup() {

pinMode(13, OUTPUT);

CurieTimerOne.start(time, Blink);

}

void loop() {

}[/mw_shl_code]

以上程序還可以結合其他功能,實現一邊Blink閃爍,一邊

定時器輸出PWM

除了作中斷源使用,定時器也可以用作PWM輸出,CurieTimerOne提供的pwmStart函數可以輸出PWM。

在之前的章節中使用的analogWrite函數輸出的PWM,周期固定,占空比可調,可用作LED調光;tone函數輸出的PWM,周期不變,占空比可調,可用作無源蜂鳴器發聲;而pwmStart輸出的PWM周期和占空比都可調,更具靈活性,適用場合更廣。

需注意的是pwmStart是重載函數,其有兩種重載方式:

[mw_shl_code=cpp,true]pwmStart(unsigned int outputPin, double??dutyPercentage, unsigned int periodUsec);

pwmStart(unsigned int outputPin, int??dutyRange, unsigned int periodUsec);[/mw_shl_code]

參數outputPin為輸出PWM的引腳編號,periodUsec為每個周期的時間,單位為微秒。

而第二個參數可以為double 型,也可以為int型。當參數為double 型時,編譯器會以dutyPercentage進行重載,參數以百分比形式表示PWM占空比;當參數為int型時,編譯器會以dutyRange進行重載,參數以0到1023的形式表示PWM占空比;

函數重載

函數重載是指在同一作用域內,可以有一組具有相同函數名,不同參數列表的函數,這組函數被稱為重載函數。在編譯程序時,編譯器會根據參數列表選擇對應的函數進行重載并編譯。重載函數通常用來命名一組功能相似的函數,這樣做減少了函數名的數量,避免了名字空間的污染,對于程序的可讀性有很大的好處。[/url][陳呂洲1]

以下代碼也是實現Blink的效果:

[mw_shl_code=cpp,true]

#include "CurieTimerOne.h"

void setup() {

// 設置13號引腳輸出PWM信號, 占空比為25%,周期為1秒(1000000微秒)。

CurieTimerOne.pwmStart(13, 25.0, 1000000);

// 當第二個參數為int型時,用0-1023的數值表示占空比

// 例如255代表24.9%的占空比

// CurieTimerOne.pwmStart(13, 255, 1000000);

}

void loop() {

delay( 10000 );

}

[/mw_shl_code]

需要注意的是語句

[mw_shl_code=cpp,true]CurieTimerOne.pwmStart(13, 25.0,??1000000);[/mw_shl_code]

中的第二個參數25.0一定要有小數位,編譯器才會將其判斷為double 型。如果這里這里直接使用不帶小數位的25,編譯器會將其判斷為int型,進而使用另一種重載方式。

總結

以上是生活随笔為你收集整理的arduino定时器函数如何使用_【Arduino101教程】定时器的使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。