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