一、定时器简介
定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断。
定时时间 = 中断周期/间隔时间 = 1/每秒产生的中断数 = 触发中断的计数值(65536)/每秒计数次数(72M/65536)。
定时器的类型有:基本定时器、通用定时器、高级定时器
类型 | 编号 | 总线 | 功能 |
高级定时器 | TIM1,TIM8 | APB2 | 拥有通用定时器的所有功能,并有重复定时器、死区生成、互补输出、刹车输入等功能 |
通用定时器 | TIM2,TIM3,TIM4,TIM5 | APB1 | 基本定时器的全部功能,并有内外时钟源选择、输入捕获、输出比较、编码器接口、主从触发模式等功能 |
基本定时器 | TIM6,TIM7 | APB1 | 定时器中断、主模式触发DAC |
二、基本结构
时基单元:
ARR:寄存自动重装值,当CNT的计数值=自动重装值时,产生中断信号清零计数器。
CNT:上升沿或下降沿触发计数,到达65536时自动清零(没有设置自动重装值)。
PSC:对计数频率进行预分频,如0分频时输出=输入/1=72MHz,1分频时输出=输入/2=36MHz,2分频时输出=输入/3=24MHz。
三、计数模式
向上计数:CNT向上自增——到达重装值——清零并产生中断信号——CNT向上自增
向下计数:CNT从重装值自减——到达0——回到重装值并产生中断信号——CNT自减
中央对齐:自增——到重装值——产生中断信号——自减——到0——产生中断——自增
四、编程思路
使用基本定时器定时中断的步骤:
1.开启GPIO时钟和GPIO外设;
2.选择时基单元的时钟源,定时器定时中断选择内部时钟源;
3.配置时基单元,配置预分频器、自动重装器和计数器这三个寄存器;
4.配置输出中断控制,允许更新中断输出到NVIC;
5.配置NVIC,在NVIC 中打开定时器中断的通道,并分配一个优先级;
6.运行控制;
7.使能定时器,开中断;
8.写定时器中断服务程序。
五、cubemx配置定时器实现pc13闪烁
1.SYS-debug配置SW;
2.RCC配置外部晶振;
3.配置GPIO口,因为要用的是f103c8t6芯片内置LED所以选择PC13口,输出配置低电平,推挽输出,浮空输入;
4. 配置时钟,clock source(时钟源)选择内部时钟;
[定时时间=(PSC+1)*(ARR+1)/72M]
最后打开keil5文件运行即可。