TIM是Timer的简写,是STM32的一种外设 定时器分为高级定时器、通用定时器、基本定时器。 通用定时器框图# 这里只说明通用定时器的框图: 从图中可以看出使用内部时钟CK_INT作为定时器时钟输入,CK_PSC是输入预分频器PSC的时钟,CK_PSC经过PSC分频后得到定时器计数用的时钟CK_CNT; Auto-reload register(ARR)
TIM_SelectInputTrigger(TIMX,TIM_TS_TI1FP1);//选择触发源是用来选择 TIM3 的输入触发源为 TI1FP1,即 TIM3 的通道 1 的滤波后的输入信号。 TIM_SelectSlaveMode(TIMX,TIM_SlaveMode_Reset);//选择从模式是用来选择 TIM3 的从模式为复位模式,即当 TIM3 接收到触发输入信号(TRGI)的上升沿时,TIM3 的...
NVIC_IRQChannelSubPriority= 1; NVIC_Init(&NVIC_InitStructure); TIM_Cmd(TIM2,ENABLE); } uint16_t Timer_GetCounter(void){//不同点,多了输出CNT的函数 return TIM_GetCounter(TIM2); } void TIM2_IRQHandler (void){ if (TIM_GetITStatus(TIM2,TIM_IT_Update)==SET){ Num++; TIM_...
预分频器的输入时钟CK_PSC:选内部时钟的话一般是72MHz 计数器使能CNT_EN:高电平计数器正常运行,低电平计数器停止 计数器时钟= CK_PSC / 2,计数器在时钟的每个上升沿自增,溢出后清零,产生一个更新事件的脉冲,另外还会将更新中断标志位UIF置1,随即申请中断,中断响应后,需要在中断程序里手动清零 通过设置ARPE位...
TIM2和TIM5是32位定时器,其它定时器都是16位定时器。16位和32位的区别是CNT计数器范围不同,32位的范围是0 到2^32 – 1,而16位的是0到65535;它们支持的分频是范围是一样的,都是1到65535。 计数器支持递增、递减和递增/递减二合一。 多个独立通道,可用于: – 输入捕获。 – 输出比较。 –PWM 生成(边沿...
(2)单片机内部的计数功能:CNT,CNT不断累加(向上计数)或者减减(向下计数); (3)计算出每次CNT每次+1或者-1的时间,这个时间通过单片机运行的速度也就是频率计算得出,详细的情况可以查看图1。(预分频器的作用就是为了减慢速度) (4)计数器存放值范围:0-2^16-1(0-65535) ,(16位自动装载计数器). ...
基本定时器 TIM6 和 TIM7是一个 16位向上递增的定时器,当在自动重载寄存器(TIMx_ARR)添加一个计数值后并使能 TIMx,计数寄存器(TIMx_CNT)就会从 0 开始递增,当 TIMx_CNT 的数值与 TIMx_ARR值相同时就会生成事件并把 TIMx_CNT 寄存器清 0,完成一次循环过程。如果没有停止定时器就循环执行上述过程。
TIMPRE位:主要用于定时器预分频选择,个人认为这称作为倍频选择更合适。TIMxCLK = ? xPCLKx。 重装载定时器:TIMx_ARR,存储内容为要装载到实际重装载寄存器的值。 计数寄存器:TIMx_CNT,当前计数值 基本定时器框图: 方框中的阴影部分为影子寄存器:既有两个定时器。
CNT:TIM counter reg 定时器计数寄存器,Period对单位时间的count EGR:TIM event generation reg 2、TIM_OC_Set初始化常用: CR2:TIM control reg 2 该寄存器内容决定输出引脚电平状态OCIdleState或OCNIdleState CCMRx:TIM_capture/compare mode reg x channel1/2---x = 1 channel3/4---...
STM32输入定时器捕获功能,除了TIM6和TIM7 简单的说就是通过检测 TIMx_CHx 上的 边沿信号,在边沿信号发生跳变(比如上升沿/下降沿)的时候,将当前定时器的值(TIMx_CNT) 存放到对应的通道的捕获/比较寄存器(TIMx_CCRx)里面,完成一次捕获。同时还可以配置捕获时是否触发中断/DMA 等。