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;
  }
}

你可能感兴趣的:(定时器)