STM32定时器中断

定时器可以对输入的时钟进行计数,并在计数值达到设定值时发出中断

定时器就是一个计数器

预分频器:对系统时钟进行分频得到定时器时钟频率

自动重装在值:计数多少个进入中断

基本定时器两个,tim6和7,挂载在apb1

通用定时器四个:tim2、3、4和5,挂载在apb1

高级定时器两个:tim1和8,挂载在apb2

STM32定时器中断_第1张图片STM32定时器中断_第2张图片

PSC预分频器,把系统时钟ck_psc进行分频得到ck_cnt时钟给cnt计数器

cnt计数器:计时增加或者减少

自动重装载值:上限值

基本定时器:内部时钟一般72mhz=72000000hz

通用定时器:内部时钟或者外部时钟都可以

STM32定时器中断_第3张图片

STM32定时器中断_第4张图片

溢出时间就是溢出频率的倒数

定时器中断:

STM32定时器中断_第5张图片

1、开启RCC时钟

2、选择时钟源:内部或者外部

3、配置时基单元PSC预分频器、CNT计数器、ARR自动重装载值

4、配置中断

5、配置NVIC

 

  1. 开始时钟,要使用APB1外设时钟

STM32定时器中断_第6张图片

2、选择时基单元

STM32定时器中断_第7张图片

其中Intelernalclockconfig配置tim2选择内部时钟,一般默认就是内部时钟可以不设置

Tim2使用内部时钟,可以不调用,默认内部时钟

3配置时基单元

STM32定时器中断_第8张图片

TIMCK_DIV1选择不分频

TIM_CounterMode_up向上计数

period:周期就是ARR自动重装器的值

prescaler:预分频器的值

repetitioncounter重复计数器的值

setcount和getcount获取计数器CNT的值

定时频率=ck_psc/(psc+1)/(arr+1)

时间频率的倒数

定时1s就是1hz,1s=0.001ms,1/1hz=1s

ck_psc=72000000hz

psc+1=7200

arr+1=1000

定时器频率=72000000/7200/10000=1

对72000000进行7200分频就是10000=10khz

在10的频率下计数10000个数,就是1s

4、使能定时器中断

STM32定时器中断_第9张图片使能中断后配置NVIC:

5、nvic配置

STM32定时器中断_第10张图片6、启动定时器

tim_cmd(timx,enable)

STM32定时器中断_第11张图片

配置完成后,1s进一次中断,可以再中断中进行想要的操作。

在开启中断前面调用一下,手动把中断标志位清除一下。

STM32定时器中断_第12张图片

你可能感兴趣的:(stm32,stm32,单片机,嵌入式硬件)