您的位置 首页 基础

stm8s开发(五) TIMER的运用:守时!

STM8S提供三种类型的TIM定时器:高级控制型(TIM1)、通用型(TIM2/TIM3/TIM5)和基本型定时器(TIM4/TIM6)。它们虽有不同功能但都基于共同的架构。此共同的架构使得采用各

  STM8S供给三种类型的TIM 守时器:高档操控型(TIM1)、通用型(TIM2/TIM3/TIM5)和根本型守时器(TIM4/TIM6)。它们虽有不同功用但都根据一起的架构。此一起的架构使得选用各个守时器来规划运用变得十分容易与便利(相同的寄存器映射,相同的根本功用)。

    

 

  运用守时能够确认一个时刻片,便利操控发送速率,采样速率,等等一些对时刻要求比较高的使命,而这些操作能够放入守时器中止里边履行。这次的比如,守时1s,让LED灯翻转一次,到达2s闪耀一次的作用。因为守时操作简略,咱们运用根本守时器:TIMER4

  void Init_Timer4(void)

  {

  //128分频 256计数,在16MHz下是2.048ms一次中止!

  //128分频 256计数,在128KHz下是256ms一次中止!

  TIM4_CR1=0x00;//封闭计数器

  //TIM4_IER=0x00;

  TIM4_IER=0x01;//更新中止使能

  TIM4_EGR=0x01;

  TIM4_CNTR=255;//计数器值

  TIM4_ARR=255;//主动重装的值

  TIM4_PSCR=0x07;//分频值

  TIM4_CR1=0x01;//使能计数器

  }

  值得注意的是,假如咱们运用16M为主时钟的话,经过最大分频和最大计数,咱们也最多能到达2.048ms的守时时刻。同理,运用128K为主时钟的话,最多能到达256ms的守时时刻。

  接下来是守时终端函数,在函数中咱们能够其他操作:

  u16 i=0;

  #pragma vector = TIM4_OVR_UIF_vector //0x19

  __interrupt void TIM4_OVR_UIF_IRQHandler(void)

  {

  i++;

  TIM4_SR=0x00;

  if(i==488) //2.048*488=1000ms

  {

  LED_Reverse();

  i=0;

  }

  }

  这儿变量 i 用于核算进入中止的次数,假如咱们需求1s翻转LED一次的话,则需求进入中止488次。

  当中止回来后, 守时器会主动重载:(TIM4_ARR=255;//主动重装的值)

  守时器守时时刻与计数器的值有关:(TIM4_CNTR=255;//计数器值)

  一起也和分频值有关:(TIM4_PSCR=0x07;//分频值)

  敞开个封闭寄存器只需求修正TIM4_CR1寄存器:(TIM4_CR1=0x00;//封闭计数器 TIM4_CR1=0x01;//使能计数器 )

  附上stm8s在IAR环境下的项目工程,包含了SPI、I%&&&&&%、PWM、AWU、USART、EEPROM等片上硬件的初始化代码。

  http://download.csdn.net/detail/devintt/9454188

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/zhishi/jichu/184093.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部