10.通用定时器

2024-04-29 12:44
文章标签 通用 定时器

本文主要是介绍10.通用定时器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

驱动电机          RGB        LED亮度(呼吸灯)        舵机(遥控车、机械臂)

通用定时器作用

1.延时

2.定时器更新中断

3.输出比较(PWM波、驱动IO输出波形(脉冲))

4.输入捕获(捕获高低电平时间、记录按键按下事件)

TIM2,TIM3,TIM4,TIM5,

其中TIM2和TIM5为32位计数器

4条独立通道

TIM9和TIM12

2条独立通道

TIM10,TIM11,TIM13,TIM14

1条独立通道

通用定时器框图

特别注意的是在使用通用定时器进行PWM的输出时,要考虑复用的IO口是否能被当前时钟复用,因为IO口能被复用的功能本质其中是在内部电路设计中已经把时钟与IO口连接了,软件配置只是把连接打开,不然复位的时候这种电路通常都是关闭的,所以我们可以在数据手册中直接搜IO口,可以查到对应能复用的表,有的IO口是没有定时器的复用功能的,所以这样的IO口是不能被定时器复用,那怕软件复用也没有用,它的本质不存在!

配置定时器输出PWM步骤

  1. IO口端口使能,IO口模式配置为复用模式

  2. 定时器复用到IO口(映射)

  3. 时基配置,定时器时钟使能,选择时钟源,配置分频数PSC,重装载值ARR,计算周期,将配置好的参数写进计数器

  4. 配置输出比较通道,具体如下

void TIM3_PWM_Init(u16 ccr)
{GPIOC->MODER &= ~(0xf << 12);//模式清零GPIOC->MODER |= 0xa << 12;   //PC6,PC7为复用模式GPIOC->AFR[0] |= 0x22 << 24; //TIM3映射到PC6,PC7RCC->APB1ENR |= 1<<1;				 //打开TIM3时钟TIM3->SMCR &= ~0x7;					 //禁止从模式––如果 CEN =“1”,预分频器时钟直接由内部时钟提供//时基配置TIM3->PSC = 84 - 1;					 //84分频后为1MhzTIM3->ARR = 1000 - 1;        //1ms走完周期,hz为1000TIM3->CNT = 0;							//当前值清零TIM3->EGR |= 1;							//UG=1,更新事件产生,自动重装载TIM3->SR &= ~1;							//标志位清零//配置输出比较通道TIM3->CR1 |= 1<<7;					//ARR影子寄存器使能TIM3->CR1 &= ~(3 << 5);			//边沿对齐模式。计数器根据方向位 (DIR) 递增计数或递减计数。TIM3->CR1 &= ~(1<<4);				//方向为递增TIM3->CCMR1 &= ~3;					//CC1 通道配置为输出。TIM3->CCMR1 |= 1<<3;				//输出比较 1 预装载使能TIM3->CCMR1 |= 6<<4;				//PWM模式1TIM3->CCER |= 3;						//OC1 低电平有效 开启––在相应输出引脚上输出 OC1 信号TIM3->CCR1 = ccr;						//设置比较值TIM3->CR1 |= 1;							//TIM3定时器使能
}

这篇关于10.通用定时器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/946124

相关文章

详解Python中通用工具类与异常处理

《详解Python中通用工具类与异常处理》在Python开发中,编写可重用的工具类和通用的异常处理机制是提高代码质量和开发效率的关键,本文将介绍如何将特定的异常类改写为更通用的ValidationEx... 目录1. 通用异常类:ValidationException2. 通用工具类:Utils3. 示例文

j2EE通用jar包的作用

原文:http://blog.sina.com.cn/s/blog_610901710101kx37.html IKIKAnalyzer3.2.8.jar // 分词器 ant-junit4.jar // ant junit antlr-2.7.6.jar // 没有此包,hibernate不会执行hql语句。并且会报NoClassDefFoundError: antlr

【Qt】定时器事件

定时器事件 在之前学习QTimer中实现了定时器的功能,而在QTimer背后是QTimerEvent定时器事件进行支撑的。在QObject中提供了一个timeEvent这个函数。 startTimer启动定时器killTimer关闭定时器 Qt 中在进⾏窗⼝程序的处理过程中,经常要周期性的执⾏某些操作,或者制作⼀些动画效果,使⽤定 时器就可以实现。所谓定时器就是在间隔⼀定时间后,去执⾏某⼀

通用内存快照裁剪压缩库Tailor介绍及源码分析(一)

背景 我们知道内存快照是治理 OOM 问题及其他类型的内存问题的重要数据源,内存快照中保存了进程虚拟机的完整的堆内存数据,很多时候也是调查其他类型异常的重要参考。但是dump出来的堆转储文件.hprof往往很大,以 LargeHeap 应用为例,其 OOM 时的内存快照大小通常在512M左右,要有效的存储和获取都是一个问题。 线下拿到hprof文件相对容易,也可以预防OOM,但覆盖的场景十分有

独立按键单击检测(延时消抖+定时器扫描)

目录 独立按键简介 按键抖动 模块接线 延时消抖 Key.h Key.c 定时器扫描按键代码 Key.h Key.c main.c 思考  MultiButton按键驱动 独立按键简介 ​ 轻触按键相当于一种电子开关,按下时开关接通,松开时开关断开,实现原理是通过轻触按键内部的金属弹片受力弹动来实现接通与断开。  ​ 按键抖动 由于按键内部使用的是机

SpringBoot中利用EasyExcel+aop实现一个通用Excel导出功能

一、结果展示 主要功能:可以根据前端传递的参数,导出指定列、指定行 1.1 案例一 前端页面 传递参数 {"excelName": "导出用户信息1725738666946","sheetName": "导出用户信息","fieldList": [{"fieldName": "userId","fieldDesc": "用户id"},{"fieldName": "age","fieldDe

数据结构(邓俊辉)学习笔记】排序 5——选取:通用算法

文章目录 1. 尝试2. quickSelect3.linearSelect:算法4. linearSelect:性能分析5. linearSelect:性能分析B6. linearSelect:性能分析C 1. 尝试 在讨论过众数以及特殊情况下中位数的计算方法以后,接下来针对一般性的选取问题,介绍优化的通用算法。 既然选取问题的查找目标就是在整个数据集中按大小次序秩为 k

【JavaScript】在循环体中了解定时器工作机制

for (var i = 0; i < 5; i++) {setTimeout(function() {console.log(i);}, 1000);}console.log(i);   如果我们约定,用箭头表示其前后的两次输出之间有 1 秒的时间间隔,而逗号表示其前后的两次输出之间的时间间隔可以忽略,代码实际运行的结果该如何描述?会有下面两种答案: A. :5 -> 5 -> 5 ->

c++通用模板类(template class)定义实现详细介绍

有时,有两个或多个类,其功能是相同的,仅仅是数据类型不同,如下面语句声明了一个类:class Compare_int { public : Compare(int a,int b) { x=a; y=b; } int max( ) { return (x>y)?x:y; } int min( ) { return (x&... 有时,有两个或多个类,其功能是相同的,仅仅是数

WebAPI (一)DOM树、DOM对象,操作元素样式(style className,classList)。表单元素属性。自定义属性。间歇函数定时器

文章目录 Web API基本认知一、 变量声明二、 DOM1. DOM 树2. DOM对象3. 获取DOM对象(1)、选择匹配的第一个元素(2)、选择匹配多个元素 三、 操作元素1. 操作元素内容2. 操作元素属性(1)、常用属性(href之类的)(2)、通过style属性操作CSS(3)、通过类名(className)操作CSS(4)、通过classList操作控制CSS(5)、操作表单