請問各位,關於TIMER部分的計算
SysCtlClockGet()為15384000
TimerLoadSet(TIMER0_BASE, TIMER_B,SysCtlClockGet()/1000);
以下為主要設置
void timer0_set(void)
{
//TIMER0時鐘ON
SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER0);
//TIMER0配置,
TimerConfigure(TIMER0_BASE, TIMER_CFG_SPLIT_PAIR | TIMER_CFG_B_PERIODIC);
//TIMER0,TIMERB負載時間設置,主頻/1000
TimerLoadSet(TIMER0_BASE, TIMER_B,SysCtlClockGet()/1000);
//獲取timer0b load
sys_t0b = TimerLoadGet(TIMER0_BASE, TIMER_B);
//系統中斷ON
// IntMasterEnable();
//TIMER0中斷ON
TimerIntEnable(TIMER0_BASE, TIMER_TIMB_TIMEOUT);
//系統TIMER0B中斷開啟
IntEnable(INT_TIMER0B);
//TIMER0B開起計數
TimerEnable(TIMER0_BASE, TIMER_B);
}
目前使用此配置進入中斷後,使用1隻輸出來看進出中斷時間
為1ms 此部分是如何計算出來的呢???
(一般來說,timer頻率喚回時間乘上timer的計數步數就可知道進中斷時間,但似乎沒有控制步數的部分,僅能依靠分頻來控制??)
此帖出自
小平头技术问答
是主頻到TimerLoadSet的時間,上面除以1000 所以會為1ms
但假設今天主頻設置100M,上面除以1000後,TimerLoadGet卻不會得到100000HZ
主頻設置125M,上面除以1000後,TimerLoadGet就可得125000HZ
所以這部分是否有什麼限制??
一周热门 更多>