STM32 配置TIM定时中断常用库函数

单片机学习!


目录

​编辑

1. 函数TIM_DeInit

2. 函数TIM_TimeBaseInit 配置时基单元

3. 函数TIM_TimeBaseStructInit

4. 函数TIM_Cmd 运行控制

5. 函数TIM_ITConfig 中断输出控制

6. 时基单元的时钟选择函数

6.1 函数TIM_InternalClockConfig

6.2 函数 TIM_ITRxExternalClockConfig

6.3 函数 TIM_TIxExternalClockConfig

6.4 函数 TIM_ETRClockMode1Config

6.5 函数 TIM_ETRClockMode2Config

6.6 函数 TIM_ETRConfig

7.单独更改参数的函数

7.1 函数 TIM_PrescalerConfig

7.2 函数 TIM_CounterModeConfig

7.3 函数 TIM_ARRPreloadConfig

7.4 函数 TIM_SetCounter

7.5 函数 TIM_SetAutoreload

8.函数 TIM_GetCounter

9.函数 TIM_GetPrescaler

10.用来获取标志位和清除标志位的函数

10.1 函数 TIM_GetFlagStatus

10.2 函数 TIM_ClearFlag

10.3 函数 TIM_GetITStatus

10.4 函数 TIM_ClearITPendingBit


1. 函数TIM_DeInit

        函数用于恢复缺省配置。

2. 函数TIM_TimeBaseInit 配置时基单元

        函数用于时基单元初始化。

两个参数:

  1. TIMx选择某个定时器。
  2. 结构体,里面包含了配置时基单元的一些参数。

        TIM_Period 设置了在下一个更新事件装入活动的自动重装载寄存器周期的值。它的取值必须在 0x0000 和 0xFFFF 之间。

        TIM_Prescaler 设置了用来作为 TIMx 时钟频率除数的预分频值。它的取值必须在 0x0000 0xFFFF 之间。

        TIM_ClockDivision 设置了时钟分割。该参数取值见下表。

        TIM_CounterMode 选择了计数器模式。该参数取值见下表。

代码示例:

	TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
	TIM_TimeBaseInitStructure.TIM_ClockDivision= TIM_CKD_DIV1;//指定时钟分频
	TIM_TimeBaseInitStructure.TIM_CounterMode= TIM_CounterMode_Up;//计数器模式
	TIM_TimeBaseInitStructure.TIM_Period= 10000-1;//ARR自动重装器的值,决定定时时间
	TIM_TimeBaseInitStructure.TIM_Prescaler= 7200-1;//PSC预分频器的值,决定定时时间,
	TIM_TimeBaseInitStructure.TIM_RepetitionCounter= 0;//重复计数器的值。
	TIM_TimeBaseInit(TIM2,&TIM_TimeBaseInitStructure);

        定时时间可用计数器溢出频率公式计算,定时频率=72M/(PSC+1)/(ARR+1)

对应图中配置时基单元的部分:

3. 函数TIM_TimeBaseStructInit

        函数把结构体变量赋一个默认值。

        下表给出了TIM_TimeBaseInitStruct各个成员的缺省值:

4. 函数TIM_Cmd 运行控制

        函数用于使能计数器。

两个参数:

  1. TIMx选择某个定时器。
  2. NewState新的状态,也就是使能还是失能,使能计数器可以运行;失能计数器不运行。

对应图中运行控制的位置:

代码示例:

	TIM_Cmd(TIM2,ENABLE);	

5. 函数TIM_ITConfig 中断输出控制

        函数用于使能中断输出信号。

三个参数:

  1. TIMx选择某个定时器。
  2. TIM_IT选择要配置哪个中断输出。
  3. NewState新的状态,使能还是失能。

        输入参数 TIM_IT 使能或者失能 TIM 的中断。可以取下表的一个或者多个取值的组合作为该参数的值。

对应图中中断输出控制的位置,用于使能外设的中断输出。

代码示例:

	TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);

6. 时基单元的时钟选择函数

        可以选择RCC内部时钟、ETR外部时钟、ITRx其他定时器、TIx捕获通道。

对应图中时基单元的时钟选择部分

6.1 函数TIM_InternalClockConfig

        函数用于选择内部时钟,参数只有一个TIMx。

对应图中选择:

代码示例:

TIM_InternalClockConfig(TIM2);

6.2 函数 TIM_ITRxExternalClockConfig

        函数用于选择ITRx其他定时器的时钟。

两个参数:

  1. TIMx,选择要配置的定时器。
  2. TIM_InputTriggerSource,选择要接入哪个其他定时器。

        TIM_InputTriggerSource 选择 TIM 输入触发。

对应图中选择:

6.3 函数 TIM_TIxExternalClockConfig

        函数用于选择TIx捕获通道的时钟。

四个参数:

  1. TIMx,选择要配置的定时器。
  2. TIM_TIxExternalCLKSource选择TIx具体的某个引脚。
  3. TIM_ICPolarity,输入的极性。
  4. ICFilter,输入滤波器。

        对于外部引脚的波形,一般都会有极性选择和滤波器,这样更灵活一些

        TIM_TIxExternalCLKSource选择TIMx外部时钟源。

对应图中选择:

6.4 函数 TIM_ETRClockMode1Config

        函数用于选择ETR通过外部时钟模式1输入的时钟。

四个参数:

  1. TIMx,选择要配置的定时器。
  2. TIM_ExtTRGPrescaler外部触发预分频器,这里可以对ETR的外部时钟再提前做一个分频。
  3. TIM_ExtTRGPolarity,输入的极性。
  4. ExtTRGFilter,输入滤波器。

        TIM_ExtTRGPrescaler设置TIMx外部触发预分频。

        TIM_ExtTRGPolarity设置TIMx外部触发极性。

对应图中选择:

6.5 函数 TIM_ETRClockMode2Config

        函数用于选择ETR通过外部时钟模式2输入的时钟。

  1. TIMx,选择要配置的定时器。
  2. TIM_ExtTRGPrescaler外部触发预分频器,这里可以对ETR的外部时钟再提前做一个分频。
  3. TIM_ExtTRGPolarity,输入的极性。
  4. ExtTRGFilter,输入滤波器。

对应图中选择:


总结:

        对于ETR输入的外部时钟而言,函数 TIM_ETRClockMode1Config和函数TIM_ETRClockMode2Config是等效的,函数参数也是一样的,如果不需要触发输入的功能,那两个函数可以互换。


6.6 函数 TIM_ETRConfig

        函数用来单独用来配置ETR引脚的预分频器、极性、滤波器这些参数的。

7.单独更改参数的函数

        在初始化结构体里有很多关键的参数,如自动重装器的目标值和预分频值等,这些参数可能会在初始化之后还需要更改,以下函数可以方便更改这些关键参数。

7.1 函数 TIM_PrescalerConfig

        函数用来单独写预分频值。

两个参数:

  1. Prescaler就是要写入的预分频值。
  2. TIM_PSCReloadMode写入的模式。

        预分频器有一个缓冲器,写入的值是在更新事件发生后才有效的。所以这里有个写入模式,可以选择是听从安排在更新事件生效,或者是再写入后手动产生一个更新事件,让这个值立刻生效。

        TIM_PSCReloadMode选择预分频重载模式。

7.2 函数 TIM_CounterModeConfig

        函数用来改变计数器的计数模式。

两个参数:

  1. TIMx,选择要配置的定时器。
  2. TIM_CounterMode,选择新的计数器模式。

7.3 函数 TIM_ARRPreloadConfig

        自动重装寄存器预装功能配置。计数器的预装功能可以根据需要选择配置,调用这个函数,参数选择使能还是失能来控制计数器预装功能。

7.4 函数 TIM_SetCounter

        给计数器写入一个值,调用这个函数可以手动给一个计数值。

7.5 函数 TIM_SetAutoreload

        给自动重装寄存器写入一个目标值,调用这个函数可以手动给一个目标值。

8.函数 TIM_GetCounter

        获取当前计数器的值,调用这个函数可以查看当前计数器记到哪里了,返回值就是当前计数器的值。

9.函数 TIM_GetPrescaler

        获取当前预分频器的值,调用这个函数可以查看预分频值。

10.用来获取标志位和清除标志位的函数

10.1 函数 TIM_GetFlagStatus

        TIM_FLAG 待检查的标志位,下表给出了所有可以被函数TIM_ GetFlagStatus检查的标志位列表。

10.2 函数 TIM_ClearFlag

10.3 函数 TIM_GetITStatus

10.4 函数 TIM_ClearITPendingBit

  • 14
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: tim_prescalerconfig是一个函数,用于配置定时器的预分频器。预分频器是用于将定时器时钟频率分频的一个模块,可以用来调整定时器的计数速度。tim_prescalerconfig函数可以设置预分频器的分频系数,以及是否开启自动重载预装载功能。 ### 回答2: tim_prescalerconfig是一个函数,它是用来配置定时器的预分频值的。预分频值决定了计数器的频率,从而影响了定时器的精度和计时范围。函数的参数包括定时器的指针,预分频值和预分频的时钟周期单位。 预分频值可以是一个16位的无符号整数,因此可以设置的范围是从1到65536。它可以设置为任意的整数值,但是需要考虑到预分频值越大,计数器的精度越低,但计时范围越大。 预分频的时钟周期单位可以是定时器的输入时钟,也可以是内部时钟。内部时钟通常是指定时器的外部输入时钟经过一系列的分频后得到的时钟信号。具体的配置取决于所使用的硬件和应用的需求。 tim_prescalerconfig函数的作用是根据应用的需求来配置定时器的预分频值,以实现特定的计时效果。根据预分频值的不同,可以实现不同的计时精度和计时范围。 总之,tim_prescalerconfig函数是一个用来配置定时器预分频值的函数,通过设置预分频值来调节定时器的计时精度和计时范围。 ### 回答3: tim_prescalerconfig是一个功能非常重要的函数,它是用来配置定时器的预分频系数的。 在嵌入式系统中,定时器通常用来精确地计时或者控制设备的运行时间。定时器的精度往往取决于其输入时钟的频率以及预分频系数的设置。tim_prescalerconfig函数的作用就是设置定时器的预分频系数。 预分频系数决定了定时器每个时钟周期所计数的值。例如,如果定时器的输入时钟频率为1MHz,预分频系数设置为1000,那么每个时钟周期定时器计数器会加1,也就是定时器的计数频率为1kHz。通过调整预分频系数,我们可以灵活地控制定时器的计数速度。 tim_prescalerconfig函数接受两个参数,第一个参数是定时器的句柄,第二个参数是预分频系数。通过调用这个函数,我们可以将所需的预分频系数设置给定时器,从而实现精确的计时或控制功能。 除了用于计时功能,tim_prescalerconfig函数还可以用于PWM生成、输入捕获、输出比较等其他定时器相关的功能。通过正确配置预分频系数,我们可以根据需求高效地使用定时器进行各种操作。 总之,tim_prescalerconfig函数是配置定时器的预分频系数的重要函数,通过调用这个函数,我们可以根据需求设置定时器的计数频率,实现精确的计时或控制功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值