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.xdnf.cn/news/33781.html

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

相关文章

Chrome控制台 网站性能优化指标一览

打开chrome-》f12/右键查看元素-》NetWrok/网络 ctrlF5 刷新网页&#xff0c;可以看到从输入url到页面资源请求并加载网页&#xff0c;用于查看资源加载&#xff0c;接口请求&#xff0c;评估网页、网站性能等&#xff0c;如下图&#xff1a; request、stransferred、resour…

buu ciscn_2019_ne_5

下载附件然后checksec一下如图 32位的程序&#xff0c;nx保护开的&#xff0c;存在栈溢出&#xff0c;拖进ida32中看看 梳理思路&#xff1a; 简单分析并写个注释&#xff0c;这边梳理一下大致流程&#xff0c;先是输入一字符串&#xff0c;然后比对&#xff0c;然后再选择相…

如何降低DApp开发中的Gas费消耗?

Gas费是链上运行DApp时的一项关键成本&#xff0c;直接影响用户体验和应用的吸引力。过高的Gas费可能导致用户流失&#xff0c;尤其在交易密集型应用中。因此&#xff0c;优化Gas费已成为DApp开发者的重要任务。那么&#xff0c;怎样才能有效降低Gas费消耗呢&#xff1f; 1. 优…

CC工具箱使用指南:【湖北省村规结构调整表(D)】

一、简介 群友定制工具。 工具根据输入的现状用地和规划用地图层&#xff0c;生成村域和村庄建设边界内的结构调整表。 二、工具参数介绍 点击【定制2】组里的【湖北省村规结构调整表(D)】工具&#xff1a; 即可打开下面的工具框界面&#xff1a; 1、现状用地图层 2、现状…

逗号分隔、多级位置及局部更新的Sql实现

一、逗号分隔的字符串多值查询 1&#xff0c;背景 假设有一个表location_type_relation&#xff0c;其中有1个字段location_ids&#xff0c;用逗号分隔了多个标签&#xff0c;还有1个字段type_ids&#xff0c;也是用逗号分隔了多个标签 2&#xff0c;需求 现在要判断locat…

flink-connector-mysql-cdc:01 mysql-cdc础配置代码演示

flink-connector-mysql-cdc&#xff1a; 01 mysql-cdc基础配置代码演示02 mysql-cdc高级扩展03 mysql-cdc常见问题汇总04 mysql-cdc-kafka生产级代码分享05 flink-kafka-doris生产级代码分享06 flink-kafka-hudi生产级代码分享 flink-cdc版本&#xff1a;3.2.0 flink版本&…

工业-实时数据采集

1.编写新的 Flume 配置文件&#xff0c;将数据备份到 HDFS 目录 /user/test/flumebackup 下&#xff0c;要求所有主题 的数据使用同一个 Flume配置文件完成。 1. 配置概览 Flume 的主要任务是从多个来源&#xff08;如日志文件&#xff09;读取数据&#xff0c;经过处理后通过…

mmdet 加载预训练模型多卡训练过程中,存在显卡占用显存不均匀

1. 问题描述 基于mmdet https://github.com/open-mmlab/mmdetection代码仓库&#xff0c;修改了自己的检测代码&#xff0c;加载了预训练模型&#xff0c;进行分布式训练。 在训练过程中&#xff0c;出现了显卡的占用显存不均匀的问题。 如图所示&#xff0c;可以看到显卡2 占…

使用ALB将HTTP访问重定向至HTTPS

HTTPS是加密数据传输协议&#xff0c;安全性高。当企业进行HTTPS安全改造后&#xff0c;为了方便用户访问&#xff0c;可以使用ALB在用户无感知的情况下将HTTP访问重定向至HTTPS。 前提条件 您已创建ALB实例&#xff0c;并为该实例添加了HTTP监听和监听端口为443的HTTPS监听。…

力扣92.反转链表Ⅱ

题目描述 题目链接92. 反转链表 II 给你单链表的头指针 head 和两个整数 left 和 right &#xff0c;其中 left < right 。请你反转从位置 left 到位置 right 的链表节点&#xff0c;返回 反转后的链表 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], left …

Java版-速通ETL工具中简单的DAG执行实现

DAG作用 在ETL工具中&#xff0c;一般使用DAG图来进行任务的配置&#xff0c;将任务配置在有向无环图中&#xff0c;执行时候从首层节点&#xff0c;依次往下&#xff0c;下层节点的执行依赖于父节点是否执行完毕的状态&#xff0c;当最后一层的节点执行完成之后&#xff0c;整…

Web安全深度剖析

1.Web安全简介 ​ 攻击者想要对计算机进行渗透&#xff0c;有一个条件是必须的&#xff0c;就是攻击者的计算机与服务器必须能够正常通信&#xff0c;服务器与客户端进行通信依靠的就是端口。 ​ 如今的web应该称之为web应用程序&#xff0c;功能强大&#xff0c;离不开四个要…

策略模式的理解和实践

在软件开发中&#xff0c;我们经常遇到需要在不同算法之间进行选择的情况。这些算法可能实现相同的功能&#xff0c;但使用不同的方法或逻辑。为了增强代码的可维护性和可扩展性&#xff0c;我们可以使用设计模式来优化这些算法的实现和管理。策略模式&#xff08;Strategy Pat…

在 Linux 环境下搭建 OpenLab Web 网站并实现 HTTPS 和访问控制

实验要求 综合练习&#xff1a;请给openlab搭建web网站 ​ 网站需求&#xff1a; ​ 1.基于域名[www.openlab.com](http://www.openlab.com)可以访问网站内容为 welcome to openlab!!! ​ 2.给该公司创建三个子界面分别显示学生信息&#xff0c;教学资料和缴费网站&#xff0c…

Java开发利器:IDEA的安装与使用(下)

文章目录 8. 快捷键的使用8.1 常用快捷键8.2 查看快捷键8.3 自定义快捷键8.4 使用其它平台快捷键 9. IDEA断点调试(Debug)9.1 为什么需要Debug9.2 Debug的步骤9.3 多种Debug情况介绍9.3.1 行断点9.3.2 方法断点9.3.3 字段断点9.3.4 条件断点9.3.5 异常断点9.3.6 线程调试9.3.7 …

非对称任意进制转换器(安卓)

除了正常进制转换&#xff0c;还可以输入、输出使用不同的数字符号&#xff0c;达成对数值进行加密的效果 点我下载APK安装包 使用unity开发。新建一个c#代码文件&#xff0c;把代码覆盖进去&#xff0c;再把代码文件添加给main camera即可。 using System.Collections; usin…

神经网络入门实战:(十四)pytorch 官网内置的 CIFAR10 数据集,及其网络模型

(一) pytorch 官网内置的网络模型 图像处理&#xff1a; Models and pre-trained weights — Torchvision 0.20 documentation (二) CIFAR10数据集的分类网络模型&#xff08;仅前向传播&#xff09;&#xff1a; 下方的网络模型图片有误&#xff0c;已做修改&#xff0c;具…

linux 系列服务器 高并发下ulimit优化文档

系统输入 ulimit -a 结果如下 解除 Linux 系统的最大进程数 要解除或提高 Linux 系统的最大进程数&#xff0c;可以修改 ulimit 设置和 /etc/security/limits.conf 文件中的限制。 临时修改 ulimit 设置 可以使用 ulimit 命令来查看和修改当前会话的最大进程数&#xff1a; 查…

Elasticsearch数据迁移(快照)

1. 数据条件 一台原始es服务器&#xff08;192.168.xx.xx&#xff09;&#xff0c;数据迁移后的目标服务器&#xff08;10.2.xx.xx&#xff09;。 2台服务器所处环境&#xff1a; centos7操作系统&#xff0c; elasticsearch-7.3.0。 2. 为原始es服务器数据创建快照 修改elas…