TIM输出比较

2023-11-18

(以下内容均来自:bilibili江协科技)

OC输出比较

输出比较可以通过CNT与CCR寄存器值的关系,来对输出电平进行置1、置0或翻转的操作,用于输出一定频率和占空比的PWM波形

每个高级定时器和通用定时器都拥有4个输出比较通道

高级定时器的前3个通道额外拥有死区生成和互补输出的功能

PWM脉冲宽度调制

在具有惯性的系统中,可以通过对一系列脉冲的宽度进行调制,来等效地获得模拟参量,常应用于电机控速等领域

PWM参数:

频率:频率 = 1 / TS            占空比 = TON / TS           分辨率 = 占空比变化步距

占空比决定了PWM等效出来的模拟电压的大小,占空比越大,那等效的模拟电压就越趋近于高电平;占空比越小,那等效的模拟电压就越趋近于低电平;(线性的)

舵机简介

舵机是一种根据输入PWM信号占空比来控制输出角度的装置

输入PWM信号要求:周期为20ms,高电平宽度为0.5ms~2.5ms

舵机的内部工作流程大概的执行逻辑:PWM信号输入到控制板,给控制板一个指定的目标角度,然后这个电位器检测输出轴的当前角度,如果大于目标角度,电机就会反转;如果小于目标角度,电机就会正转;最终使输出轴固定在指定角度。

 直流电机及驱动简介

直流电机是一种将电能转换为机械能的装置,有两个电极,当电极正接时,电极正转,当电极反接时,电机反转;

直流电机属于大功率器件,GPIO口无法直接驱动,需要配合电机驱动电路来操作;

TB6612是一款双路H桥型的直流电机驱动芯片,可以驱动两个直流电机并且控制其转速和方向;

 

H桥的基本电路(由两路推挽电路组成)

 STBY引脚(待机控制脚),如果接GND芯片处于待机状态,如果接VCC,芯片就正常工作

初始化PWM:

第一步:RCC开启时钟,把我们要用的TIM外设和GPIO外设的时钟打开 

第二步:配置时基单元,包括这前面的时钟源选择

第三步:配置输出比较单元,里面包括CCR的值,输出比较模式,极性选择,输出使能这些参数,在库函数里也是统一来配置的

第四步:配置GPIO,把PWM对应的GPIO口,初始化为复用推挽输出的配置,这个PWM和GPIO的对应关系是怎样的,可以参考引脚定义表

第五步:运行控制,启动计数器,这样就可以输出PWM了

输出比较函数:

 这四个函数就是用来配置输出比较模块的;(重要)

用来输出比较结构体赋一个默认值的

 用来配置强制输出模式的(如果在运行中想要暂停输出波形并且强制输出高或低电平,可以用此函数)(了解即可)

 用来配置CCR寄存器的预装功能的(这个预装功能就是影子寄存器,即你写入的值,不会立即生生效,而是在更新事件才会生效)

 用来配置快速使能的

(在功能手册,外部事件时清楚REF信号,这一节有介绍)(无需掌握)

 

用来单独设置输出比较的极性,有N的是高级定时器里互补通道的配置 

用来单独修改输出使能参数的

 选择输出比较模式,用来单独更改输出比较模式的函数

 用来单独更改CCR寄存器值的函数(比较重要,更改占空比就要用到这些函数)

//

引脚重映射 需要用到AFIO

引脚重映射配置 

如果想让PA15、PB3、PB4这三个引脚当做GPIO来使用的话,就加上:

RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);

GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);

先打开AFIO时钟,再用AFIO将JTAG复用解除掉;

如果想重映射定时器或者其他外设的复用引脚,就加上:

RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);    
GPIO_PinRemapConfig(GPIO_PartialRemap1_TIM2 ,ENABLE);

先打开AFIO时钟,再用AFIO重映射外设复用的引脚;

如果重映射的引脚正好是调试端口,则加上:

RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);    
GPIO_PinRemapConfig(GPIO_PartialRemap1_TIM2 ,ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);

打开AFIO时钟,重映射引脚,解除调试端口;

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TIM输出比较 的相关文章

  • 解决ChatGML启动报错:RuntimeError: expected scalar type Half but found Float

    1 编辑web demo2 py文件 2 在原始命令加上 half 原始命令 model AutoModel from pretrained app model chatglm2 6b trust remote code True half
  • 如何优雅地实现 Excel 文件导出功能?(阿里出品的 EasyExcel,安利一波)

    EasyExcel 前言 导出是后台管理系统的常用功能 当数据量特别大的时候会内存溢出和卡顿页面 曾经自己封装过一个导出 POI百万级大数据量EXCEL导出 采用了分批查询数据来避免内存溢出和使用SXSSFWorkbook方式缓存数据到文件
  • 区块链技术详解

    区块链概述 区块链定义 区块链 是一个共享的 不可篡改的账本 旨在促进业务网络中的交易记录和资产跟踪流程 资产 可以是有形的 如房屋 汽车 现金 土地 也可以是无形的 如知识产权 专利 版权 品牌 几乎任何有价值的东西都可以在区块链网络上跟
  • 关于ROM,RAM,FLASH的个人理解

    RAM和ROM是指的存储介质 不是存储器 在硬件构造上不同 所以性质不同 但都是半导体存储介质 RAM是随机存取存储器 随机是什么意思呢 意思是 给定一个地址 可以立即访问到数据 访问时间和位置无关 RAM特点是掉电会丢失数据 但是RAM的

随机推荐

  • docker -toolbox host is not running 最简单解决方案

    很多小伙伴下载toolbox后 用gitbash运行docker machine start 可能会出现 docker host is not running的错误信息 其实我觉得就是无法启用虚拟机服务 打开虚拟机可以看到其实创建的虚拟机是
  • 小米手机安装linux视频教程,屏幕失灵的小米5手机安装linuxdeploy centos7记录

    几年前使用的小米5手机不知道什么时候屏幕失灵了 触摸任何地方都没有反应 幸好下面三个实体按键还是好的 就拿来安装一下linux系统 我到华强北去问了一下 修好屏幕至少需要100多块 这个手机卖旧手机也就是100块 懒得换屏幕盖板了 刚好前段
  • java sqlexception_java.sql.SQLException

    java sql SQLException ResultSet is closed是什么错误 java sql SQLException ResultSetisclosed是什么错误 java sql SQLException Result
  • 项目开发中开发文档出现的问题及其对策

    在常规项目开发管理中 很多项目专家都提出要用各种各样规范的文档对开发工作进行管理 但是在日常工作中 由于这些文档的编写的管理工作都是相当繁重的 以致让一线员工不能主动积极使用 更新这些文档 长期下来 这些管理型的 设计型的文档所发挥的作用就
  • Qt中SQLite3的增、删、改、查操作

    QT sqlite3 先说一下QT自带数据库sqlite3和另外用sqlite3插件的区别 他们的功能是一样的 但是代码就不一样了 QT对数据库具有完善的支持 不需要加任何其他插件就可以直接使用 但是如果你要是加了sqlite3插件 调用数
  • 解决: Message: invalid selector: Compound class names not permitted报错的问题

    对于出现消息 无效的选择器 不允许使用复合类名的问题 该页面解析 原始代码 self driver find element by class name s btn btn ok click 问题 代码出现如下清空 Traceback mo
  • Java Swing基础(层次结构,组件,布局管理)

    Swing基础层次结构 图形环境和图形对象 坐标 GUI组件的左上角坐标默认为 0 0 从左上角到右下角 水平坐标x和垂直坐标y增加 坐标的单位是像素 Graphics对象 专门管理图形环境 Graphics类是一个抽象类 抽象类Graph
  • 前端调试知识, 各种调试姿势

    在日常开发过程中 如果我们的程序出问题了 要找出是哪里导致的问题的时候 往往会遇到一个变量在10多20多个地方被改变了 然后找不到时哪一次的改变导致的异常 笨的方法也有 就是每一个有可能改到的地方都加上一个console log 通过log
  • 揭示网络通信的秘密:协议与套接字编程之旅

    文章目录 探索网络编程的魔法世界 网络编程 网络编程的基本概念 网络通信协议 套接字编程 网络编程的实际应用 总结 个人主页 程序员 小侯 CSDN新晋作者 欢迎 点赞 评论 收藏 收录专栏 Java知识介绍 文章内容 网络编程 适用于 J
  • STM32的CAN标识符过滤器超简单理解

    1 STM32中CAN1与CAN2的过滤器组 103系列14个过滤器组 104 107系列28个过滤器组 CAN FilterInitStructure CAN FilterNumber 0 0 13 2 每组过滤器组有两种工作模式 标识符
  • VC++ FTP文件下传(断点续传)

    include
  • Android OpenCV环境搭建与Demo展示

    title Android OpenCV环境搭建与Demo展示 tags Opencv date 2020 2 02 00 53 00 最终效果 视频展示 https www bilibili com video av86393649 An
  • (一)树莓派Pico用micropython实现LED闪烁

    方法一 这段代码使用MicroPython来控制Pico开发板上的板载led 引脚为25 GPIO 25 来控制LED的闪烁 如果需要控制外接led模块 请确保将LED正确连接到Pico开发板的引脚 并根据需要进行相应的调整 首先 通过 i
  • Docker : docker: Error response from daemon: user specified IP address is supported on user defined

    1 美图 2 背景 想运行docker容器的时候 指定ip 但是发现出问题 base lcc lcc docker run d name es2 ip 172 16 12 12 p 9200 9200
  • 如何将你的iOS应用成功上架App Store(图文详解)

    上架基本需求资料 1 苹果开发者账号 如还没账号先申请 苹果开发者账号申请教程 2 开发好的APP 通过本篇教程 可以学习到ios证书申请和打包ipa上传到appstoreconnect apple com进行TestFlight测试然后提
  • “北漂”小夫妻新婚后的理财计划

    北漂 小夫妻新婚后的理财计划 提要 经过多年的努力打拼 1976 年出生的姜帆终于在京城站稳脚跟 做上了一家大公司的业务主管 今年 十一 国庆节还 和谈了多年马拉松恋爱的女友举行了婚礼 面对婚后新形势下几个令他烦恼的家庭理财目标 他该如何应
  • VNC VIEWER 连接闪退不断重新连接的解决办法

    1 vnc viewer官网下载standalone 2 vnc链接 3 连接后不断闪退 又不断重连 根本无法进行任何操作或操作困难 解决办法 1 2 点击properties 3 点击options general 调低画质
  • C语言好题解析(一)

    目录 选择题1 选择题2 选择题3 选择题4 编程题一 选择题1 执行下面程序 正确的输出是 int x 5 y 7 void swap int z z x x y y z int main int x 3 y 8 swap printf
  • 在Linux上面进行远程git的数据拉取与上传

    1 安装git sudo apt get update sudo apt get install git 2 查看本地git信息 git version 3 在当前路径下创建一个本地git仓库 sudo git init 4 上传当前的文件
  • TIM输出比较

    以下内容均来自 bilibili江协科技 OC输出比较 输出比较可以通过CNT与CCR寄存器值的关系 来对输出电平进行置1 置0或翻转的操作 用于输出一定频率和占空比的PWM波形 每个高级定时器和通用定时器都拥有4个输出比较通道 高级定时器