提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
STM32学习笔记——TIM定时器
前言
提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
一、TIM中断一些基本知识
定时器中:实际分频系数=预分频器的值+1,最大值65535
计数器计数频率 :CK_CNT = CK_PSC / (PSC+1)
计数器溢出频率 : CK_CNT_OV = CK_CNT / (ARR+1) = CK_PSC / (PSC + 1) / ( ARR +1)
所有定时器的内部基准时钟都是72MHz。
二、代码编写
定时器中断基本结构:思路就是将各个模块打通,就可以让定时器进行工作
1.RCC开启时钟。
2.选择时基单元的时间源,对于定时中断选择内部时间源。
3.配置时基单元
4.配置输出中断控制
5.配置NVIC,在NVIC中打开定时器中断的通道,并分配一个优先级
6.运行控制
常用定时器库函数介绍
1.void TIM_TimeBaseInit(TIM_TypeDef* TIMx, TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct);时基单元初始化
2.void TIM_TimeBaseStructInit(TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct);
3.void TIM_Cmd(TIM_TypeDef* TIMx, FunctionalState NewState):用来使能计数器
4.void TIM_ITConfig(TIM_TypeDef* TIMx, uint16_t TIM_IT, FunctionalState NewState):使能中断输出控制
5.void TIM_InternalClockConfig(TIM_TypeDef* TIMx):选择内部时钟
6.void TIM_ITRxExternalClockConfig(TIM_TypeDef* TIMx, uint16_t TIM_InputTriggerSource):选择ITRx其他定时器的时钟。
7.void TIM_TIxExternalClockConfig():选择TIX捕获通道的时钟
8.void TIM_ETRClockMode1Config():选择ETR外部时钟控制模式
9.void TIM_ETRClockMode2Config():选择ETR通过外部时钟模式2输入的时钟
10.void TIM_ETRConfig():单独用来配置ETR引脚的预分频器、极性、滤波器等参数
11.void TIM_PrescalerConfig():单独用来写预分频值
12.void TIM_CounterModeConfig():改变计数器的计数模式
13.void TIM_ARRPreloadConfig():自动重装器预装功能配置
14.void TIM_SetAutoreload():给自动重装器写入一个值
15.uint16_t TIM_GetCounter(TIM_TypeDef* TIMx):获得当前计数器的值
16.uint16_t TIM_GetPrescaler(TIM_TypeDef* TIMx):获得当前预分频器的值