STM32进阶 定时器3 通用定时器 案例1:LED呼吸灯——PWM脉冲

功能

它有基本定时器所有功能,还增加以下功能

TIM2、TIM3、TIM4、TIM5

多种时钟源:

外部时钟源模式1:

每个定时器有四个输入通道

只有通道1和通道2的信号可以作为时钟信号源

通道1 和通道2 的信号经过输入滤液和边缘检测器

外部时钟源模式2:

可以向上计数也可以向下计数还可以两者都用(中央对其模式)

输入捕获

输出比较

PWM生成

支持针对定位的增量(正交)编码器和霍尔传感器电路。

框图

通用定时器相关寄存器

捕获比较寄存器TIMx_CCMR1(有四个):输入捕获,输出比较

输出比较8种模式:三位来控制

冻结

强制输出高电平:条件计数器=比较寄存器

强制输出低电平:条件计数器=比较寄存器

输出翻转:等于60 会将电平翻转

强制输出高电平:无条件

强制输出低电平:无条件

PWM模式1:CNT<CCR 输出低电平

CNT>=CCR 输出高电平

PWM模式2:CNT>CCR 输出低电平

CNT<=CCR 输出高电平

OC1M和OC2M是相同的。

先配置CC2S位,配置输入还是输出。

CCM2

剩下两个通道

CCEN

使能

CCR1

比较的值

计数器寄存器TIM_CNT

计数器的值

CR1控制寄存器

配置计数方式,中央

案例1:LED呼吸灯——PWM脉冲

需求

使用通用定时器的输出比较功能

(输出比较功能)专门输出PWM脉冲

输出占空比可调的PWM波形,作用到二极管,使二极管(LED2)呈现呼吸灯的效果。

PWM波:

PWM(Puls-width modulation)脉冲宽度调制,不停地修改高电平的宽度。一般用于控制点击、LED亮度调节等应用。

被控制的电路必须要有一定的“惯性”。

所谓惯性时指,比如LED即使断电了,也不会立即熄灭,点击断定了也不会立即停止。

三个参数:周期、频率、占空比( 正脉冲的持续时间与脉冲总周期的比值。)

输出比较原理:

比较寄存器的值和计数器的进行大小比较

根据比较结果(> = <)不同,产生不同的输出:高电平或者低电平。

比较寄存器中的值不会变,计数器的值会变大或者变小

tim5.c
#include "tim5.h"void TIM5_Init(void){//1. GPIO PA1的配置(是默认复用功能不需要AFIO1)//1.1 放时钟RCC->APB2ENR |= RCC_APB2ENR_IOPAEN;//复用推挽GPIOA->CRL |= GPIO_CRL_CNF1_1;GPIOA->CRL &= ~GPIO_CRL_CNF1_0;GPIOA->CRL |= GPIO_CRL_MODE1;//2.定时器 tim5 的配置//2.1 先放时钟RCC->APB1ENR |= RCC_APB1ENR_TIM5EN;//三大块// 控制器(时钟源)配置 默认不改就是就是72MHz//时基单元//输入和输出通道//2.2 时基单元//2.2.1 计数方向(默认像上,其实可以不用配置)TIM5->CR1 |= TIM_CR1_DIR;//2.2.2 预分频 TIM5->PSC = 7200 - 1;//2.2.3 自动重装载TIM5->ARR = 100 - 1;//3 输入输出通道//3.1 让通道2使用输出模式(默认就是输出,可以不用配置)TIM5->CCMR1 &= ~TIM_CCMR1_CC2S;//3.2 配置比较寄存器 具体的比较模式 (8选1 我们选择PWM模式1)TIM5->CCMR1 |= (TIM_CCMR1_OC2M_1|TIM_CCMR1_OC2M_2);TIM5->CCMR1 &= ~TIM_CCMR1_OC2M_0;//3.3 低电平有效,为了让CCR的值 能很好地表示亮度TIM5->CCER |= TIM_CCER_CC2P;
}void TIM5_PWMStart(void){//计数器是使能TIM5->CR1 |= TIM_CR1_CEN;//通道2使能TIM5->CCER |= TIM_CCER_CC2E;
}void TIM5_PWMStop(void){//关闭计数器使能TIM5->CR1 &= ~TIM_CR1_CEN;//关闭通道2使能TIM5->CCER &= ~TIM_CCER_CC2E;
}void TIM5_SetDuty(uint16_t duty){TIM5->CCR2 = duty;
}
tim5.h
#ifndef __TIM5_H__
#define __TIM5_H__#include "stm32f10x.h"void TIM5_Init(void);void TIM5_PWMStart(void);void TIM5_PWMStop(void);void TIM5_SetDuty(uint16_t duty);#endif /* __TIM5_H__ */
main.c
#include "usart1.h"
#include "string.h"
#include <stdio.h>
#include "m24c02.h"
#include "i2c.h"
#include "led.h"
#include "systick.h"
#include "tim6.h"
#include "tim5.h"typedef enum {LIGHT,DARK}LED_DIRCT;int main(void)
{TIM5_Init();TIM5_PWMStart();LED_DIRCT direct = LIGHT;while (1){if (direct ==  LIGHT){for (uint8_t i = 0; i < 100; i++){TIM5_SetDuty(i);Delay_ms(10);}direct = DARK;}else if(direct == DARK){for (uint8_t i = 0; i < 100; i++){TIM5_SetDuty(99-i);Delay_ms(10);}direct = LIGHT;}}
}

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

详解Vue设计模式

详解 vue 设计模式 ​ Vue.js 作为一个流行的前端框架&#xff0c;拥有许多设计模式&#xff0c;这些设计模式帮助开发者更好地组织和管理代码&#xff0c;提升代码的可维护性、可扩展性和可读性。Vue 设计模式主要体现在以下几个方面&#xff1a; 1. 组件化设计模式 (Compon…

Tomcat使用教程

下载地址&#xff1a;https://tomcat.apache.org/ 配置环境变量 变量名: CATALINA_HOME 变量值: D:\tools\apache-tomcat-9.0.97 Path: %CATALINA_HOME%\bin 启动Tomcat(打开命令提示符) startup.bat 解决乱码问题(打开conf\logging.properties) java.util.logging.Conso…

免押租赁系统助力资源共享新模式开创便捷租赁体验

内容概要 免押租赁系统&#xff0c;听起来是不是很酷&#xff1f;这个新模式不仅仅是为了让你少花点钱&#xff0c;它的到来简直就是个革命&#xff01;以前&#xff0c;租东西时首先想到的就是那个令人心痛的押金&#xff0c;对吧&#xff1f;但现在&#xff0c;免押租赁系统…

17. Threejs案例-Three.js创建多个立方体

17. Threejs案例-Three.js创建多个立方体 实现效果 知识点 WebGLRenderer (WebGL渲染器) WebGLRenderer 是 Three.js 中用于渲染 WebGL 场景的核心类。它负责将场景中的对象渲染到画布上。 构造器 new THREE.WebGLRenderer(parameters) 参数类型描述parametersObject可选…

【kettle】mysql数据抽取至kafka/消费kafka数据存入mysql

目录 一、mysql数据抽取至kafka1、表输入2、json output3、kafka producer4、启动转换&#xff0c;查看是否可以消费 二、消费kafka数据存入mysql1、Kafka consumer2、Get records from stream3、字段选择4、JSON input5、表输出 一、mysql数据抽取至kafka 1、表输入 点击新建…

如何让谷歌外链看起来更真实?

在SEO优化过程中&#xff0c;外链的自然性往往会被忽视&#xff0c;尤其是在一些急于见效的策略中&#xff0c;外链往往集中在高权重的少数几个网站上&#xff0c;导致外链结构单一且缺乏多样性。这样的外链网络容易让搜索引擎怀疑其真实性&#xff0c;进而影响网站排名。如何才…

【Qt移植LVGL】QWidget手搓LVGL软件仿真模拟器(非直接运行图形库)

【Qt移植LVGL】QWidget手搓LVGL软件仿真模拟器&#xff08;非直接运行图形库&#xff09; 打包开源地址&#xff1a; Qt函数库gitee地址 更新以gitee为准 移植后的demo工程&#xff1a; gitee 有些没实现的 后续我会继续优化 文章目录 别碰瓷看清楚&#xff1a;是移植&#…

Spring Data Elasticsearch

简介说明 spring-data-elasticsearch是比较好用的一个elasticsearch客户端&#xff0c;本文介绍如何使用它来操作ES。本文使用spring-boot-starter-data-elasticsearch&#xff0c;它内部会引入spring-data-elasticsearch。 Spring Data ElasticSearch有下边这几种方法操作El…

JavaWeb学习(3)(Servlet详细、Servlet的三种实现方式(面试)、Servlet的生命周期、传统web.xml配置Servlet(了解))

目录 一、Servlet详细。 &#xff08;1&#xff09;基本介绍。 &#xff08;2&#xff09;基本作用。 1、接收客户端请求数据。 2、处理请求。 3、完成响应结果。 二、Servlet的三种实现方式。 &#xff08;1&#xff09;实现javax.servlet.Servlet接口。 1、基本介绍。 2、代码…

如何利用内链策略提升网站的整体权重?

内链是谷歌SEO中常常被低估的部分&#xff0c;实际上&#xff0c;合理的内链策略不仅能帮助提升页面间的关联性&#xff0c;还可以增强网站的整体权重。通过正确的内链布局&#xff0c;用户可以更流畅地浏览你的网站&#xff0c;谷歌爬虫也能更快地抓取到更多页面&#xff0c;有…

jeecg-uniapp 跨域问题解决方法记录

今天折腾这个很恶心的问题,工作需要经验才行,根本没有什么技术难点,都是经验而已 问题在此 发现没有替换掉前缀 :8085/#/pages/login/login:1 Access to XMLHttpRequest at http://192.168.152.32:8194/h5api/api/user/login from origin http://localhost:8085 has been bloc…

解决Jupyter Notebook无法转化为Pdf的问题(基于Typora非常实用)

笔者在完成各项作业和做笔记时&#xff0c;经常用到jupyter notebook&#xff1b;其因为可以同时运行python并提供格式化的数字公式的输入方式&#xff0c;得到了广大用户的喜爱。 当我们想要将.ipynb文件导出为pdf时&#xff0c;有两种常用方法。 1.Ctrlp 2.通过File ->…

69 mysql 中 is null 的实现

前言 Mysql 中我们偶尔会用到 字段为 NULL 的情况 这时候 我们只能使用查询 “select * from tz_test_02 where field1 is null;” 来进行 field1 字段为 null 的行的查询 然后如果是使用 “select * from tz_test_02 where field1 null;” 你会发现查询 不出数据 但是如…

Java进阶(注解,设计模式,对象克隆)

Java进阶(注解&#xff0c;设计模式&#xff0c;对象克隆) 一. 注解 1.1 什么是注解 java中注解(Annotation)&#xff0c;又称java标注&#xff0c;是一种特殊的注释 可以添加在包&#xff0c;类&#xff0c;成员变量&#xff0c;方法&#xff0c;参数等内容上 注解会随同…

数据结构考研考点(持续更新)

一、绪论 1、数据元素是数据的基本单位&#xff0c;一个数据元素可以由若干数据项组成&#xff0c;数据项是构成数据元素的不可分割的最小单位。 2、数据结构是数据元素与数据元素之间的关系。 3、数据结构三要素&#xff1a;逻辑结构&#xff1a;独立于计算机&#xff08;线…

C# Dapper在项目中的使用(mvvm)

Dapper 简介 Dapper 是一个轻量级的对象关系映射&#xff08;Object - Relational Mapping&#xff0c;ORM&#xff09;工具&#xff0c;它在.NET 应用程序中用于简化数据库访问操作。它提供了高性能、简单易用的方式来执行 SQL 查询和命令&#xff0c;并且与ADO.NET紧密集成。…

如何抽象策略模式

策略模式是什么 策略设计模式&#xff08;Strategy Pattern&#xff09;是一种面向对象设计模式&#xff0c;它定义了一系列算法&#xff0c;并将每个算法封装起来&#xff0c;使它们可以相互替换。这种模式使得算法可以独立于使用它们的客户端而变化。 策略设计模式包含三个主…

算法-字符串-5.最长回文子串

一、题目&#xff1a; 二、思路解析 1.思路&#xff1a; 最长子串——动态数组 2.常用方法&#xff1a; a.字符串的截断 ress.substring(start,end1); 3.核心逻辑&#xff1a; 1.特殊情况&#xff1a;字符串为空或字符串的长度为0 if(snull||s.length())return ""…

【3D AIGC】Img-to-3D、Text-to-3D、稀疏重建(2024年文章汇总)

文章目录 1. Wonderworld&#xff1a;拓展图片边界&#xff0c;生成3D场景2. 3DTopia-XL&#xff1a;扩散模型辅助生成3. 3DGS-Enhancer: 通过视图一致2D Diffusion&#xff0c;提升无界3D Gaussian Splatting (NlPs2024 Spotlight)4. L3DG&#xff1a;Latent 3D Gaussian Diff…

基于图神经网络的个性化医疗决策算法研究:结合GNN与MSF-CNN,实现95.21%诊断准确率的个性化医疗方案

基于图神经网络的个性化医疗决策算法研究&#xff1a;结合GNN与MSF-CNN&#xff0c;实现95.21%诊断准确率的个性化医疗方案 论文大纲理解要点1. 确认目标2. 问题分解基础问题层技术问题层 3. 实现步骤4. 效果展示5. 金手指分析应用案例&#xff1a; 全流程分析多题一解分析一题…