stm8s开发(五) TIMER的使用:定时!

发布者:太白山人最新更新时间:2020-08-31 来源: eefocus关键字:stm8s  TIMER  定时 手机看文章 扫描二维码
随时随地手机看文章

  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  TIMER  定时 引用地址:stm8s开发(五) TIMER的使用:定时!

上一篇:STM8单片机ADC应用(IAR)
下一篇:JTAG/SWD/ISP/SWIM详解单片机的四种烧写方式

推荐阅读最新更新时间:2024-11-13 15:49

STM8S如何实现Atomthreads最低功耗
Atomthreads像众多操作系统一样,在没有任务调度是会调用idle。(by cpuwolf) sta TI c void atomIdleThread (uint32_t param) { /* Compiler warning */ param = param; /* Loop forever */ while (1) { /** todo Provide user idle hooks*/ } } atomthreads中atomIdleThread()是以线程的形式存在,也就是最低优先级线程。作者默认没有填写这个函数。 uint8_t atomOSInit (void *idl
[单片机]
<font color='red'>STM8S</font>如何实现Atomthreads最低功耗
利用TIMER测量信号周期及占空比的精度
有人使用 STM32 G4系列的通用型 TI MER基于捕获功能对外来 信号 进行周期及占空比的测量。他用TIM3产生频率、占空比可调的PWM输出做为被测信号。TIM4用来进行频率测量,工作在复位从模式,被测信号接到其通道2的输入脚。然后经内部边沿 检测 和内部滤波电路后,兵分两路分别连接到 IC 1和IC2。显然IC2使用直接输入模式,IC1使用间接输入模式,如下图功能框图示意。 但他发现被测信号频率较高时,误差就明显变大了。当然,他也知道,任何测量肯定是有极限的。他现在就是想知道,能否基于现有方案将测量极限拉高点。比方说,他现在测量20KHz信号时就明显误差过大,导致测算结果难以采用。是否可以将可靠的测量结果提升到25
[单片机]
利用<font color='red'>TIMER</font>测量信号周期及占空比的精度
51单片机 (3)定时器和计数器
注:定时器与计数器原理与使用方法相似、此处计数器知识为基础普及、后面详讲 2个定时器(寄存器)、定时器0、定时器1、(计数器0、计数器1) TMOD: 定时器 /计数器模式控制寄存器 详见 百度百科TMOD 每经过一个机器周期、寄存器+1 TF:定时器溢出标志。溢出时自动置1。中断时硬件清零否则必须软件清零。 TR:定时器运行控制位。置1开始计时、清零停止计时。 C/T:该位为0时用作计时器、该位为1时用作计数器。 溢出时时间-开始计时时间=预设定时时间 一个机器周期共有12个振荡脉冲周期 若设定时为0.02s,则: 12*(65535-X)/11059200=0.02s 定时器作“加1”次数:X=4710
[单片机]
AVR定时器的要点介绍
M16的T1 16位定时器一共有15种工作模式,其他2个8位定时器(T0/T2)相对简单,除了T2有异步工作模式用于RTC应用外 (可以利用溢出中断和比较匹配中断作定时功能) 符号定义: BOTTOM 计数器计到0x0000 时即达到BOTTOM MAX 计数器计到0xFFFF ( 十进制的65535) 时即达到MAX TOP 计数器计到计数序列的最大值时即达到TOP。 TOP 值可以为固定值0x00FF、0x01FF或 0x03FF,或是存储于寄存器 OCR1A或ICR1里的数值,具体有赖于工作模式 ------注意MAX和TOP是不同的,在表格 可以看到它们的作用 分5种工
[单片机]
stm32 通用定时器与 PWM
通用定时器(以下以通用定时器3,通道3 为例): 第一步:开启时钟使能 RCC- APB1ENR:1 位 //开启定时器3 时钟使能 第二步:设置定时器分频与装载计数值(以一周期 1ms) TIM3- PSC = 7199; //系统时钟为 72M 经 (7199+1) 分频后,定时器时钟为 10k(一周期为0.1ms) TIM3- ARR = 9; //计数周期为 0.1ms * (9+1) = 1ms 第三步:使能定时器 TIM3- CR1:0 位 //开启计数器,开始计时 第四步:溢出中断使能 TIM3- DIER:0 位 //开启溢出中断 第五步: void TIM3_IRQHandler(void); 利用通用定时
[单片机]
STM8S EEPROM 操作
STM8S 内置EEPROM,对于很大需要带记忆的产品来说,是个很好的资源,以下是我个人摸索出来的,并且验证OK,大家如需要可放心使用。 #define EEPROMADDR0X000 ((u32)(FLASH_DATA_START_PHYSICAL_ADDRESS)) #define EEPROMADDR0X001 ((u32)(FLASH_DATA_START_PHYSICAL_ADDRESS+1)) #define EEPROMADDR0X002 ((u32)(FLASH_DATA_START_PHYSICAL_ADDRESS+2)) #define EEPROMADDR0X003 ((u32)(FLASH_DAT
[单片机]
msp430的定时器A 划分几个独立时间间隔
TAIV: #define TAIV_TACCR1 (0x0002) #define TAIV_TACCR2 (0x0004) #define TAIV_TAIFG (0x000A) TIMERA1_VECTOR是一个中断向量,主要处理CCR1,CCR2,以及定时器A溢出的中断标志,而CCR1,CCR2,以及定时器A产生中断是的TAIV是不同的,分别是2,4,10 switch( TAIV ) { case 2: break; case 4: break; case 10: P3OUT ^= BIT4; break; } 这一句的意思是,判断是哪个产生中断的,以
[单片机]
CAN信号中位定时段的规格
  CAN通讯中使用的是同步数据传输,CAN控制器在其通讯过程中会不停出现位同步的操作,但不同的数据通讯系统对位同步的要求是不同,为了满足其要求,我们必须更加深入的来探讨另一个概念叫位 定时段的规格。   位定时段的规格是根据数据通信系统的需求而确定的。如果要在特定位速率下实现最大的 总线长度或者在给定总线长度的情况下实现最短的等待时间(最大位速率),那么用于重新同步的保留时间( 相位缓冲段)必须保持最小。当时间缓冲段设定为最小值时,表示在一次重新同步当中只能校正|e|=1的相位误差。因此对位同步的要求非常高,要满足这样的要求只能使用精确的石英晶振(石英晶振的误差通常小于0.1%.)。        图 1
[嵌入式]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved