您的位置 首页 开关

STM8学习笔记——守时器守时功用和中止相关

定时器都差不多,无非就是计数,溢出了标志置位,如果中断允许的话产生一个中断。说到中断,STM8S105的中断向量表如下时基单元:在选用内

守时器都差不多,无非便是计数,溢出了标志置位,假如中止答应的话发生一个中止。提到中止,STM8S105的中止向量表如下

时基单元:


在选用内部时钟的情况下,CK_PSC是由fmaster供给的,通过守时器预分频器分频发生CK_CNT时钟,然后作为一次计数的时基,举个比如,16M的内部RC,通过16分频,则CK_CNT为1M,那么守时1ms只需计数1000次。

数模式:

共有三种:向上,向下,中心对齐

以向上计数为例:计数器从0计数到用户界说的比较值(TIMx_ARR寄存器的值),然后从头从0开端计数并发生一个计数器溢出事情,一起,假如TIM1_CR1寄存器的UDIS位是0,将会发生一个更新事情(UEV)。

关于IAR中止函数的写法

asm(“sim”);//关大局中止

asm(“rim”);//开大局中止

#pragma vector=TIM2_OVR_UIF_vector (这儿依据上面的中止向量表选择要进入的中止的向量)

__interrupt void TIM2_OVR_UIF(void)//__interrupt关键字表明中止函数
{
TIM2_SR1 &=~0x01; // 铲除更新中止符号,这步不能漏掉,否则会接连进入中止程序

//内容
}

参阅程序:(以TIM2为例)

void TIM2_Init(void)
{//守时器1初始化
CLK_PCKENR1|=0x20;//敞开守时器1外设时钟
TIM2_ARRH=(1000-1)/256;//设定重装载值
TIM2_ARRL=(1000-1)%6;
TIM2_PSCR=4;//预分频
TIM2_IER=0x01;
TIM2_CR1=1;//边缘对齐,向上计数
}

#pragma vector=TIM2_OVR_UIF_vector
__interrupt void TIM2_OVR_UIF(void)
{
TIM2_SR1 &=~0x01; // 铲除更新中止符号,这步不能漏掉,否则会接连进入中止程序
}

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

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

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

微信扫一扫关注我们

返回顶部