您的位置 首页 厂商

根据STM8SF103定时器的使用方法解析

基于STM8SF103定时器的使用方法解析-这个定时器的时钟源是系统时钟源(fMaster),然后直接通过预分频器分频后供CK_CNT使用。如:系统频率为4MHz,经过128分频后,提供给定时器使用的频率就为 31250Hz

因为项目需要,我这里使用的内部RC 16MHz振荡器,并进行LSI 4分频,所以主频为4MHz。

看了网上的资源,都不怎样好用,所以决议总结总结,记录下守时器的简略有用办法。

环境: STM8SF103 ,仿真器为:STLINK

TIM4 归于8位守时器,最大128分频。

这个守时器的时钟源是体系时钟源(fMaster),然后直接通过预分频器分频后供CK_CNT运用。如:体系频率为4MHz,通过128分频后,提供给守时器运用的频率就为 31250Hz

由于项目需求,我这儿运用的内部RC 16MHz振荡器,并进行LSI 4分频,所以主频为4MHz。

//main.c

voidInit_TIm4(void)

{

/*很多人都是在这儿装填0xFF,其实是为了让PSC赶快收效,关于PSC的设置,需求鄙人一个更新事情时才会收效*/

TIM4_CNTR=0;//计数器值

TIM4_ARR=0xFA;//主动重装寄存器250,发生125次守时1S

TIM4_PSCR=0x07;//预分频系数为128

TIM4_EGR=0x01;//手动发生一个更新事情,用于PSC收效留意,是手动更新

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

TIM4_CR1=0x01;//使能计时器,TIM4_CR0中止计时器

}

voidmain(void)

{

_asm(“rim”);//这是有必要的,由于体系重启后,软件中止等级为3级,处于榜首流,除了TRAP,TLI,RESET三个中止外不响应其他中止。

//rim将软件等级更改为0等级,这样其他中止就能得到相应。

Init_Tim4();

while(1);

}

//中止向量表有必要将TIM4的中止处理函数填写进去

{0x82,TIM4_UPD_OVF_IRQHandler},/*irq23*/

//处理函数如下:

/*守时器4用作看门狗喂狗守时,由于看门狗最大延时510ms,

守时器频率为4MHz/128=31250=250*125,125/5=25(200ms)*/

@far@interruptvoidTIM4_UPD_OVF_IRQHandler(void)

{

t4++;

TIM4_SR=0;//铲除中止标志

//t4==125//守时1S

if(t4==25)//25*250守时200ms

{

FREE_IWDG;//喂狗,假如单纯守时用,能够拿掉

//能够测验点亮LED

t4=0;

}

return;

}

守时器延时核算进程,如主频4MHz,预分频为128,守时器频率等于 4000000 / 128 = 31250 (Hz),周期为32us。4分频时周期为1us。

如:主频8MHz,预分频为128,守时器频率等于 8000000 / 128 = 62500 (Hz),周期为16us。

整个代码没有运用库函数,比如TIM4_SR TIM4_CR1之类的界说在stm8s103k.h,其他的头也能够。

守时器2 (16位计时器) 的简略有用与此相似,但需求留意设置初值的办法,如:

voidInit_Tim2(void)

{

TIM2_EGR=0x01;//手动发生更新事情,从头初始化计数器,并答应发生一个更新事情

//设置守时器初值

TIM2_CNTRH=0;//不能运用TIM2_CNTR直接设值,TIM2_CNTRL=0;

//设定主动重装寄存器值

//这儿得留意不能运用TIM2_ARR的方法进行设值,TIM2是十六位的。

//如TIM2_ARR=0xFA,实际上是赋给高字节了,TIM2_ARRH=0xFA,而不是幻想中的赋给低字节。

TIM2_ARRH=0x7A;//312504MHz/128=31250Hz(1S)

TIM2_ARRL=0x12;//0x7A1231250意味着每发生一次中止时刻为1S

TIM2_PSCR=0x07;//分频128

TIM2_IER=0x01;//中止答应位使能

TIM2_CR1=0x01;//使能计时器

}

整个运用需求留意几点:

榜首、总中止的敞开 _asm(“rim”)

第二、中止向量表对应方位的中止处理进程改写

第三、守时器本身的使能,包含中止使能和计时器使能

第四、默许情况下,TIM4的外设时钟是敞开的,CLK_PCKENR为0xFF,外设TIM4时钟假如封闭,时钟是运转不起来的。

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

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

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

微信扫一扫关注我们

返回顶部