s3c2440定時器簡介
定時器0 和1 共享一個8 位的預(yù)分頻器(預(yù)定標(biāo)器),定時器2,3,4 共享另一個8 位預(yù)分
頻器.
頻器.
定時器的時鐘源為PCLK,首先經(jīng)過預(yù)分頻器降低頻率后,進(jìn)入第二個分頻.可以生成5 種不同的分頻信號(1/2,1/4,1/8,1/16 和TCLK)
定時器啟動后,TCNTn開始減一計數(shù),當(dāng)TCNTn 等于TCMPn時, TOUTn 反轉(zhuǎn), TCNTn繼續(xù)減數(shù).
當(dāng)TCNTn= 0 時, TOUTn 再次反轉(zhuǎn),并觸發(fā)中斷(中斷已經(jīng)使能).
若TCON 設(shè)為自動加載, TNCTn/TCMPNn 的值被重裝.
寄存器:
TCFG0: 配置兩個8 位預(yù)分頻器, [15:8] 此8 位決定定時器2,3,4 的預(yù)標(biāo)定器值,[7:0] 此8 位決定定時器0,1 的預(yù)標(biāo)定器值
輸出頻率: = PCLK / (prescaler value + 1)
TCFG1:
用于設(shè)置第二個分頻.可以設(shè)置5 種不同的分頻信號(1/2,1/4,1/8,1/16 和TCLK)
至此可得到
定時器工作頻率=PCLK / (prescaler value + 1) / (divider value)
divider value = 2,4,8, 16
TCON: 定時器控制寄存器
TCNTBn :設(shè)置一個被裝載到遞減計數(shù)器中的初始值。
TCMPBn: 設(shè)置一個被裝載到比較寄存器中用來和遞減計數(shù)
器的值作比較的初始值。
器的值作比較的初始值。
TCNTOn : 通過讀取其可以得到TCNTBn 的值
定時器初始化示例:
void timer0_init(void)
{
TCFG0 = 99; // 預(yù)分頻器0 = 99
TCFG1 = 0x03; // 選擇16分頻
TCNTB0 = 31250; // 0.5秒鐘觸發(fā)一次中斷
TCON |= (1<<1); // 手動更新
TCON = 0x09; // 自動加載,清“手動更新”位,啟動定時器0
}
{
TCFG0 = 99; // 預(yù)分頻器0 = 99
TCFG1 = 0x03; // 選擇16分頻
TCNTB0 = 31250; // 0.5秒鐘觸發(fā)一次中斷
TCON |= (1<<1); // 手動更新
TCON = 0x09; // 自動加載,清“手動更新”位,啟動定時器0
}
評論