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

时间: 2024-12-17 10:59:51

STM8S定时器工作的相关文章

JavaScript 定时器工作原理

定时器设定的延迟时间是没有保证的.因为所有在浏览器中执行的JavaScript单线程异步事件(比如鼠标点击事件和计时器)都只有在它有空的时候才会被执行. setTimeout 会在每次回调函数执行之后至少需要延时10ms再去执行一次(可能是更多,但是不会少).但是setInterval会每隔10ms就去尝试执行一次回调函数,不管上一个回调函数是不是还在执行. javascript引擎只有一个线程,迫使异步事件只能加入到队列去等待执行. 在执行异步代码的时候,setTimeout 和setInte

JavaScript的定时器是如何工作的

理解JavaScript定时器工作原理对于学习JavaScript非常重要.因为JavaScript是单线程运行的,定时器使用场合少,不是很直观.下面通过三个函数来学习JavaScript如何定义,操作及销毁一个定时器. var id = setTimeout(fn, delay); - 定义一个定时器,在指定时间delay后调用函数fn.函数返回一个唯一的标识ID,如果不需要使用这个定时器可以用这个取消. var id = setInterval(fn, delay);- 类似setTimeo

《TCP/IP具体解释》读书笔记(22章)-TCP的坚持定时器

TCP通过让接收方指明希望从发送方接收的数据字节数(即窗体大小)来进行流量控制. 假设窗体大小为0会发生什么情况呢?这将有效阻止发送方传送数据,直到窗体变为非0为止. ACK的传输并不可靠,也就是说,TCP不正确ACK报文段进行确认,TCP仅仅确认那些包括有数据的ACK报文段. 1.坚持定时器 假设一个场景:假设一个确认丢失了,则两方就有可能由于等待对方而使连接终止,接收方等待接收数据(由于它已经向发送方通告了一个非0的窗体),而发送方在等待同意它继续发送数据的窗体更新.为防止这种死锁情况的发生

STC15 串口(工作方式1)使用小结

这里暂且不说其他工作方式,以后有时间补上.仅总结下STC15串口工作方式1的一些注意点. 串口1: setp1 波特率发生器: T2定时器(默认).T1定时器: 设置位:S1ST2(AUXR.0),1--T2,0--T1,此位复位值为1. 12T模式(默认):通过T2x12(AUXR.2),T1x12(AUXR.6)位确定,0--12T模式,1--1T模式:这两位复位值位0. (这里可能有点模糊, 解释一下:所谓1T模式就是T1X12位置1,相当于T1速度提高12倍,原来计数加1需要12T,现在

Javascript定时器学习笔记

掌握定时器工作原理必知:JavaScript引擎是单线程运行的,浏览器无论在什么时候都只且只有一个线程在运行JavaScript程序. 常言道:setTimeout和setInterval是伪线程. Javascript是运行在单线程环境中的,在页面的声明周期中,不同时间可能有其他代码在控制Javascript进程,比如:包含在<script>元素中的代码.dom元素的事件处理程序.Ajax的回调函数.定时器仅仅是在未来的某个时刻将代码添加到代码队列中,执行时机是不能保证的.代码队列按照先进先

STM32 定时器级联

根据参考手册给出的主/ 从定时器的例子 其实就是主定时器产生一个触发信号,让从定时器去接收这个触发信号,通过这个触发信号来让从定时器工作. 下面我们来看看我设置的从定时器 只需要配置 TIMx->SMCR 的TS[2:0] (Trigger selection)   选择是哪一个触发信号来触发从定时器工作 和位 SMS[2:0](Slave mode Selection)  选择外部时钟模式1-选中(TRGI)的上升沿驱动计数器 下面是STM32规定的内部触发连接的表格,如果某个产品中没有 相应

单片机 定时器/计数器

一.什么是定时器/计数器 在51单片机中,定时器/计数器是用来实现定时功能,并且具有计数的功能,来实现对外部信号的计数. 二.定时器/计数器有什么类型 在51单片机中,分为软件定时器,不可编程硬件定时器,可编程定时器. 软件定时:CPU每执行一条指令时,是需要固定时间的,所以,通过执行空指令可以达到延时的效果,这样子做的代价是占用CPU时间,所以一般很少这么做. 不可编程硬件定时器:是由电路和硬件来完成定时功能的,一般采用基电路,外接定时部件(电阻和电容),通过改变电阻的阻值和电容的电容值来修改

STM32之定时器

一.定时器简介 1.时钟来源 2.定时器结构(以基本定时器为例) 二.基本定时器的编程方法 1.基本定时器的寄存器 2.例程 /** * @brief 定时器6的初始化,定时周期0.01s * @param 无 * @retval 无 */ void TIM6_Init(void) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; /*AHB = 72MHz,RCC_CFGR的PPRE1 = 2,所以APB1 = 36MHz,TIM2CLK = A

LINUX使用一个定时器实现设置任意数量定时器

本例子参考 Don Libes的Title: Implementing Software Timers例子改写 为什么需要这个功能,因为大多数计算机软件时钟系统通常只能有一个时钟触发一次中断.当运行多个任务时,我们会想要多个定时器 的时钟跟踪并发这样可以生成正确的时间重叠,操作系统这样做. 本例子是为了实现使用Linux下的一个定时器,实现任一数量的定时器功能. 首先我们需要一些数据类型用来描述时钟数据结构 #include <stdio.h> #include<time.h> #