一、計數器
- 加法計數器:每進入一個脈沖,就加一
- 減法計算器:每進入一個脈沖,就減一
當計數器減到0,觸發中斷
1.最短計時時間
- 當時鐘周期為1khz時,最短計時時間為1ms,最長計時時間為65535ms
- ?當時鐘周期為1mhz時,最短計時時間為1us,最長計時時間為65535us
2.時鐘頻率與時鐘精度
二、定時器
1.定時器類別
timx(a/g)
tima(advanced)高級定時器
timg(general)通用定時器
2.七個定時器
- 一個16位的timerg定時器
- 一個16位的timerg定時器支持QEI(正交)
- 兩個16位的timerg定時器支持低功耗
- 一個32位的timerg高分辨率通用定時器
- 兩個timera
?
三、配置
1.定時器名稱和選擇的定時器外設
2.提供的預設,如周期是500ms
?3.基礎設置
?
時鐘配置
時鐘源:一般都用BUSCLK
BUSCLK(系統時鐘,從MCLK與ULPCLK中選用)
MFCLK(中頻時鐘,固定4MHz不變,使用的是SYSOC振蕩器分頻來,系統初始化默認關閉,需要軟件打開;)
LFCLK(低頻時鐘,就是低頻振蕩器輸出的32.768KHz;)
時鐘分頻?
prescaler 進行進一步劃分(必須在1-256之間取)
?第一個是在時鐘內部,第二個是在時鐘外部
按照兩次分頻,最終計數的時鐘是125khz,最小時間是8us,最大時間524.29ms
定時器模式
- one-shot只記一次
- periodic 循環計數
- up從0往上走
- down 從高往低走
?設置的時間和實際的時間(設置的時間超過最小精度時無法實現,一實際時間為準)
?完成初始化就開始計時,不勾選需要代碼實現開始
中斷配置
到0時進入中斷
?定時器選擇
這里的選擇會影響上面的顯示結果
四、代碼講解
#include "ti_msp_dl_config.h"int main(void)
{SYSCFG_DL_init();NVIC_EnableIRQ(TIMER_0_INST_INT_IRQN);//使能定時器0中斷//傳入定時器中斷名稱DL_TimerG_startCounter(TIMER_0_INST);//啟動定時器0的計數器//傳入定時器名稱while (1) {}
}
//timr0的中斷服務函數
void TIMER_0_INST_IRQHandler(void)
{switch (DL_TimerG_getPendingInterrupt(TIMER_0_INST)) //獲取timer0最高優先級中斷{case DL_TIMER_IIDX_ZERO://如果是當前中斷DL_GPIO_togglePins(GPIO_LEDS_PORT,GPIO_LEDS_USER_LED_1_PIN | GPIO_LEDS_USER_TEST_PIN);//翻轉對應引腳break;default:break;}
}
五、不同模式的功耗
?低功耗模式一般在電賽中并不常用,在此不做詳細介紹