自学STM32第七天——基本定时器

定时器的内容比较多,然后最近一周工作太忙,中断了学习,还好这个周末有时间了,总结一下今天所学的吧。

定时器简单的说实则就是用来延时的,之前用到的delay函数也是用来延时的,为什么还要学习定时器呢?由于delay延时函数是纯软件的延时,延时不精准,而且是让CPU死等,效率不高。要知道毫秒级别的延时,CPU能干多少事情啊,太浪费了。

定时器的原理

使用精准的时基,通过硬件的方式,实现定时功能;定时器核心就是计数器。

自学STM32第七天——基本定时器

STM32定时器分类

自学STM32第七天——基本定时器

基本定时器

基本定时器:没有输入输出通道,常用作时基(定时功能)。STM32-F1基本定时器——TIM6/TIM7。

主要特性:16位递增计数器(计数值:0~65535),16位预分频器(分频系数:1~65536),可用于触发DAC,在更新事件(计数器溢出)时,会产生中断/DMA请求。

STM32定时器的技术模式及溢出条件

自学STM32第七天——基本定时器

定时器溢出时间计算方法

自学STM32第七天——基本定时器

Tout 是定时器溢出时间

Ft 是定时器的时钟源频率

ARR 是自动重装载寄存器的值

PSC 是预分频器寄存器的值

基础定时器中断实验的配置步骤

自学STM32第七天——基本定时器

相关HAL库函数

自学STM32第七天——基本定时器

关键结构体

typedef struct 
{ 
    TIM_TypeDef *Instance;         /* 外设寄存器基地址 */ 
    TIM_Base_InitTypeDef Init;     /* 定时器初始化结构体*/
     ...
}TIM_HandleTypeDef;

  
  typedef struct 
{ 
    uint32_t Prescaler;             /* 预分频系数 */ 
    uint32_t CounterMode;           /* 计数模式 */ 
    uint32_t Period;                /* 自动重载值 ARR */ 
    uint32_t ClockDivision;         /* 时钟分频因子 */ 
    uint32_t RepetitionCounter;   	/* 重复计数器寄存器的值 */ 
    uint32_t AutoReloadPreload; 	/* 自动重载预装载使能 */
} TIM_Base_InitTypeDef;

  


以上是对第七天学习的了内容做了大致的总结,由于我个人选择的是STM32F1系列的开发进行学习,所总结的大部分内容仅限于F1系列使用。

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容