您的位置 首页 报告

STM8s–定时器(time4)

TIME4:●8位向上计数的自动重载计数器;●3位可编程的预分配器(可在运行中修改),提供1,2,4,8,16,32,64和128这8种分

TIME4:

● 8位向上计数的主动重载计数器;
● 3位可编程的预分配器(可在 运转中修正),供给1, 2, 4, 8, 16, 32, 64 和128 这8种分频份额。
中止发生
– 在计数器更新时:计数器溢出。

几个相关的寄存器;

操控寄存器1 (TIMx_CR1)

操控寄存器2 (TIMx_CR2)[留意:TIM4没有该寄存器]

事情发生寄存器(TIMx_EGR)

状况寄存器1 (TIMx_SR1)

中止使能寄存器(TIMx_IER)

主动重装载寄存器(TIMx_ARR)

预分频寄存器(TIMx_PSCR)计数器时钟频率fCK_CNT=fCK_PSC/ 2(PSC[2:0])

计数器(TIMx_CNTR){TIMx_CNTRL TIMx_CNTRH}

具体内容见:STM8S数据手册

8位守时器

main()

{

//首要初始化GPIO

PD_DDR=0x08;

PD_CR1=0x08;//将PD3设置成推挽输出

PD_CR2=0x00;

//然后初始化守时器4

TIM4_IER=0x00;//制止中止

TIM4_EGR=0x01;//答应发生更新事情

TIM4_PSCR=0x07;//计数器时钟=主时钟/128=2MHZ/128

//相当于计数器周期为64uS

TIM4_ARR=255;//设定重装载时的寄存器值,255是最大值

TIM4_CNTR=255;//设定计数器的初值

//守时周期=(ARR+1)*64=16320uS

TIM4_CR1=0x01;//b0=1,答应计数器作业

//b1=0,答应更新

//设置操控器,发动守时器

TIM4_IER=0x01;//答应更新中止

_asm(“rim”);//答应CPU大局中止

while(1)//进入无限循环

{

}

}

@far@interruptvoidTIM4_UPD_OVF_IRQHandler(void)

{

TIM4_SR1=0x00;//铲除更新标志

PD_ODR=PD_ODR^0x08;//LED驱动信号取反

//LED闪耀频率=2MHZ/128/255/2=30.63

}

0

16位守时器:

main()

{

//首要初始化GPIO

PD_DDR=0x08;

PD_CR1=0x08;//将PD3设置成推挽输出

PD_CR2=0x00;

//然后初始化守时器4

TIM2_IER=0x00;//制止中止

TIM2_EGR=0x01;//答应发生更新事情

TIM2_PSCR=0x01;//计数器时钟=主时钟/128=2MHZ/2

//相当于计数器周期为1uS

//设定重装时的寄存器值

//留意有必要确保先写入高8位,再写入低8位

TIM2_ARRH=0xEA;//设定重装载时的寄存器的高8位

TIM2_ARRL=0x60;

TIM2_CNTRH=0xEA;//设定计数器的初值

TIM2_CNTRL=0x60;

//守时周期=1*60000=60000uS=60ms

TIM2_CR1=0x01;//b0=1,答应计数器作业

//b1=0,答应更新

//设置操控器,发动守时器

TIM2_IER=0x01;//答应更新中止

_asm(“rim”);//答应CPU大局中止

while(1)//进入无限循环

{

}

}

//函数功用:守时器4的更新中止服务程序

//输入参数:无

//输出参数:无

//值:无

@far@interruptvoidTIM2_UPD_IRQHandler(void)

{

TIM2_SR1=0x00;//铲除更新标志

PD_ODR=PD_ODR^0x08;//LED驱动信号取反

//LED闪耀频率=2MHZ/2/60000/2=8.3

}

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

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

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

微信扫一扫关注我们

返回顶部