stm32F4xxTim定时器的使用

引言

在学习中接触到了Tim计时器的使用,过程中遇到了问题,为了方便以后的查找在这里记录下来。

开发板时钟配置

在这里插入图片描述
上图为开发板的时钟图,在选取时钟源一般选取外部时钟HSE,这里记作T0,对于时钟初始化一般配置下述数值
在这里插入图片描述
当T0=8MHz时,M=8(一般会将相处之后频率降为1MHz)对应电路上的M,相除之后时钟变为1MHz,N为升频之后变为360MHz,经p分频变为180MHz,即为PLLCLK时钟频率,之后的处理如下
在这里插入图片描述
选取PLLCLK作为时钟源,然后AHB一分频,APB4分频,APB2进行2分频,一般到这里分频到外设就结束了,但是对于tim计时器,当apb进行一分频时保持不变,不是一分频就在原基础上乘2.到这里分频就结束了,接下来可以对tim进行操作了.

TIM计时器寄存器介绍

对于tim首先要了解主要寄存器代表的意义

1。状态寄存器中的UIF,表示计数器完成一次计时周期,产生中断。
在这里插入图片描述
2.CNT寄存器显示计时的个数,当计时个数达到设定的period时会产生中断。
在这里插入图片描述
3.psc代表分频,是将APB传来的时钟再次分频,达到计时器的需要。
在这里插入图片描述
4.ARR寄存器就是配置的period,表示计时器的一次计时周期
在这里插入图片描述
5.ccr寄存器是用来输出pwm波型的,数据介于0-period之间,表示方波的占空比。
在这里插入图片描述

TIM计时器HAL库中参数配置

1.下图是关于TIM初始化的结构体,其中包括TIM句柄,基本初始化TIM_Base_InitTypeDef以及相关回调函数。
在这里插入图片描述2.基本初始化结构体配置
在这里插入图片描述
句柄instance即为所选取的TIM计时器,这里选择的TIMX=TIM3.
period选择10000,即为计时器运行10000次为一个计时周期。
prescaler分频获取到10KHz作为计时器时钟,一个计数周期为period*1/prescaler。
这里的SystemCoreClock /2数值上与APB1转换之后的时钟一致。

3.配置完成之后就可以对中断函数进行设置,因为hal库封装比较好,这里只要写回调函数就可以了
一般是在stm32f4xx_it.c中对中断函数进行配置,在main.h中定义好中断函数名,因为中断已经是厂家写好的,因此名字一定要查手册定义正确。
在这里插入图片描述
对于中断处理函数HAL_TIM_IRQHandler,转到定义处,可以看到当接收到TIM Update event就会调用PeriodElapsedCallback(htim)函数
在这里插入图片描述
因为本身回调函数是__weak弱定义,只要在main.c函数中重写就可以使得回调函数调用它
在这里插入图片描述
这里的回调函数定时LED4灯闪亮。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值