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