学习记录---STM32定时器中断实验

TIM通用定时器

通用定时器是一个通过可编程预分频器驱动的16位自动装载计数器构成。
它适用于多种场合,包括测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和PWM)。
使用定时器预分频器和RCC时钟控制器预分频器,脉冲长度和波形周期可以在几个微秒到几个毫秒间调整。每个定时器都是完全独立的,没有互相共享任何资源。它们可以一起同步操作。

  • 16位向上、向下、中央对齐模式自动装载计数器
  • 16位可编程(可以实时修改)预分频器,计数器时钟频率的分频系数为1~65536之间的任意数值
  • 4个独立通道:
    ─ 输入捕获
    ─ 输出比较
    ─ PWM生成(边缘或中间对齐模式)
    ─ 单脉冲模式输出
  • 使用外部信号控制定时器和定时器互连的同步电路
  • 如下事件发生时产生中断/DMA:
    ─ 更新:计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发)
    ─ 触发事件(计数器启动、停止、初始化或者由内部/外部触发计数)
    ─ 输入捕获
    ─ 输出比较
  • 支持针对定位的增量(正交)编码器和霍尔传感器电路
  • 触发输入作为外部时钟或者按周期的电流管理
  • 时基单元包含:
    ● 计数器寄存器(TIMx_CNT)
    ● 预分频器寄存器 (TIMx_PSC)
    ● 自动装载寄存器 (TIMx_ARR)

通用定时器框图

在这里插入图片描述
STM32中文参考手册14.2
在这里插入图片描述
PSC单位 Hz
Tout单位 S

步骤

  1. 初始化时钟
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
  1. 初始化TIM定时器
	TIM3_BaseInit.TIM_ClockDivision=TIM_CKD_DIV1;
	TIM3_BaseInit.TIM_CounterMode=TIM_CounterMode_Up ;
	TIM3_BaseInit.TIM_Period=TIM_Period;
	TIM3_BaseInit.TIM_Prescaler=TIM_Prescaler;
	TIM_TimeBaseInit(TIM3,&TIM3_BaseInit);
  1. 初始化中断
	NVIC_TIM3_interrupt_Init.NVIC_IRQChannel=TIM3_IRQn;
	NVIC_TIM3_interrupt_Init.NVIC_IRQChannelCmd=ENABLE;
	NVIC_TIM3_interrupt_Init.NVIC_IRQChannelPreemptionPriority=0;
	NVIC_TIM3_interrupt_Init.NVIC_IRQChannelSubPriority=3;
	NVIC_Init(&NVIC_TIM3_interrupt_Init);
  1. 使能更新中断
	TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);
  1. 使能定时器
	TIM_Cmd(TIM3,ENABLE);
  1. 编写中断服务函数
void TIM3_IRQHandler()
{
	LED8_on;delay_ms(500);LED8_off;delay_ms(500);
	TIM_ClearITPendingBit(TIM3,TIM_IT_Update);
}

如果中断服务后不软件清除中断标志位那么会反复中断

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值