STM8S(105K4)使用笔记——TIM4的基础配置

0、通过TIM4实现类似STM32的uwTick功能

通过TIM4计时产生中断,每毫秒执行一次uwTick++。

1、设置TIM4分频与自动重装载值

设置TIM4分频

  /* 1分频 */
  TIM4->PSCR = (uint8_t)0x00;
  /* 2分频 */
  TIM4->PSCR = (uint8_t)0x01;
  /* 4分频 */
  TIM4->PSCR = (uint8_t)0x02;
  /* 8分频 */
  TIM4->PSCR = (uint8_t)0x03;
  /* 16分频 */
  TIM4->PSCR = (uint8_t)0x04;
  /* 32分频 */
  TIM4->PSCR = (uint8_t)0x05;
  /* 64分频 */
  TIM4->PSCR = (uint8_t)0x06;
  /* 128分频 */
  TIM4->PSCR = (uint8_t)0x07;

设置TIM4自动重装载值

  /* TIM4_Period为需要设置的自动重装载值 */
  TIM4->ARR = (uint8_t)(TIM4_Period);

TIM4计时触发公式

  • TIM4_Period= (time * TIM4_Counter_Clock - 1);
  • TIM4_Period 为设置的自动重装载值
  • time 为TIM4触发所需时间(s)
  • TIM4_Counter_Clock 为TIM4频率,等于主频率Fmaster/TIM4分频值(hz)

2、配置TIM4更新中断使能

  /* 配置更新中断使能 */
  TIM4->IER |= (uint8_t)0x01;
  /* 配置更新中断禁止 */
  TIM4->IER &= (uint8_t)(~0x00);

推荐在使能更新中断前清除可能产生的更新中断标志

  TIM4->SR1 = (uint8_t)(~0x01);

3、使能TIM4

  /* 使能TIM4 */
  TIM4->CR1 |= (uint8_t)(0x01);
  /* 禁用TIM4 */
  TIM4->CR1 &= (uint8_t)(~0x01);
  /* 使能中断 */
  enableInterrupts();

4、设计全局uwTick

  #define SYS_MAX_DELAY 0xFFFFFFFFU
  __IO uint32_t uwTick;
  /**
   * @brief  auto plus by Time4 , 1 per ms
   * ----------------
   */
  void SYS_IncTick(void)
  {
      uwTick++;
  }

  /**
   * @brief  get uwtick
   * ----------------
   */
  uint32_t SYS_GetTick(void)
  {
      return uwTick;
  }

  /**
   * @brief  delay
   * ----------------
   */
  void SYS_Delay(__IO uint32_t Delay)
  {
      uint32_t tickstart = SYS_GetTick();
      uint32_t wait = Delay;

      /* Add a period to guarantee minimum wait */
      if (wait < SYS_MAX_DELAY)
      {
          wait++;
      }

      while ((SYS_GetTick() - tickstart) < wait)
      {
      }
  }

5、配置软件中断函数

  /* 软件中断函数 */
  INTERRUPT_HANDLER(TIM4_UPD_OVF_IRQHandler, 23)
  {
    SYS_IncTick();
    /* 清除更新中断标志 */
    TIM4->SR1 = (uint8_t)(~0x01);
  }

6、TIM4寄存器简介:

  • CR控制寄存器
    STM8S(105K4)使用笔记——TIM4的基础配置_第1张图片
  • IER中断使能寄存器
    STM8S(105K4)使用笔记——TIM4的基础配置_第2张图片
  • SR状态寄存器
    STM8S(105K4)使用笔记——TIM4的基础配置_第3张图片
  • EGR事件产生寄存器
    STM8S(105K4)使用笔记——TIM4的基础配置_第4张图片
  • CNTR计数器
    STM8S(105K4)使用笔记——TIM4的基础配置_第5张图片
  • PSCR预分频寄存器
    STM8S(105K4)使用笔记——TIM4的基础配置_第6张图片
  • ARR自动重装载寄存器
    STM8S(105K4)使用笔记——TIM4的基础配置_第7张图片

你可能感兴趣的:(嵌入式相关)