stm32F4xxTim定时器的使用

引言

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

开发板时钟配置

stm32F4xxTim定时器的使用_第1张图片
上图为开发板的时钟图,在选取时钟源一般选取外部时钟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,表示计数器完成一次计时周期,产生中断。
stm32F4xxTim定时器的使用_第2张图片
2.CNT寄存器显示计时的个数,当计时个数达到设定的period时会产生中断。
stm32F4xxTim定时器的使用_第3张图片
3.psc代表分频,是将APB传来的时钟再次分频,达到计时器的需要。
stm32F4xxTim定时器的使用_第4张图片
4.ARR寄存器就是配置的period,表示计时器的一次计时周期
stm32F4xxTim定时器的使用_第5张图片
5.ccr寄存器是用来输出pwm波型的,数据介于0-period之间,表示方波的占空比。
在这里插入图片描述

TIM计时器HAL库中参数配置

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

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

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