从零开始一起学stm32(七)---基本定时器

基本定时器

作用:定时1s;

 

1.时基单元:计数器+分频器+重装载值

分频器:对提供的外设时钟进行分频,得到想要的时钟脉冲

计数器:在分频得到的时钟脉冲下计数---累加计数器

重装载值:计数设定的最大值

72M==72000000 /7200=10K

时钟:72MHz---要得到时间基准是1s 

分频器:7200---得到的时钟脉冲10KHz

计数器:10K---10000次---计数器是累加计数器--从0开始计数,要计数到10000;

重装载值:计数器所设定的最大值--10000---当计数器计数到10K时,会产生溢出事件

计数器和分频器都是16位的,只能在0~65535之间;

更新事件:当产生更新事件时,寄存器中的数据重新装载!

溢出事件:计数计到最大值的时候;

更新中断:当产生了更新事件,使能了中断就产生更新中断

影子寄存器:实际操作所用的寄存器,我们需要在更新事件的时候,

把所需要的值存放到影子寄存器中

自动重装载寄存器:在更新事件时,把数值加载到影子寄存器

 

产生更新事件条件:

计数器中的数值一旦和自动重装载寄存器的影子寄存器中的数值相等,就会产生更新事件;如果设定更新中断,即会产生更新中断(执行中断服务函数);

并且,每次在产生更新中断时,会把自动重装载寄存器中的数值传递到影子寄存器中!

 

 

 

框图:

时钟--TIM6_CLK---72MHz

计数时钟--CK_CNT *ARR==产生更新事件的时间

循环定时1S,让LED闪烁!

步骤:

1.打开时钟---TIM6_CLK

2.配置基准时钟---分频值、重装载值、初始化基准时钟--产生更新事件

分频器:7200-1

重装载值:10000-1

3.配置中断通道--NVIC

4.使能中断---更新中断!

5.使能定时器--CEN

 

应用:---中断服务函数

产生1s的延时;--让LED灯精确延时1s闪烁!

 

 

作业:跑表—秒表

  1. 界面:每个人的手机上都有,做出界面
  2. 用一个按键去控制开始计数和暂停计数
  3. 用另外一个按键去清零

 

附加:多记几次,还可以查询,想存就存到flash中!

 

 

 

定时1s 

1.时钟:72MHz    RCC_APB1

2.分频:7200              PSC

3.重装载值:10K    ARR

4.设置EGR寄存器的UG位;

5.设置为更新中断并使能

6.设置更新中断优先级

7.使能计数器

8.中断服务函数:

         让LED灯亮灭

 

猜你喜欢

转载自blog.csdn.net/qq_38639426/article/details/88632928
今日推荐