学习STM32(4)--STM32单片机定时器的应用

引 言 

        在STM32单片机的开发中,定时器是一个非常重要的模块,可以用于实现精准的时间控制和周期性的任务。在STM32F103系列单片机中,常见的定时器包括基本定时器、通用定时器和高级定时器。

实验目的

1.掌握STM32F103的基本定时器的使用

2.熟悉STM32F103的通用定时器的使用

3.熟悉STM32F103的高级定时器的使用

实验内容

3.1定时器概念

定时器就是计数器,是 STM32 结构最复杂,但功能最强大的外设。

定时器跟中断紧密关联,定时器对输入的时钟进行计数,在计数值达到预设值时,触发一次中断。

同时定时器跟时钟相关,时钟跟频率有关,STM32 系统时钟频率为 72MHz。

频率和周期的关系:T=1/F。频率 F=72MHz , 对应的周期就是 T=1/F=1/72M.  如果计数 72 次,则时长 t=1/72M*72 为 1us。

3.2分类

        STM32 单片机定时器根据复杂度和应用场景分为了高级定时器、通用定时器、基本定时器三种类型。

                                                                图1 定时器分类

3.2.1基本定时器

1). STM32F1 系列的基本定时器为 TIM6 与 TIM7

2). 基本定时器为 16 位计数器,只能向上计数

3). 基本定时器没有外部 GPIO,是内部资源,只能用于定时

                                                        图2 基本定时器框图 

        上图为基本定时器的结构图,时基单元主要由预分频器、计数器和自动重装载寄存器构成。该模块的时钟源为系统内部时钟 CK_INT(72MHz),直接作为预分频器(PSC)的时钟源(CK_PSC),经过预分频后输入至计数器(CNT)对预分频后的时钟进行计数,计时时钟每来一个上升沿,计数器+1,直到达到最大计数值,即 65535。最大值后再增加则会回到 0,从头开始计数。自动重装寄存器存储了CNT 计数器需要计数的值,当计数器计数值等于自动重装值,则会产生中断信号,并重置计数器。

3.3 时基

        定时器最主要的部分为时基部分,包括了预分频器,计数器,自动重装载寄存器。 时基,不仅基本定时器有,通用定时器和高级定时器也有。

3.4 定时时间的计算

牢记两个公式:

T=(ARR+1)*(PSC+1)/72M

占空比=CCR/(ARR+1)

3.5定时器初始化结构体详解

                                                图3 定时器基本初始化结构体 

3.6基本定时器关键程序

                                                        图4 定时中断基本结构 

使用基本定时器定时中断的步骤:

1.开启 GPIO 时钟和 GPIO 外设 。

2.选择时基单元的时钟源。定时器定时中断选择内部时钟源。

3.配置时基单元。配置预分频器,自动重装器和计数器这三个寄存器。

4.配置输出中断控制,允许更新中断输出到 NVIC。

5.配置 NVIC,在 NVIC 中打开定时器中断的通道,并分配一个优先级。

6.使能定时器,开中断。

7.写定时器中断服务程序。

3.7通用定时器初始化,用于生成PWM信号

                                        图5 通用定时器PI福出用到的GPI0初始化 

                                                        图6 初始化顺序

                                         图7 通用定时器PWM出初始化

                                                                图8 .h文件 

3.8高级定时器初始化 ,用户捕获PWM信号

                                                        图9 初始化顺序

                                图10 高级定时器PWM输入用到的GPIO初始化

                                图11 高级控制定时器 TIMx,x[1,8]中断优先级配置

                        图12 高级定时器PWM输入初始化和用到的GPI0初始化

4 深入分析 

思考一

        深入理解定时器程序,将例程“32-TIM-基本定时器”程序中变量名time修改为sztu(或者开发者另定义的名字),找到time定义的地方,并修改代码并运行程序。改变程序使当前定时器的速度变为当前的两倍,并运行程序。

 

 

思考二(PWM输入捕获)

        连接示波器,打开野火串口助手,将例程“33-TIM一高级定时器”的“3-TIM一高级定时器-PWM输入捕获”代码调整,修改脉冲信号占空比为5%,频率为10KHz.

脉冲信号占空比为5% 频率为10KHz:按照下面的代码设计数值可以得到

        通过野火串口助手查看,是否脉冲信号占空比为5%,频率为10KHz

2.2、通过示波器查看开发板的引脚PA6波形,是否跟野火串口助手保持一致

• 用一根杜邦线连接开发板的 PA6 和 PA8即可

• 示波器地线与开发板共地连接

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值