STM8S定时器工作
TIM4是一个8位通用定时器,TIM4工作时,其计数器从0开始向上计数,计数到TIM4_ARR寄存器中设置的值时,计数器从新从0开始计数,同时产生一个计数器溢出事件。
程序实例
void main(void)
{
InitLED();
InitTIM4();
asm("ris");
TIM4_CR1 |= 0X01;
while(1){}
}
InitTIM4();为 TIM4 初始化函数,起作用是设置 TIM4 的相关寄存器,使 TIM4 每隔一段时间产生一
次溢出中断。其函数内部如下:
void InitTIM4(void)
{
TIM4_PSCR = 0X07;//分频2M/2^7=15.625K
TIM4_IER = 0X01;//更新中断使 TIM4_CNTR = 255;//计数器初值 ,255*(1/15.625K)=0.01632S
TIM4_ARR = 255;//自动重装的值
}
TIM4_PSCR = 0X07;//分频2M/2^7=15.625K表示设置定时器的时钟频率,在定时器完成一个周期则计数器就增加1一直增加到255就自动返回0,然后产生一个中断事件
#pragma vector=TIM4_OVR_UIF_vector //定义中断服务函数入口地址
__interrupt void TIM4_OVR_UIF__IRQHandler(void)
{
i++;
TIM4_SR=0x00; //清除中断标志
if(i==61)
{ //翻转 LED 接口的输出状态
PC_ODR_ODR3^=1;
PE_ODR_ODR0^=1;
PD_ODR_ODR3^=1;
i=0;
}
}