stm32 定时器_STM32 定时器

本文介绍了STM32F103配置的三种定时器,包括基本、通用和高级定时器的用途。还给出定时器定时功能例程,如使用基本定时器TIM6、TIM7搭建任务TASK,详细说明了配置步骤,如使能时钟、设置分频等,也提及通用定时器通道使用以减少资源占用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

19b51f0b6f1751e66e41a77af3697f2d.png

2019/1/3新年上班第一天 @星辰

从官方数据手册看到STM32F103配置的外设:定时器共有3种,分别是高级定时器TIM1,TIM8(愚以为电机控制相关)、通用定时器TIM2,TIM3,TIM4,TIM5、基本定时器TIM6,TIM7。


本着物尽其用,各有所长的原则进行介绍

1.基本定时器

用途:①可以提供时间基准,作为设计系统的定周期TASK的触发源

   ②由于内部直连DAC,可以直接作为数模转换器的触发源

   ③计数器溢出时产生中断/DMA请求

2.通用定时器

相比较基本定时器的计数功能(触发中断/DMA),新增了四个独立通道:输入比较、输出比较、PWM输出(边沿或中间对齐模式)、单脉冲模式输出。可以使用外部电路控制定时器和定时器互联的同步电路。详情见截图:

d5cfe4cea5f18406eb5579366c7db533.png

3.高级定时器

c26512636cd07eb0375778192b0701c6.png

学习实例:

1.对定时器完成定时功能的例程

以建立合理的单片机系统架构为基本需求,搭建出各个任务的TASK。例如需要1ms和10ms的定周期中断处理函数(TASK),本次使用定时器为基本定时器TIM6,TIM7。

步骤:1)使能定时器模块的时钟,换句话讲就是配置定时器模块的驱动时钟。如图

cdc0b31b2a8b326e8c2c233506ebe9fb.png
通用定时器和基本定时器是挂载于APB1时钟总线上的,所以
RCC->APB1ENR |= RCC_APB1ENR_TIM6EN | RCC_APB1ENR_TIM7EN;//enable clock
具体结构体对应的寄存器实现参照头文件:正点原子system_stm32f10x.h

2)配置内部时钟CK_INT经由PSC分频计数器的时钟频率,配置自动重装置寄存器TIMx_ARR的值

a6dd0f1af0acfd750c8c73797b70f25a.png

由于时钟总线APB1的分频一般会提前配置好,此例中配置好的APB1频率设置为2,则CK_INT的频率为72Mhz。计数器的时钟有内部时钟CK_INT经过PSC预分频器分频后得到,即定时器的CNT计数器每加1或减1的频率。寄存器设置:TIM6->PSC = 7199; 其分频后频率的计算公式为:fck_psc(72Mhz)/psc+1 = 10Khz,CNT每count一次的时间为0.1ms,当达到TIM6_ARR设定的值时产生一次更新中断(SR寄存器的UIF位)。

3ce0efc9ad2f64e5776b41571fa10326.png

3)允许更新中断,即使能定时器的更新中断TIM6_DIER |= 0x0001;

4)允许定时器工作,当TIMx_CR1寄存器的CEN位(使能位)被置“1“时,CK_INT即向PSC提供时钟,定时器工作。

5)配置定时器中断分组(使能定时器中断)

6)编写定时器中断处理函数(TASK定周期函数)

总结:寄存器的设置顺序按照上述顺序设置,定时器相关寄存器设置可以函数为单位,统一设置。配置中断分组也应以函数为单位,将工程中所需中断统一配置。结构顺序如下:

int main(void)
 {	
	     Stm32_Clock_Init(9);//系统时钟设置
     	delay_init(72);	    //延时函数初始化
     	uart_init(72,115200);
     	Timer_init_SFR();
	     INT_init();			//interrupt函数初始化
     	while(1)
       	{
 
        	}
 }

2.通用定时器的各个通道的使用,完成各个不同需求的定时功能,减少定时器使用的个数释放不必要的资源占用。本次使用的定时器为TIM5.

5c24bff2625c2927ba84cc1cab625de9.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值