定時器的原理
(1)定時器計時其實是通過計數來實現的。定時器內部有一個計數器,這個計數器根據一個時鐘(這個時鐘來自于ARM的APB總線,然后經過時鐘模塊內部的分頻器來分頻得到)來工作。每隔一個時鐘周期,計數器就就計數一次,定時器的時間就是計數器計數值x時鐘周期。
(2)定時器內部有1個寄存器TCNT,計時開始時我們會把一個總的計數值(譬如說300)放入TCNT寄存器中,然后每隔一個時鐘周期(假設為1ms)TCNT中的值會自動減1(硬件自動完成,不需要CPU軟件去干預),知道TCNT中減為0的時候,TCNT就會觸發定時器中斷。最后的計時時間就是300ms。
(3)定時時間是由2個東西共同決定的:一個是TCNT中的計數值,一個是時鐘周期。譬如上例中,定時周期就為300x1ms=300ms。