STM32F103C8 TIM定时器中断

 图片及文章内容摘自江科大自化协B站视频

目录

前言

一、定时器类型

1.时间单元设置及通道初始化

2.定时器中断函数


前言

大部分接触STM32的学生还是以电赛为目的的,由于最近省赛时间紧迫,所以对于STM32的学习更多的在应用层,接下去的文章对于原理的介绍会减少,主要在于应用。


一、定时器类型

STM32F103C8T6外设:TMI1,TIM2,TIM3,TIM4

 二、定时器具体配置

1.时间单元设置及通道初始化

这里的计数器溢出频率单位是赫兹,计数器溢出频率的倒数就是定时器触发的时间周期,一般我们计算用的是下面一个等于号的式子,这里的符号表示如下:

CK_PSC 一般为72Mhz(720 0000)

ARR 自动重装 对应变量TIM_Period 范围0~65535

PSC 分频  对应变量 TIM_Prescaler 范围0~65535

还有一些具体的操作看代码的注释,套模板即可

void Timer_Init(void)
{
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
	
	TIM_InternalClockConfig(TIM2);//选择哪个中断就写哪个
	
	TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
	TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;//修改分频,对实际情况影响不大,可以不修改
	TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;//向上对齐模式,同时还有向下对齐,中央对齐模式
	TIM_TimeBaseInitStructure.TIM_Period = 10000 - 1;
	TIM_TimeBaseInitStructure.TIM_Prescaler = 7200 - 1;
	TIM_TimeBaseInitStructure.TIM_RepetitionCounter = 0;//高级计数器需要,不需要用到的直接给0就好
	TIM_TimeBaseInit(TIM2, &TIM_TimeBaseInitStructure);
	
	TIM_ClearFlag(TIM2, TIM_FLAG_Update);//用于解决一复位时就先进一次中断的情况
	TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);
	
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
	
	NVIC_InitTypeDef NVIC_InitStructure;
	NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;
	NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
	NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;//抢占优先级
	NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;//响应优先级
	NVIC_Init(&NVIC_InitStructure);
	
	TIM_Cmd(TIM2, ENABLE);
}

2.定时器中断函数

直接套模板即可

void TIM2_IRQHandler(void)
{
	if (TIM_GetITStatus(TIM2, TIM_IT_Update) == SET)
	{
		
		TIM_ClearITPendingBit(TIM2, TIM_IT_Update);//清出中断寄存器标志位,用于退出中断
	}
}

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

康来个程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值