历史上的今天
今天是:2024年08月31日(星期六)
2020年08月31日 | stm8s开发(五) TIMER的使用:定时!
2020-08-31 来源:eefocus
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;//使能计数器 )
史海拾趣
|
关于做RAID5 的问题,懂这方面的高手帮我一下,很急的一个问题!!! 我要在dell 2600 服务器上做RAID5 ,现在要加入三块硬盘,请问如何来做RAID5???? 1、这三块硬盘加入服务器中,有特殊的要求,与普通PC机器加入硬盘一样吗??? 2、该服务器支持做RAID5吗?,比如需要什么硬件,有什么要特别关注的地方?? ...… 查看全部问答> |
|
Unexpected Fated Error Encountered which may have been caused by a stack overflow out of memory condition, or access violating, I am try and save your work before terminating this application 在下载*.out 后 提示这个问题 点击以后 ...… 查看全部问答> |
|
请各位大侠给指点一下: 我在用MSP430做一个智能温度控制器,现在P1口连接着一个4X4的键盘,只要一按键就进入中断,我希望在中断里改变一个全局变量的值,可是不知道为什么这个值怎么都带不出来。请各位高人指点一二。… 查看全部问答> |
|
今天抽点时间上第七题: 你知道哪些常用的逻辑电平?TTL与CMOS电平可以直接互连吗? 常用逻辑电平:TTL、CMOS、LVTTL、LVCMOS、ECL(Emitter Couple Logic)、PECL(PSEUDO/POSITIVE EMITTER COUPLED LOGIC)、LVDS(LOW voltage differential sign ...… 查看全部问答> |
|
技术参数:最高转速: 3000RPM/MIN最大离心力: 2500(g)适用针管: 20ml, 30ml, (可依据客户要求订做)定时范围: 0~99min电源: 220V50Hz输入功率: 90W外型尺寸: 440×437×245mm(L×W×H)噪音:<75Db重量: ...… 查看全部问答> |




