STM32初识——通用定时器配置(by woody)
来源:互联网 发布:淘宝三星店铺 编辑:程序博客网 时间:2024/05/29 11:44
通用定时器的益处时间
Tout= ((arr+1)*(psc+1))/Tclk;
TIM3时钟使能
TIM3 是挂载在 APB1 之下,所以我们通过 APB1 总线下的时钟使能函数来使能 TIM3。调用的函数是:
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //时钟使能
初始化定时器参数,设置自动重装值,分频系数,计数方式。
在库函数中,定时器的初始化参数是通过初始化函数 TIM_TimeBaseInit 实现的:
voidTIM_TimeBaseInit(TIM_TypeDef*TIMx,TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct);
第一个参数是确定是哪个定时器,这个比较容易理解。第二个参数是定时器初始化参数结构体指针,结构体类型为 TIM_TimeBaseInitTypeDef
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_TimeBaseStructure.TIM_Period = 5000;//设置自动重载计数周期值
TIM_TimeBaseStructure.TIM_Prescaler =7199;//参数 TIM_Prescaler是用来设置分频系数的
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;//设置时钟分频因子
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//参数 TIM_CounterMode 是用来设置计数方式
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
设置TIM3_DIER允许更新中断。
因为我们要使用TIM3的更新中断,寄存器的相应位便可使能更新中断。在库函数里面定时器中断使能是通过 TIM_ITConfig 函数来实现的:
void TIM_ITConfig(TIM_TypeDef* TIMx, uint16_t TIM_IT, FunctionalState NewState);
第一个参数是选择定时器号,这个容易理解,取值为 TIM1~TIM17。
第二个参数非常关键,是用来指明我们使能的定时器中断的类型,定时器中断的类型有很多种,包括更新中断TIM_IT_Update触发中断TIM_IT_Trigger以及输入捕获中断等等。
第三个参数就很简单了,就是失能还是使能。
TIM3中断优先级设置。
在定时器中断使能之后,因为要产生中断,必不可少的要设置 NVIC 相关寄存器,设置中
断优先级。
使能TIM3 。
光配置好定时器还不行,没有开启定时器,照样不能用。我们在配置完后要开启定时器,通过TIM3_CR1的CEN位来设置。在固件库里面使能定时器的函数是通过TIM_Cmd函数来实现的:
void TIM_Cmd(TIM_TypeDef* TIMx, FunctionalState NewState)
编写中断服务函数。
读取中断状态寄存器的值判断中断类型的函数
ITStatus TIM_GetITStatus(TIM_TypeDef* TIMx, uint16_t)
该函数的作用是,判断定时器TIMx的中断类型TIM_IT是否发生中断if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET){}
固件库中清除中断标志位的函数
void TIM_ClearITPendingBit(TIM_TypeDef* TIMx, uint16_t TIM_IT)
该函数的作用是,清除定时器 TIMx 的中断 TIM_IT 标志位。TIM_ClearITPendingBit(TIM3, TIM_IT_Update );
Tout= ((arr+1)*(psc+1))/Tclk;
TIM3时钟使能
TIM3 是挂载在 APB1 之下,所以我们通过 APB1 总线下的时钟使能函数来使能 TIM3。调用的函数是:
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //时钟使能
初始化定时器参数,设置自动重装值,分频系数,计数方式。
在库函数中,定时器的初始化参数是通过初始化函数 TIM_TimeBaseInit 实现的:
voidTIM_TimeBaseInit(TIM_TypeDef*TIMx,TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct);
第一个参数是确定是哪个定时器,这个比较容易理解。第二个参数是定时器初始化参数结构体指针,结构体类型为 TIM_TimeBaseInitTypeDef
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_TimeBaseStructure.TIM_Period = 5000;//设置自动重载计数周期值
TIM_TimeBaseStructure.TIM_Prescaler =7199;//参数 TIM_Prescaler是用来设置分频系数的
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;//设置时钟分频因子
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//参数 TIM_CounterMode 是用来设置计数方式
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
设置TIM3_DIER允许更新中断。
因为我们要使用TIM3的更新中断,寄存器的相应位便可使能更新中断。在库函数里面定时器中断使能是通过 TIM_ITConfig 函数来实现的:
void TIM_ITConfig(TIM_TypeDef* TIMx, uint16_t TIM_IT, FunctionalState NewState);
第一个参数是选择定时器号,这个容易理解,取值为 TIM1~TIM17。
第二个参数非常关键,是用来指明我们使能的定时器中断的类型,定时器中断的类型有很多种,包括更新中断TIM_IT_Update触发中断TIM_IT_Trigger以及输入捕获中断等等。
第三个参数就很简单了,就是失能还是使能。
TIM3中断优先级设置。
在定时器中断使能之后,因为要产生中断,必不可少的要设置 NVIC 相关寄存器,设置中
断优先级。
使能TIM3 。
光配置好定时器还不行,没有开启定时器,照样不能用。我们在配置完后要开启定时器,通过TIM3_CR1的CEN位来设置。在固件库里面使能定时器的函数是通过TIM_Cmd函数来实现的:
void TIM_Cmd(TIM_TypeDef* TIMx, FunctionalState NewState)
编写中断服务函数。
读取中断状态寄存器的值判断中断类型的函数
ITStatus TIM_GetITStatus(TIM_TypeDef* TIMx, uint16_t)
该函数的作用是,判断定时器TIMx的中断类型TIM_IT是否发生中断if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET){}
固件库中清除中断标志位的函数
void TIM_ClearITPendingBit(TIM_TypeDef* TIMx, uint16_t TIM_IT)
该函数的作用是,清除定时器 TIMx 的中断 TIM_IT 标志位。TIM_ClearITPendingBit(TIM3, TIM_IT_Update );
阅读全文
0 0
- STM32初识——通用定时器配置(by woody)
- STM32自学——初识固件库(by Woody)
- STM32初识——中断初始化过程(by woody)
- STM32初识GPIO操作(by woody)
- stm32通用定时器配置
- STM32通用定时器配置
- STM32学习--定时器(通用定时器)1
- STM32学习--定时器(通用定时器)2
- STM32学习--定时器(通用定时器)3
- STM32定时器(TIM)之通用定时器
- stm32 定时器 通用定时器
- STM32的通用定时器的配置
- STM32的通用定时器的配置
- 嵌入式系统学习——STM32之通用定时器
- STM32——高级定时器、通用定时器、基本定时器的区别
- STM32——高级定时器、通用定时器、基本定时器的区别
- STM32——高级定时器、通用定时器、基本定时器的区别
- stm32 通用定时器
- Stuts2官网下载
- 初看Django
- 零碎知识点
- 工作日志模板
- POJ 1064
- STM32初识——通用定时器配置(by woody)
- 在UI界面中调用QProcess中的waitForStarted()造成ui不响应
- VS2013无法启动性能分析工具的一种情况
- 初级js数据类型和运算符、条件语句
- 物理题
- 7.16总结
- 【OpenStack源码分析之三】Nova-Compute启动流程分析
- 用for循环打菱形,今天刚学的。
- ACM练习题(day003)