STM32F4_TIM基本延时(计数原理)

发布者:真情相伴最新更新时间:2017-02-05 来源: eefocus关键字:STM32F4  TIM  基本延时  计数原理 手机看文章 扫描二维码
随时随地手机看文章

Ⅰ、概述

STM32的TIM定时器分为三类:基本定时器、通用定时器和高级定时器。从分类来看就知道STM32的定时器功能是非常强大的,但是,功能强大了,软件配置定时器就相对复杂多了。很多初学者甚至工作了一段时间的人都不知道STM32最基本的计数原理。

虽然STM32定时器功能强大,也分了三类,但他们最基本的计数部分原理都是一样的,也就是我们常常使用的延时(或定时)多少us、ms等。

接下来我会讲述关于STM32最基本的计数原理,详细讲述如何做到(配置)计数1us的延时,并提供实例代码供大家参考学习。

 

关于本文的更多详情请往下看。

 

Ⅱ、实例工程下载

笔者针对于初学者提供的例程都是去掉了许多不必要的功能,精简了官方的代码,对初学者一看就明白,以简单明了的工程供大家学习。

笔者提供的实例工程都是在板子上经过多次测试并没有问题才上传至360云盘,欢迎下载测试、参照学习。

 

提供下载的软件工程是STM32F417的,但F4其他型号也适用(适用F4其他型号: 关注微信,回复“修改型号”)。

 

STM32F4_TIM基本延时(1us延时基准)实例:

https://yunpan.cn/cB3hC8amiyq2C  访问密码 5224

 

感兴趣的朋友研究下面实例“定时中断”

STM32F4_TIM基本定时(1ms定时中断)实例:

https://yunpan.cn/cB3CyILIXeaFc  访问密码 0ad9

 

STM32F4资料:

https://yunpan.cn/cR2pxqF5x2d9c  访问密码 53e7

 

 

Ⅲ、TIM计数原理描述

定时器可以简单的理解为:由计数时钟(系统时钟或外部时钟)一个一个计数,直到计数至我们设定的值,这个时候产生一个事件,告诉我们计数到了。

上面简单的描述懂了之后就是需要理解它们每一步骤的细节,比如:提供的时钟频率是多少、分频是多少等。

 

基本TIM框图:

 

通用TIM框图:

 

上面两图截取“STM32F4x5、x7参考手册”建议下载手册参看。

 

从上面两个TIM框图可以看得出来,通用TIM是包含了基本TIM的功能。也可以说基本定时器是定时器最基本的计数部分,我们该文主要就是围绕这部分来讲述,后续会其他更通用、高级的功能给大家讲述。

 

重要的几个参数(信息):

1.CK_INT时钟:一般由RCC提供(注意:其频率大部分都是系统时钟的一半,在程序中有一个除2的部分,详情请见RCC部分)。

 

2.CK_PSC时钟预分频:也就是对CK_INT分频。这个值范围:0 - 65535范围都可以,最好能被CK_INT除尽,这样才方便计算时钟。

 

3.ARR重载值:这个值相当于是我们设定需要计数的值,也就是说计数到这个设定值就会产生一个事件。

 

综上: CK_INT和CK_PSC确定计数的时钟频率(1秒计多少数), ARR是设定的计数值。最基本的延时(或定时)就由以上三个参数计算而来。

 

Ⅳ、基本延时源代码分析

笔者以F4标准外设库(同时也建议初学者使用官方的标准外设库)为建立的工程,主要以库的方式来讲述。

考虑大家到以后肯定使用定时器更多功能,笔者提供的软件工程实例是通用定时TIM4。其实,将工程中TIM4改为TIM6(基本定时器)一样可以运行的。

 

1.RCC时钟

该函数位于bsp.c文件下面;

 

重点注意:

A.外设RCC时钟的配置要在其外设初始化的前面;

 

B.匹配对应时钟。

比如:RCC_APB2外设不要配置在RCC_APB1时钟里面

【如:RCC_APB1PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);这样能编译通过,但这是错误的代码】

 

2.TIM配置

该函数位于timer.c文件下面;

该函数就是配置定时器基本计数的函数;

 

配置为1us的基准:

A.1秒钟计数42M次个脉冲

“TIM基本延时”实例工程中:CK_INT = 84M时钟(SystemCoreClock/2)

 

“TIM基本延时”实例工程:CK_PSC = 84M/42M - 1 = 1  即2分频;

至于为什么要减1?

初学者可以理解为“CK_PSC = 0”时不分频(即1分频);“CK_PSC = 1”时为2分频。

 

#define TIM4_COUNTER_CLOCK        42000000

#define TIM4_PRESCALER_VALUE      (SystemCoreClock/2/TIM4_COUNTER_CLOCK - 1)

 

B.1秒钟计数1M次个周期

#define TIM4_PERIOD_TIMING    (42 - 1)

即ARR重载值;

由上面“A”得出“1秒钟计数42M次个脉冲”,则记满42个脉冲数需要1us(也就是1秒钟计数1M次个周期)。

 

3.us(微妙)延时函数

该函数位于timer.c文件下面;

上图一个while循环就是1us的时间;上面的一些工作就是配置定时器工作一个周期的时间为1us,这里延时N微妙就应该很好理解了; 其实还有一个函数延时N毫秒,很简单,不描述。

 

Ⅴ、定时中断(拓展)

“定时中断”功能是基于前面基础上进行了一个拓展,增加了计数周期就中断的功能。

笔者单独提供了一个实例:定时1ms中断一次(两工程区别在于时间不是1us, 1us中断一次时间太短);

在软件上主要就是增加开启TIM中断、配置NVIC、添加TIM中断函数;

1.使能TIM中断

该函数位于(定时中断工程)timer.c文件下面;

功能:使能TIM中断。

 

2.配置NVIC中断控制器

该函数位于(定时中断工程)bsp.c文件下面;

功能:配置TIM中断控制。

 

3.中断函数

该函数位于(定时中断工程)stm32f4xx_it.c文件下面;

功能:定时周期到进入该中断函数。其中有一个计数减,相当于我们延时工程中while延时N的值;

 

 

Ⅵ、说明

关于笔者提供的软件工程实例,可关注微信,在会话框回复“关于工程”,有关于工程结构描述、型号修改等讲述。

 

以上总结仅供参考,若有不对之处,敬请谅解。


关键字:STM32F4  TIM  基本延时  计数原理 引用地址:STM32F4_TIM基本延时(计数原理)

上一篇:STM32F4_TIM输出PWM波形(可调频率、占空比)
下一篇:Stm32 Bootloader整理

推荐阅读最新更新时间:2024-03-16 15:32

深入理解STM32之储存器和总线架构2(基于STM32F411)
本文转载自http://blog.csdn.net/charmingsun/article/details/52295018 官方文档: STM32F411 参考手册 STM32F411 数据手册 Cortex™-M4F 编程手册 STM32 微控制器系统存储器自举模式应用笔记 STM32™ 自举程序中使用的 USART 协议 ARM Cortex™-M Programming Guide to Memory Barrier Instructions 三、Flash接口中的自适应实时存储器加速器 有关 Cortex-M4 处理器三级指令流水线知识的补充: 指令流水线以及相关名词的定义: 指令流水线是为提高处理器
[单片机]
STM32CUBEMX开发GD32F303(13)----定时器TIM捕获PWM测量频率与占空比
概述 本章 STM32 CUBEMX配置STM32F103,并且在 GD32 F303中进行开发,同时通过开发板内进行验证。 本章STM32CUBEMX配置STM32F103输出PWM,同时使用 TI M测量PWM频率和正占空比。 最近在弄ST和GD的课程 。 生成例程 这里准备了自己绘制的开发板进行验证。 查看原理图,PA9和PA10设置为开发板的串口。 配置串口 查看原理图,PB0设置为PWM输出管脚,PB10设置为定时器输入捕获管脚。 配置时钟树 配置时钟为64M。 配置PWM 配置定时器1输出pwm的频率为1K。 配置输入捕获 开启中断 keil配置 microlib 进行了高度优化以
[单片机]
STM32CUBEMX开发GD32F303(13)----定时器<font color='red'>TIM</font>捕获PWM测量频率与占空比
STM32F4 RTC
F4的RTC与F1的RTC有很大的差别。F1系列的RTC就是一个简单的计数器,要想获得时间,得自己计算。F4的就不需要这么麻烦了,读出来的直接就是时间。 【主要特点】 STM32F4的RTC是一个独立的BCD/时钟计数器。RTC提供时间日历和两路闹钟中断,一个具有中断能力的周期可编程的环形标志。他哦南方是RTC还具有管理低功耗模式的唤醒单元。 RTC的秒、分、小时、日期、月、年以BCD码的形式存储在一个32位寄存器中。 每月的天数自动处理,同时还具有日间省电功能。可编程的闹钟信息存储在另一个寄存器中。 数字标定(校准)功能,可用于处理晶振的偏差 上电时,RTC寄存器被保护以防止误写入数据。 不论MCU处于那种工作模式,只要供电电压
[单片机]
STM32F407ZGT6芯片SysTick定时器模块介绍
本文参考资料《ARM Cortex™-M4F技术参考手册》-4.5章节SysTick Timer(STK),和4.48章节SHPRx,其中STK这个章节有SysTick的简介和寄存器的详细描述。因为SysTick是属于CM4内核的外设,有关寄存器的定义和部分库函数都在core_cm4.h这个头文件中实现。所以学习SysTick的时候可以参考这两个资料,一个是文档,一个是源码。 SysTick简介 SysTick——系统定时器是属于CM4内核中的一个外设,内嵌在NVIC中。系统定时器是一个24bit的向下递减的计数器,计数器每计数一次的时间为1/SYSCLK,一般我们设置系统时钟SYSCLK等于168M。当重装载数值寄存器的值递
[单片机]
<font color='red'>STM32F4</font>07ZGT6芯片SysTick定时器模块介绍
STM32F407-获取GPIO电平状态
判断STM32 GPIO输入口的输入状态(高电平或低电平) 以PE2和PE4为例: ① 判断单个端口是否为高电平: if(GPIOE- IDR& GPIO_IDR_IDR2) { 函数体; } 当PE2端口为高电平时,if条件为真;当PE2口为低电平时,if条件为假; ② 判断单个端口是否为低电平: if((~GPIOE- IDR)& GPIO_IDR_IDR2) { 函数体; } 分析:首先通过 &GPIO_IDR_IDR屏蔽掉PE2之外的其他PE口。当PE2为高电平时,GPIO-〉IDR的bit2为‘1’,取反后为‘0’,因此条件为假;当PE2为低电平时,GPIO-〉IDR的
[单片机]
STM32开发笔记59: STM32F407的启动模式
单片机型号:STM32F407VGT6 本文介绍STM32F407的启动模式,也称为BOOT模式。STM32F407可以有3种方式进行启动,见下表,我们一般采用从FLASH进行程序启动的方式,所以,对于一般的电路图只需将BOOT0引脚下拉到地,即可满足设计要求,而不需考虑BOOT1引脚。 不过,STM32内部还隐含着另外一种启动方式,如下列文字所述。其表述的思想是STM32在出厂时已内嵌bootloader程序,可以从USART1、USART3、CAN2和USB OTG FS进行启动。 这种启动模式,需将BOOT0设置为1,BOOT1设置为0。所以如果希望应用STM32的Bootloader功能,则需将BO
[单片机]
STM32开发笔记59: <font color='red'>STM32F4</font>07的启动模式
STM32F1和STM32F4 区别
F1采用Crotex M3内核,F4采用Crotex M4内核。 F1最高主频 72MHz, F4最高主频168MHz。 F4具有单精度浮点运算单元,F1没有浮点运算单元。 F4的具备增强的DSP指令集。F4的执行16位DSP指令的时间只有F1的30%~70%。F4执行32位DSP指令 的时间只有F1的25%~60%。 F1内部SRAM最大64K字节, F4内部SRAM有192K字节(112K+64K+16K)。 F4有备份域SRAM(通过Vbat供电保持数据),F1没有备份域SRAM。 F4从内部SRAM和外部FSMC存储器执行程序的速度比F1快很多。F1的指令总线I-Bus只接到Flash上,从SRAM和FSMC取
[单片机]
STM32的时钟系统学习笔记(基于STM32F407)
RCC(Reset clock Control 复位时钟控制器) 时钟源(时钟生成) 常规:外部晶振、芯片内部振荡器、锁相环(PLL) PS:(Phase Locked Loop): 为锁相回路或锁相环 其他:以太网、USB OTG FS、或其他外设的时钟源 STM32F407时钟树关系图(重点理解经常用到) 时钟总线 RCC通过多个预分频器配置时钟总线 PS:预分频器 (Prescaler-PSC)用来将定时器时钟源进行分频输出 总线类型:AHB、低速APB1、高速APB2 PS: AHB(Advanced High Performance Bus),高级高性能总线 APB(Advanc
[单片机]
STM32的时钟系统学习笔记(基于<font color='red'>STM32F4</font>07)
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved