STM32初识——通用定时器配置(by woody)

标签: stm32
243人阅读 评论(0) 收藏 举报
通用定时器的益处时间
 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 );

























查看评论

通用Mapper视频教程

通用Mapper是一款非常好用的MyBatis插件,它能够帮助我们自动生成常用增删改查操作的SQL语句,克服MyBatis开发过程中需要大量编写SQL语句的弊端。由于通用Mapper是根据实体类的属性自动生成对应的SQL语句,所以可以说通用Mapper插件是对MyBatis在ORM方面不足的重要补充。
  • 2018年03月28日 16:38

STM32的通用定时器的配置

STM32的通用定时器为:TIM2、TIM3、TIM4和TIM5       在使用通用定时器时利用库函数直接设置定时器如下: 1.  使能定时器TIM_X的时钟:(X=2、3、4、5)       ...
  • jinxifengjieai
  • jinxifengjieai
  • 2014-03-13 19:26:34
  • 1542

stm32通用定时器配置

STM32的定时器是个强大的模块,定时器使用的频率也是很高的,定时器可以做一些基本的定时,还可以做PWM输出或者输入捕获功能。 时钟源问题: 名为TIMx的有八个,其中TIM1和TIM8挂...
  • Aniu127
  • Aniu127
  • 2014-10-08 15:57:37
  • 2465

STM32之通用定时器输出比较模式

 #include "stm32f10x.h" /* RCC时钟配置 */ void RCC_config() {  ErrorStatus HSEStartUpStatus;  /...
  • lushoumin
  • lushoumin
  • 2018-01-05 23:07:57
  • 196

STM32学习笔记:通用定时器输出PWM

脉冲宽度调制,简称PWM(Pulse Width Modulation)是利用微处理器的数字输出 对模拟电路进行控制的一种非常有效的控制技术,常用于控制Led灯的亮度、电机转速等。 STM32 的定时...
  • summer_o_o
  • summer_o_o
  • 2014-03-18 19:31:11
  • 10110

STM32之通用定时器计数器模式

#include "stm32f10x.h" /* RCC时钟配置 */ void RCC_config() {  ErrorStatus HSEStartUpStatus;  /* RC...
  • lushoumin
  • lushoumin
  • 2018-01-04 22:23:47
  • 536

stm32通用定时器进入不了中断

今天犯了一个很低级的错误,就是我调了一天的定时器中断就是进不去,结果最终发现自己有一个非常大的失误,现在记录如下: TIM_Configuration(500); RCC_Configuratio...
  • zhanghuaichao
  • zhanghuaichao
  • 2015-12-10 15:45:32
  • 1720

STM32 通用定时器的一些概念解析

STM32一共有8个定时器,其中定TIM1和TIM8为高级控制定时器,除了具有通用定时器的功能外,还兼具控制功能,不仅能够输出PWM还可以采集编码器,驱动各种电机的功能。而基本定时器TIM6和TIM7...
  • u012351051
  • u012351051
  • 2016-05-24 17:17:02
  • 1203

STM32通用定时器库函数设置

通用定时器 STM32的通用定时器为:TIM2、TIM3、TIM4和TIM5 在使用通用定时器时利用库函数直接设置定时器如下: 1.使能定时器TIM_X的时钟:(X=2、3、4、5) RCC_APB1...
  • kobesdu
  • kobesdu
  • 2014-08-21 15:06:31
  • 7633

stm32 基本定时器最简单定时配置

stm32 定时器 配置
  • alfredseng
  • alfredseng
  • 2016-11-30 17:04:10
  • 4007
    个人资料
    等级:
    访问量: 1672
    积分: 85
    排名: 151万+
    文章分类
    文章存档