欢迎来到天天文库
浏览记录
ID:40140782
大小:203.46 KB
页数:8页
时间:2019-07-23
《STM8教程-第十三章 STM8S207 定时器模块及其应用实例》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第十三章STM8S207定时器模块及其应用实例这一节,我们将向大家介绍如何使用STM8的定时器中的基本定时功能,STM8的定时器功能十分强大,有TIM1高级定时器,也有TIM2、TIM3等通用定时器,还有TIM4基本定时器。在STM8S参考手册里面,定时器的介绍占了1/3的篇幅,足见其重要性。这一节,我们分别介绍TIM1到TIM4定时器中的基本定时功能。例程一、16位高级控制定时器(TIM1)简介:TIM1由一个16位的自动装载计数器组成,它由一个可编程的预分频器驱动。TIM1有4个通道,分别是1到4。分别对应于四个不同的捕获/比较通道。高级控制定时
2、器适用于许多不同的用途:基本的定时测量输入信号的脉冲宽度(输入捕获)产生输出波形(输出比较,PWM和单脉冲模式)对应与不同事件(捕获,比较,溢出,刹车,触发)的中断与TIM5/TIM6或者外部信号(外部时钟,复位信号,触发和使能信号)同步高级控制定时器广泛的适用于各种控制应用中,包括那些需要中间对齐模式PWM的应用,该模式支持互补输出和死区时间控制。高级控制定时器的时钟源可以是内部时钟,也可以是外部的信号,可以通过配置寄存器来进行选择。这一节我们实现的功能是基本的定时,关于PWM的编程留下以后的章节中。还有建议大家研究更为深入的功能TIM1的时基单元
3、包括,如下图所示:●16位向上/向下计数器●16位自动重载寄存器●重复计数器●预分频器16位计数器,预分频器,自动重载寄存器和重复计数器寄存器都可以通过软件进行读写操作。自动重载寄存器由预装载寄存器和影子寄存器组成。可在在两种模式下写自动重载寄存器:●自动预装载已使能(TIM1_CR1寄存器的ARPE位置位)。在此模式下,写入自动重载寄存器的数据将被保存在预装载寄存器中,并在下一个更新事件(UEV)时传送到影子寄存器。●自动预装载已禁止(TIM1_CR1寄存器的ARPE位清除)。在此模式下,写入自动重载寄存器的数据将立即写入影子寄存器。更新事件的产生
4、条件:●计数器向上或向下溢出。●软件置位了TIM1_EGR寄存器的UG位。●时钟/触发控制器产生了触发事件。在预装载使能时(ARPE=1),如果发生了更新事件,预装载寄存器中的数值(TIM1_ARR)将写入影子寄存器中,并且TIM1_PSCR寄存器中的值将写入预分频器中。置位TIM1_CR1寄存器的UDIS位将禁止更新事件(UEV)。计数器由预分频器的输出CK_CNT驱动,而CK_CNT仅在IM1_CR1寄存器的计数器使能位(CEN)被置位时才有效。简要说明:CK_PSC的时钟来源于f_master,我们使用16M内部时钟源HIS然后可以通过PSCR
5、这个寄存器设置CK_CNT,PSCR是2个8位寄存器组成的16位寄存器,可以在0~65535之间任务分频,分频后的频率提供给CK_CNT我们的实验为了方便计算,CK_CNT为1K的频率,所以PSCR=16M/1K=16000,换成16进制为0x3E80我们使用了默认的向上溢出,所以为了500ms溢出中断一次,需要设置ARPE这个定时器,而且设置为自动预装功能,这样就可以一直提供2Hz的频率中断最后允许中断和计数器使能就可以实现我们的功能有了以上的基础就可以进入到TIM1的基本定时器编程了,为了验证效果,我们采用了LED0作为判断依据。在TIM1的溢出
6、中断服务程序中闪耀LED0程序代码如下:#include"iostm8s207rb.h"#defineLED1_FLASHPD_ODR_ODR0=!PD_ODR_ODR0voidCLK_Init(void);voidGPIO_Init(void);voidTIM1_Init(void);voidmain(void){CLK_Init();GPIO_Init();TIM1_Init();asm("rim");//主循环里没有程序需要执行while(1);}voidCLK_Init(void){CLK_CKDIVR=0x00;//16M内部RC直接输出}
7、voidGPIO_Init(void){PD_DDR=0x01;//配置PD端口的方向寄存器PD0输出PD_CR1=0x01;//设置PD0为推挽输出PD_ODR=0xFF;}voidTIM1_Init(void){TIM1_PSCRH=0x3E;//16M系统时钟经预分频f=fck/(PSCR+1)TIM1_PSCRL=0x7F;//PSCR=0x3E7F,f=16M/(0x3E7F+1)=1000Hz//每个计数周期1msTIM1_ARRH=0x01;//自动重载寄存器ARR=0x01F4=500TIM1_ARRL=0xF4;//每记数500次产
8、生一次中断,即500msTIM1_IER=0x01;//允许更新中断TIM1_CR1=0x01;//计数器使
此文档下载收益归作者所有