1 开启内部时钟
2 选择时基单元的时钟源
3 配置时基单元
4 配置中断输出控制
5 配置NVIC,打开定时器中断通道,选择优先级
6 运行控制
7 写定时器中断服务函数
用到的库函数
时基单元
void TIM_TimeBaseInit(TIM_TypeDef*TIMx,TIM_TimeBaseInitTypeDef*TIM_TimeBaseInitStruct);
时基单元初始化
参数1 选择某个定时器
参数2 配置时基单元的参数(结构体)
void TIM_TimeBaseStructInit(TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct);
把结构图=体变量赋一个默认值
运行控制
void TIM_Cmd(TIM_TypeDef* TIMx, FunctionalState NewState);
使能计数器
参数1 选择定时器
参数2 选择使能还是失能
中断输出控制
void TIM_ITConfig(TIM_TypeDef* TIMx, uint16_t TIM_IT, FunctionalState NewState);
使能中断输出信号 =对应中断输出控制
参数1 选择定时器
参数2 需要配置那个中断输出
参数3 选着使能还是失能
时钟源选择
void TIM_InternalClockConfig(TIM_TypeDef* TIMx);
选择内部时钟
参数1 选择定时器
void TIM_ITRxExternalClockConfig(TIM_TypeDef* TIMx, uint16_t TIM_InputTriggerSource);
选择ITRX其他定时器的时钟
参数1 选择要配置的定时器
参数2 选择要接入那个定时器
void TIM_TIxExternalClockConfig(TIM_TypeDef* TIMx, uint16_t TIM_TIxExternalCLKSource,uint16_t TIM_ICPolarity, uint16_t ICFilter);
选择TIX捕获通道时钟
参数1 : 同上
参数2 :选择TIX具体那个引脚
参数3 :输入的极性
参数4 : 滤波器
void TIM_ETRClockMode1Config(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity, uint16_t ExtTRGFilter);
选择ETR通过外部时钟模式1输入的时钟
参数1 外部触发预分频器
参数2:输入极性
参数3 滤波器
void TIM_ETRClockMode2Config(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler,
uint16_t TIM_ExtTRGPolarity, uint16_t ExtTRGFilter);
功能和上一个差不多
选择ETR通过外部时钟模式2输入的时钟
参数和上面相同
void TIM_ETRConfig(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity, uint16_t ExtTRGFilter);
用来单独配置ETR引脚的预分频器,极性,滤波器参数的
void TIM_SetCounter(TIM_TypeDef* TIMx, uint16_t Counter);
给计数器写一个值
参数1 选择计数器
参数2 写入的值
void TIM_SetAutoreload(TIM_TypeDef* TIMx, uint16_t Autoreload);
给自动重装器写一个值
参数1 选择计数器
参数2 写入的值
uint16_t TIM_GetCounter(TIM_TypeDef* TIMx);
获取当前计数器的值
参数1 选择计数器
uint16_t TIM_GetPrescaler(TIM_TypeDef* TIMx);
获取当前计数器预分频的值
参数1 选择计数器
获取标志位和清除标志位
FlagStatus TIM_GetFlagStatus(TIM_TypeDef* TIMx, uint16_t TIM_FLAG);
void TIM_ClearFlag(TIM_TypeDef* TIMx, uint16_t TIM_FLAG);
ITStatus TIM_GetITStatus(TIM_TypeDef* TIMx, uint16_t TIM_IT);
void TIM_ClearITPendingBit(TIM_TypeDef* TIMx, uint16_t TIM_IT);