TIM_IT_Update:更新中断,计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发) TIM_IT_CC1~4:都是捕获/比较中断,貌似都是平等的,即输入捕获,输出比较 TIM_IT_Trigger:触发事件(计数器启动、停止、初始化或者由内部/外部触发计数) 使用的时候都是调用函数TIM_ITConfig()来使能指定的中断类型,调用TIM...
/* 定时器2中端处理函数 */ void TIM2_IRQHandler(void) { if(TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET) { num++; /* 向USART1发送num */ printf("%d", num); TIM_ClearITPendingBit(TIM2, TIM_IT_Update); //清除TIM2更新事件的中断标志位 } } 演示结果# 定时器TIM2每秒产生一次更新...
void TIM_ITConfig(TIM_TypeDef* TIMx, uint16_t TIM_IT, FunctionalState NewState); 第一个参数是选择定时器号,这个容易理解,取值为 TIM1~TIM17。 第二个参数非常关键,是用来指明我们使能的定时器中断的类型,定时器中断的类型有很 多种,包括更新中断 TIM_IT_Update,触发中断 TIM_IT_Trigger,以及输入捕获中...
查看引脚定义可以知道 TIMx_ETR 的来源(不同型号不同,下面是以 STM32F103C8T6 为例),例如 PA0 的默认复用功能一栏写着“WKUP / USART2_CTS / ADC12_IN0 / TIM2_CH1_ETR”,最后这个 TIM2_CH1_ETR 就代表该引脚(PA0)是通用定时器 TIM2 的 CH1 和 ETR 的复用引脚。TIM2_CH1 见后,属于框图的下半...
TIM_IT_Update: TIM update Interrupt source TIM_IT_CC1: TIM Capture Compare 1 Interrupt source TIM_IT_CC2: TIM Capture Compare 2 Interrupt source TIM_IT_CC3: TIM Capture Compare 3 Interrupt source TIM_IT_CC4: TIM Capture Compare 4 Interrupt source ...
意思就是打开定时器中断,当计数溢出时进入中断,更新指的是更新计数器的值,中断是指更新数值的时候会进入中断
5.捕获寄存器 1(TIM2_CCR1) 捕获/比较寄存器 1:TIMx_CCR1,该寄存器用来存储捕获发生时,TIMx_CNT的值,我们从 TIMx_CCR1 就可以读出通道 1 捕获发生时刻的 TIMx_CNT 值,通过两次捕获(一次上升沿捕获,一次下降沿捕获)的差值,就可以计算出高电平脉冲的宽度。
// TIM_ClearITPendingBit(TIM2, TIM_IT_Update); // } //} Timer.c #include "stm32f10x.h" // Device header extern uint16_t Num;//使用extern声明主函数的Num变量,可在本程序中直接使用Num变量 /*定时中断基本结构 第一步:RCC开启时钟
1) TIM3 时钟使能 TIM3 是挂载在 APB1 之下,所以我们通过 APB1 总线下的使能使能函数来使能 TIM3。调 用的函数是: RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //时钟使能 2)初始化定时器参数,设置自动重装值,分频系数,计数方式
1、使能TIM时钟 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM*,ENABLE); 2、基础设置 TIM_TimeBaseStructure.TIM_Period 计数值 TIM_TimeBaseStructure.TIM_Prescaler 预分频,此值+1为分频的除数 TIM_TimeBaseStructure.TIM_ClockDivision = 0 时钟因子 待做进一步说明 ...