stm32定时器与定时器中断

1.定时器种类

在这里插入图片描述
注:主要使用通用定时器

2.通用计时器特点描述

在这里插入图片描述
说明:四个通道互不影响

3.定时器中断触发条件

在这里插入图片描述

4.定时器计数模式

分为向上,向下,向上向下模式
在这里插入图片描述
在这里插入图片描述

5.通用定时器作用用途

测量输入输出波长度等
说明:每个定时器完全独立没有共享内存

6.工作过程

红色为重点关注
红色重点关注
在这里插入图片描述
时钟来源:
A.内部时钟APB1分频器ckl_int(主要)
B.其他通用定时器 外部引脚2,3,4
C.其他定时器
D.外部通道(略)
时基单元(时间控制单元) :
①预分频(除法)
②计数器时钟
③自动重装载值
输入部分:
①输入引脚
②边沿检测
输出部分 :
A 输出比较寄存器
B周期—重装载值
C占空比—比较值

时钟计算方法
在这里插入图片描述

7.定时器相关寄存器与固件库结构体

在这里插入图片描述
在这里插入图片描述
注:真正使用的只有前3个成员

8.定时器相关库函数

在这里插入图片描述

9.配置步骤

在这里插入图片描述
1.打开定时器时钟
2.中断组选择
3.定时器结构体配置与初始化
4.配置定时器与中断线联系
5.定时器中断结构体配置与初始化
6.开启定时器
在这里插入图片描述
配置俩个:重装载值,分频系数, tclk系统时钟不用

附上代码
.c文件

#include "stm32f10x.h"
#include "tim.h"

void tim_config(void)
{
	TIM_TimeBaseInitTypeDef TIMinitStructure;//定时器结构体变量名
  NVIC_InitTypeDef NVICinitStructure;//定时器中断结构体变量名
  //1.打开定时器时钟	
	

	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
	//2.中断组选择
	NVIC_PriorityGroupConfig( NVIC_PriorityGroup_1);



//3.定时器结构体的配置
	
	TIMinitStructure.TIM_Prescaler			=7200-1;//分配器计数值
	TIMinitStructure.TIM_CounterMode		=TIM_CounterMode_Up;//选择计数模式,选择向上计数模式
	TIMinitStructure.TIM_Period					=10000-1;//配置自动重装载值
	TIMinitStructure.TIM_ClockDivision	=TIM_CKD_DIV1;//选择分频模式,选择不分频模式
	
//4.定时器初始化
	TIM_TimeBaseInit(TIM2, &TIMinitStructure);//用通用定时器2

//5.配置定时器与中断线联系创建
  TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);



//6.定时器中断结构体配置
	NVICinitStructure.NVIC_IRQChannel										=TIM2_IRQn;//中断通道
	NVICinitStructure.NVIC_IRQChannelPreemptionPriority	=1;
	NVICinitStructure.NVIC_IRQChannelCmd								=ENABLE;
	NVICinitStructure.NVIC_IRQChannelSubPriority				=1;

//7.定时器中断初始化
NVIC_Init(&NVICinitStructure);
//8.开启定时器
	TIM_Cmd(TIM2,ENABLE);
}


中断服务函数

void TIM2_IRQHandler ()//定时器中断服务函数
{
	
	static uint16_t temp=0;
	if(TIM_GetITStatus(TIM2,TIM_IT_Update)!= RESET)//判断是否发生中断
	{
		if((temp++ )%2==1)//奇数亮偶数灭,进入中断一次亮灭,一秒拉高一秒拉低
		{
			GPIO_ResetBits(GPIOC,GPIO_Pin_13);//拉低电平
		
		}
		else
		{
			GPIO_SetBits(GPIOC,GPIO_Pin_13);//拉高电平
		
		}
	}
	
TIM_ClearITPendingBit(TIM2,TIM_IT_Update);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

打酱油的;

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

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

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

打赏作者

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

抵扣说明:

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

余额充值