STM32 配置TIM定时中断常用库函数
单片机学习!
目录
6.2 函数?TIM_ITRxExternalClockConfig
6.3 函数?TIM_TIxExternalClockConfig
6.4 函数?TIM_ETRClockMode1Config
6.5 函数?TIM_ETRClockMode2Config
1. 函数TIM_DeInit
? ? ? ? 函数用于恢复缺省配置。
2. 函数TIM_TimeBaseInit?配置时基单元
????????函数用于时基单元初始化。
两个参数:
- TIMx选择某个定时器。
- 结构体,里面包含了配置时基单元的一些参数。
????????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 运行控制
? ? ? ? 函数用于使能计数器。
两个参数:
- TIMx选择某个定时器。
- NewState新的状态,也就是使能还是失能,使能计数器可以运行;失能计数器不运行。
对应图中运行控制的位置:
代码示例:
TIM_Cmd(TIM2,ENABLE);
5. 函数TIM_ITConfig?中断输出控制
? ? ? ? 函数用于使能中断输出信号。
三个参数:
- TIMx选择某个定时器。
- TIM_IT选择要配置哪个中断输出。
- 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其他定时器的时钟。
两个参数:
- TIMx,选择要配置的定时器。
- TIM_InputTriggerSource,选择要接入哪个其他定时器。
????????TIM_InputTriggerSource 选择 TIM 输入触发。
对应图中选择:
6.3 函数?TIM_TIxExternalClockConfig
? ? ? ? 函数用于选择TIx捕获通道的时钟。
四个参数:
- TIMx,选择要配置的定时器。
- TIM_TIxExternalCLKSource选择TIx具体的某个引脚。
- TIM_ICPolarity,输入的极性。
- ICFilter,输入滤波器。
????????对于外部引脚的波形,一般都会有极性选择和滤波器,这样更灵活一些
????????TIM_TIxExternalCLKSource选择TIMx外部时钟源。
对应图中选择:
6.4 函数?TIM_ETRClockMode1Config
? ? ? ? 函数用于选择ETR通过外部时钟模式1输入的时钟。
四个参数:
- TIMx,选择要配置的定时器。
- TIM_ExtTRGPrescaler外部触发预分频器,这里可以对ETR的外部时钟再提前做一个分频。
- TIM_ExtTRGPolarity,输入的极性。
- ExtTRGFilter,输入滤波器。
????????TIM_ExtTRGPrescaler设置TIMx外部触发预分频。
????????TIM_ExtTRGPolarity设置TIMx外部触发极性。
对应图中选择:
6.5 函数?TIM_ETRClockMode2Config
????????函数用于选择ETR通过外部时钟模式2输入的时钟。
- TIMx,选择要配置的定时器。
- TIM_ExtTRGPrescaler外部触发预分频器,这里可以对ETR的外部时钟再提前做一个分频。
- TIM_ExtTRGPolarity,输入的极性。
- ExtTRGFilter,输入滤波器。
对应图中选择:
总结:
????????对于ETR输入的外部时钟而言,函数?TIM_ETRClockMode1Config和函数TIM_ETRClockMode2Config是等效的,函数参数也是一样的,如果不需要触发输入的功能,那两个函数可以互换。
6.6 函数?TIM_ETRConfig
? ? ? ? 函数用来单独用来配置ETR引脚的预分频器、极性、滤波器这些参数的。
7.单独更改参数的函数
????????在初始化结构体里有很多关键的参数,如自动重装器的目标值和预分频值等,这些参数可能会在初始化之后还需要更改,以下函数可以方便更改这些关键参数。
7.1 函数?TIM_PrescalerConfig
? ? ? ? 函数用来单独写预分频值。
两个参数:
- Prescaler就是要写入的预分频值。
- TIM_PSCReloadMode写入的模式。
????????预分频器有一个缓冲器,写入的值是在更新事件发生后才有效的。所以这里有个写入模式,可以选择是听从安排在更新事件生效,或者是再写入后手动产生一个更新事件,让这个值立刻生效。
????????TIM_PSCReloadMode选择预分频重载模式。
7.2 函数?TIM_CounterModeConfig
? ? ? ? 函数用来改变计数器的计数模式。
两个参数:
- TIMx,选择要配置的定时器。
- 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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!