ARM7 核心(如 AT91SAM7 系列)內建 PIT,獨立於標準 Timer,專為操作系統調度提供精確時間基準。關鍵寄存器:
| 寄存器 | 功能 | 關鍵位域 |
|---|---|---|
| PIT_MR (Mode) | 模式控制 | PITEN(使能)、PITIEN(中斷使能)、PIV[19:0](溢出值) |
| PIT_SR (Status) | 狀態標誌 | PITS(溢出標誌) |
| PIT_PIVR (Value) | 當前計數值 | CPIV[19:0]、PICNT[11:0] |
void ClockHandler(void) __irq {
Display_Received++;
*AT91C_AIC_EOICR = *AT91C_PITC_PIVR; // 確認中斷:讀 PIVR 清標誌
}
void PIT_Init(void) {
/* 784741 對應特定頻率下的周期值,需根據主頻計算 */
*AT91C_PITC_PIMR = AT91C_PITC_PITIEN | AT91C_PITC_PITEN | 784741;
AT91F_AIC_ConfigureIt(AT91C_BASE_AIC, AT91C_ID_SYS, 1,
AT91C_AIC_SRCTYPE_INT_POSITIVE_EDGE, (void (*)())ClockHandler);
AT91F_AIC_EnableIt(AT91C_BASE_AIC, AT91C_ID_SYS);
}
PIV = (MCLK/16) / 目標頻率 - 1,驗證無溢出