以stm8s105k4为例
通常我们用TIM3去做一个定时器,比如让程序运行0.5秒,然后产生一个中断。
(1)配置
MOV TIM3_CR1,#%00000001 ;timer on
MOV TIM3_PSCR,#$07 ;PRESCALER X128
BSET TIM3_EGR,#0 ;force UEV to update prescaler配置完预分频器后立即更新定时器的状态。
MOV TIM3_IER, #$01 ;TIM3 interrupt on update enabled使能interrupt
(2)设置周期:也就是设置多少时间一个中断
举个例子:我的系统clock是2M Hz(1s有 2M 次count),我设置分频器为2^7=128,相当于设置为次count 为一秒。
如果我想0.5s 一次中断,我就数到一半,就是第次的时候,由TIM3产生一个信号。
MOV TIM3_ARRH, #$1E
MOV TIM3_ARRL, #$84
;1E84 是 7812的十六进制形式
(3)不要忘记在你的interrupt里面最后写这句话
BRES TIM3_SR1,#0 ;CLEAR FLAG
产生中断之后会update这个flag,证明了有过中断,清除它是为了可以有下一次中断的信号。
(4)TIM3的irq Number 是15,记得改向量表。