STM32
直播中

姬盼希

7年用户 925经验值
擅长:控制/MCU
私信 关注
[问答]

STM32F107的定时器中断实现步骤有哪些

STM32F107的定时器有哪几类?

STM32F107的定时器中断实现步骤有哪些?

回帖(1)

李岩

2021-10-27 11:34:21
  1. STM32F107的通用定时器是指: TIM2、TIM3、TIM4、TIM5、
  STM32F107的高级定时器是指: TIM1、TIM8
  STM32F107的基本定时器是指: TIM6、TIM7
  2. STM32F107的通用定时器(TIM2、TIM3、TIM4、TIM5)的模式有向上计数、向下计数、中央对齐模式。
  向上计数模式:计数器从0计数到自动加载值(TIMx_ARR),然后重新从0开始计数并且产生一个计数器溢出事件。
  向下计数模式:计数器从自动装入的值(TIMx_ARR)开始向下计数到0,然后从自动装入的值重新开始,并产生一个计数器向下溢出事件。
  中央对齐模式(向上/向下计数):计数器从0开始计数到自动装入的值-1,产生一个计数器溢出事件,然后向下计数到1并且产生一个计数器溢出事件;然后再从0开始重新计数。
  3. STM32F107的通用定时器的时钟选择有多种,一般使用RCC提供的内部时钟TIMxCLK, 由APB1时钟分频提供。
  4. 状态标志位获取和清除
  FlagStatus TIM_GetFlagStatus(TIM_TypeDef* TIMx, uint16_tTIM_FLAG);
  void TIM_ClearFlag(TIM_TypeDef* TIMx, uint16_t TIM_FLAG);
  ITStatus TIM_GetITStatus(TIM_TypeDef* TIMx, uint16_tTIM_IT);
  void TIM_ClearITPendingBit(TIM_TypeDef* TIMx, uint16_tTIM_IT);
  定时器中断实现步骤:
  1. 定时器时钟使能。 RCC_APB1PeriphClockCmd();
  2. 初始化定时器,配置ARR,PSC。 TIM_TimeBaseInit();
  3. 开启定时器中断,配置NVIC。 void TIM_ITConfig(); NVIC_Init();
  4. 使能定时器。 TIM_Cmd();
  5. 编写中断服务函数。 TIMx_IRQHandler();
  1) TIM_TimeBaseStructure.TIM_ClockDivision这一行代码是干吗的啊
  CKD[1:0]: 时钟分频因子 (Clock division) 这2位定义在定时器时钟(CK_INT)频率、死区时间和由死区发生器与数字滤波器(ETR,TIx)所用的采样时钟之间的分频比例。 00: tDTS = tCK_INT01 : tDTS = 2 x tCK_INT10: tDTS = 4 x tCK_INT 11 :保留,不要使用这个配置
  用来屏蔽一些不需要的毛刺的。比如你数字滤波器的频率为1M,N=8,则频率大于1MHz/8=125KHz(持续时间小于8us)的脉冲都会被忽略。可以用在按键消抖之类的。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分