1. 脈沖寬度調(diào)制模式(PWM_OUT)
2. 脈沖寬度計數(shù)捕獲模式(WDTH_CAP)
3. 外部事件模式(EXT_CLK)
來看看定時器的接口寄存器詳細說明:
寄存器 功能
TIMERx_CONFIG 定時器配置寄存器,用于設置定時器工作模式
TIMERx_WIDTH 定時器寬度寄存器,設置輸出波形脈沖寬度
TIMERx_PERIOD 定時器周期寄存器,設置輸出波形的周期
TIMERx_COUNTER 定時器計數(shù)寄存器,讀取捕獲的脈沖數(shù)量
TIMER_ENABLE 定時器使能寄存器
TIMER_DISABLE 定時器關閉寄存器
TIMER_STATUS 定時器狀態(tài)寄存器
看一段核心代碼,詳細說說:
*pTIMER0_CONFIG = 0x0019; //配置定時器為PWM 模式
*pTIMER0_PERIOD = 0x00800000; //設置周期為0x00800000 個系統(tǒng)時鐘
*pTIMER0_WIDTH = 0x00400000; //設置脈寬為0x00400000 個系統(tǒng)時鐘
*pTIMER_ENABLE = 0x0001; //使能Timer0
*pSIC_IAR0 = 0xffffffff;
*pSIC_IAR1 = 0xffffffff;
*pSIC_IAR2 = 0xfffffff4; //配置中斷等級數(shù)據(jù)為4
register_handler(ik_ivg11, TIMER0_ISR); //注冊中斷等級為11,標識符為TIMER0_ISR
*pSIC_IMASK = 0x00010000;
EX_INTERRUPT_HANDLER(TIMER0_ISR) //標識符為TIMER0_ISR 的中斷函數(shù)
{
*pTIMER_STATUS = 0x0001; //清除定時器中斷標志
printf("timer0 interrupt !\n"); //打印信息
}
這個代碼就碼實現(xiàn)了將定時器配置為 PWM_OUT 模式,通過定時器中斷來定時一個0x00800000 個系統(tǒng)的時間長度,定時完成后,在中斷內(nèi)打印信息。定時器沒有單獨的計時功能,所以如果計時,可以采用 PWM_OUT 模式,利用定時器中斷來進行計時,同時在芯片的TIMER0 管腳上,會有PWM 波形輸出。
當然這些我也是都有錄制視頻教程,SPI和Timer錄制在了同一個章節(jié),如果有興趣可以看一下:
清晰版視頻下載: 鏈接: http://pan.baidu.com/s/1c03rDfE 密碼: dtod
再附上上面這個核心代碼的源碼供參考:
鏈接: http://pan.baidu.com/s/14HGWQ 密碼: rjhc
下面可能還會再開個專題說一說Blackfin的uclinux或ucos,看時間吧。