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

news2024/11/24 14:36:41

引 言 

        在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即可

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1986432.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HAL库源码移植与使用之ADC

ADC类型: F1 F4 H4 H7用的都是逐次递进式 ADC电气特性: 该ADC只能承受3.6v以下电压 F1时钟不能超过14Mhz 流程顺序:先配置好1参考电压和芯片电源,再配置2电压输入通道并通过模拟多路开关选择通路到注入通道或规则通道&#xff0…

Spring AI -快速开发ChatGPT应用

Spring AI介绍 Spring AI是AI工程师的一个应用框架,它提供了一个友好的API和开发AI应用的抽象,旨在简化AI应用的开发工序,例如开发一款基于ChatGPT的对话、图片、音频等应用程序。 Spring AI已经集成了OpenAI的API,因此我们不需…

【虚拟化】KVM使用virt-manager部署及管理虚拟机

目录 一、KVM 概述 二、KVM工作原理 三、部署KVM 四、新建虚拟机步骤 4.1 创建存储池并创建存储卷 4.1.1 创建存储池 4.1.2 创建存储卷 4.3 创建ISO存储池 4.4 生成新的虚拟机 一、KVM 概述 KVM 是 Kernel-based Virtual Machine 的缩写,是一种用于虚拟化的…

LeetCode LCR147.最小栈

LeetCode LCR147.最小栈 思路🤔: 建立两个栈,一个栈正常入栈出栈,一个栈只用于出入最小数,当push值小于minst栈顶才入栈,当pop值等于minst栈顶才出栈。 代码🔎: class MinStack { pu…

如何通过JavaScript提升逻辑判断的可读性?

在前端开发过程中,我们经常会遇到需要根据不同条件执行不同逻辑的场景。对于初学者来说,这样的逻辑判断可能会导致代码冗长且难以维护。那么,如何才能写出既简洁又易读的代码呢?本文将带你逐步优化 JavaScript 中的条件判断&#…

重塑电商新风尚:优选免单策略的深度解析

在当今电商领域,一种创新的销售策略——优选免单模式正悄然兴起。这一模式巧妙融合了价格策略、激励机制与社交互动,旨在激发消费者的购买潜能,引领销售业绩的飞跃式增长。 一、合规创新,重塑激励机制 我们秉承合法合规的原则&am…

API-EXPLORER项目开发笔记(一)

文章目录 前言一、我为什么要做这个项目?二、项目简单介绍三、项目技术栈总结 前言 最近接触到了接口平台这个东西,非常感兴趣,于是就想自己也动手做一个具备核心功能的接口平台,本篇文章主要介绍了做这个项目的初衷以及简单介绍…

DispatcherServlet 源码分析

一.DispatcherServlet 源码分析 本文仅了解源码内容即可。 1.观察我们的服务启动⽇志: 当Tomcat启动之后, 有⼀个核⼼的类DispatcherServlet, 它来控制程序的执⾏顺序.所有请求都会先进到DispatcherServlet,执⾏doDispatch 调度⽅法. 如果有拦截器, 会先执⾏拦截器…

自动获取ip地址什么意思?电脑ip地址怎么设置自动获取

在当今数字化时代,网络连接已成为我们日常生活和工作中不可或缺的一部分。然而,对于非技术用户而言,复杂的网络配置常常令人望而生畏。幸运的是,自动获取IP地址(Dynamic Host Configuration Protocol, DHCP&#xff09…

小白入门机器学习被劝退的4大原因,你中了哪一个?

hi,喵老师🐱来啦。 很多小白朋友,尤其是准研究生、文科生,刚开始接触机器学习之后常常在短时间内就「入门即放弃」了。 其实背后主要的原因无非那么几个,今天喵老师就给大家盘一盘,看看你是哪一种&#x1…

SemanticKernel/C#:使用Ollama中的对话模型与嵌入模型用于本地离线场景

前言 上一篇文章介绍了使用SemanticKernel/C#的RAG简易实践,在上篇文章中我使用的是兼容OpenAI格式的在线API,但实际上会有很多本地离线的场景。今天跟大家介绍一下在SemanticKernel/C#中如何使用Ollama中的对话模型与嵌入模型用于本地离线场景。 开始…

redis面试(七)初识lua加锁脚本

redisson redisson如何来进行redis分布式锁实现的源码&#xff0c;基于redis实现各种各样的分布式锁的原理 https://redisson.org/ 这是官网 https://github.com/redisson/redisson/wiki/Table-of-Content 这是官方文档 开始 demo 建一个普通的工程在pom.xml里引入依赖 <…

CFA CAIA最新道德手册第14版+道德案例手册(2024年最新原创写的内容,上一版还是10年前14年写的)

纯原创CFA CAIA最新道德手册第14版道德案例手册&#xff08;2024年最新原创写的内容&#xff0c;上一版还是10年前14年写的&#xff09; standards 是CFA三个级别和CAIA两个级别重中之重&#xff0c;2014年的版本太过老旧&#xff0c;现在协会发布了新考纲&#xff0c;自己原创…

LVS(Linux virual server)

目录 一.集群和分布式简介 1.系统性能扩展方式 2.集群Cluster 3.分布式 4.集群和分布式 二.lvs(Linux virtual server) 运行原理 1.lvs介绍 2.lvs集群体系结构 3.LVS概念 4.lvs集群的类型 nat模式 nat模式数据逻辑 lvs-nat模式原理及部署方法 实验环境部署 实验流程…

Proxy302:你的一站式代理IP解决方案

一、Proxy302介绍 Proxy302&#xff0c;一款优秀的全球代理IP平台&#xff0c;以按需充值的灵活方式、覆盖广泛的代理类型及直观高效的用户上手体验与界面设计&#xff0c;赢得了市场广泛认可。Proxy302亮点不仅在于其功能的强大&#xff0c;更在于其对用户体验的深刻理解和不…

代发考生战报:7月26号北京考试通过 HCIP-Cloud云计算 H13-527

代发考生战报&#xff1a;7月26号北京考试通过 HCIP-Cloud云计算 H13-527 &#xff0c;考试遇到4个新题&#xff0c;剩下都是题库里的&#xff0c;但是没打高分&#xff0c;可能题库里的答案有问题&#xff0c;但是能考过就行&#xff0c;挺满足的&#xff0c;就是把题库都背会…

IT知识库文档查找与学习:rfc文档

RFC文档查找 RFC&#xff08;Request for Comments&#xff09;文档是互联网工程任务组&#xff08;Internet Engineering Task Force, IETF&#xff09;发布的一系列备忘录&#xff0c;旨在提供互联网技术和应用的标准、规范、指南和最佳实践。RFC文档是互联网发展的基石&…

小怡分享之String类的小练习

前言&#xff1a; &#x1f308;✨之前小怡给大家分享了String类&#xff0c;今天小怡给大家分享String类的一些小习题。 1.第一个只出现一次的字符 思路&#xff1a; 遍历字符串&#xff0c;把对应字符位置的下标开始计数&#xff0c;count[字符-‘a’]&#xff1b;再次遍历…

数模——灰色关联分析算法

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 文章目录 前言 一、基本概念了解 1.什么是灰色系统&#xff1f; 2.什么是关联分析&#xff1f; 二、模型原理 三、建模过程 1.找母序列&#xff08;参考序列&am…

力扣面试150 逆波兰表达式求值 栈 模拟栈

Problem: 150. 逆波兰表达式求值 &#x1f468;‍&#x1f3eb; 参考题解 class Solution {//纯数组模拟栈实现(推荐) 3 ms 36 MBpublic static int evalRPN(String[] tokens) {int[] numStack new int[tokens.length / 2 1];int index 0;for (String s : tokens) {swit…