STM32定时器中断

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

定时器就是一个计数器

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

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

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

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

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

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

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

自动重装载值:上限值

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

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

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

定时器中断:

1、开启RCC时钟

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

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

4、配置中断

5、配置NVIC

 

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

2、选择时基单元

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

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

3配置时基单元

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、使能定时器中断

使能中断后配置NVIC:

5、nvic配置

6、启动定时器

tim_cmd(timx,enable)

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

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

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-02-08 18:18:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-08 18:18:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-08 18:18:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-08 18:18:02       18 阅读

热门阅读

  1. 51单片机基础(C语言):定时器时钟

    2024-02-08 18:18:02       36 阅读
  2. 使用Spring AOP实现对外接口的日志自动打印

    2024-02-08 18:18:02       36 阅读
  3. Leetcode 198 打家劫舍

    2024-02-08 18:18:02       26 阅读
  4. 百粉福预告!!!

    2024-02-08 18:18:02       35 阅读
  5. vue项目拆分组件思想对比

    2024-02-08 18:18:02       40 阅读
  6. 《电子芯片的夜晚》

    2024-02-08 18:18:02       40 阅读
  7. STM32 微控制器应用领域

    2024-02-08 18:18:02       37 阅读
  8. AtCoder D - Synchronized Players

    2024-02-08 18:18:02       34 阅读
  9. c# DataTable 帮助类

    2024-02-08 18:18:02       32 阅读