STM32 时钟管理

STM32F4系列中总共有17个定时器,1个系统定时器sysTick,其中2个高级控制定时器,10个通用定时器,2个基本定时器,2个看门狗定时器。

2个看门狗定时器:看门狗定时器使用的是STM32芯片内部的32KHz时钟源LSI RC,具有独立的2个定时器,属于CortexM内核的定时器;

1个系统定时器:systick是一个24位定时器,属于CM4内核的一个外设,这个定时器放在NVIC中,主要为了给操作系统提供一个硬件上的中断,时钟频率 为168MHz(内核时钟频率)。systick一次最多可以计数为2^24个及(计数值放在STK_LOAD寄存器中),其中当前 STK_VAL的值从STM_LOAD中加载的值向下减1,到0后系统定时器就产生一次中断,同时硬件自动加载STK_LOAD的值到STK_VAL中,进行新的一轮计数;

2个基本定时器:在STM32中TIM6 TIM7是基本定时器。主要功能:1.基本定时功能,当累加的脉冲数量达到预定值时,能够触发中断或者触发DMA请求,2.专门用于驱动DAC。

TIM6 TIM7完全独立,其中涉及的寄存器值为:计数器寄存器TIM_CNT,预分频寄存器TIM_PSC,自动装载寄存器TIM_ARR, 其中对应的是当前的计数值,定时器预分频设置(计数脉冲周期),TIM6/TIM7定时器周期。在CubeMX中还可设置重复计数次数,用它可轻松控制定时器输出中断次数

10个通用定时器:通用定时器具有PWM输出模式。通过设置寄存器值进行PWM输出:预分频寄存器TIM_PSC(输入时钟周期),自动装载寄存器TIM_ARR(定时器周期),计数器寄存器TIM_CNT(当前计数值),定时器比较寄存器TIMx_CRR(占空比设定值), 通过TIM_CNT计数值与TIMx_CRR比较,当0<TIM_CNT<TIMx_CRR的值时不断输出有效值否则TIMx_CRR<TIM_CNT<TIM_ARR时,输出为无效值;

                        


2个高级控制定时器:STM32中的高级控制定时器(Tim1)是由一个16位的自动装载计数器组成,它由一个可编程预分频器驱动。

用途在于:测量输入信号的脉冲宽度(输入捕获),或者产生输出波形(输出比较,PWM,嵌入死区时间的互补PWM等)。
使用定时器预分频器和RCC时钟控制预分频器,可以实现脉冲宽度和波形周期从几个微秒到几个毫秒的调节。
具体如下:6位上下,自动装载计数器。16位可编程预分频器,计数器时钟频率的分频率的分频系数为1-65535之间任意数值,4个独立通道:
  • 输入捕获
  • 输出比较
  • PWM生成
  • 单脉冲模式输出
  • 死区时间可编程的互补输出
  • 使用外部信号控制定时器和定时器互连的同步电路
  • 在指定数目的计数器周期之后更新定时器寄存器
  • 刹车输入信号可以将定时器输出信号置于复位状态或者一个已知状态
如下事件发生时产生中断:
  • 更新:计数器向上溢出或者向下溢出,计数器初始化。
  • 触发事件(计数器启动,停止,初始化)
  • 输入捕获
  • 输出比较
  • 刹车信号输入
所以,高级定时器的功能用途为:
  • 已知一个波形求另一个未知波形(信号长度和占空比)
  • 已知波形的信号长度和占空比产生一个相应的波形
  • 增量正交编码器驱动电机获得动态信息(速度、加速度)
  • 测量输入信号的脉冲宽度(输入捕获)
  • 产生输出波形(输出比较、PWM、嵌入死区时间的互补PWM等)....

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值