CCRX寄存器

article/2025/10/5 11:14:05

TIM_OC1PreloadConfig(TIM2, TIM_OCPreload_Disable);//

TIMx_CCRx寄存器能够在任何时候通过软件进行更新以控制输出波形,条件是未使用预装载寄存器(OCxPE=’0’,否则TIMx_CCRx影子寄存器只能在发生下一次更新事件时被更新)。这里设置为Disable

就是为了后面在中断服务子程序可以修改TIMx_CCR实时起作用


void TIM2_IRQHandler(void)
  {  u16 capture;
     u16 CCR1_Val = 1000;
     u16 CCR2_Val = 500;
     u16 CCR3_Val = 250;
     u16 CCR4_Val = 125;

  if (TIM_GetITStatus(TIM2, TIM_IT_CC1) != RESET)
  {
   
    TIM_ClearITPendingBit(TIM2, TIM_IT_CC1);
   
    capture = TIM_GetCapture1(TIM2);
    TIM_SetCompare1(TIM2, capture + CCR1_Val);

   设置TIMx捕获比较1寄存器值然后动态修改其CCR的值 使整个程序一直进行下去


---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

STM32 TImer几种模式_通用定时器


输入捕获模式

库函数例程位置: STM32F10x_StdPeriph_Lib_V3.3.0\Project\STM32F10x_StdPeriph_Examples\TIM\InputCapture

在输入捕获模式下,当检测到ICx信号上相应的边沿后,计数器的当前值被锁存到捕获/比较寄存器(TIMx_CCRx)中。当捕获事件发生时,相应的CCxIF标志(TIMx_SR寄存器)被置’1’,如果使能了中断或者DMA操作,则将产生中断或者DMA操作。

在捕获模式下,捕获发生在影子寄存器上,然后再复制到预装载寄存器中。

PWM输入模式

库函数例程位置 :STM32F10x_StdPeriph_Lib_V3.3.0\Project\STM32F10x_StdPeriph_Examples\TIM\PWM_Input

该模式是输入捕获模式的一个特例

例如,你需要测量输入到TI1上的PWM信号的长度(TIMx_CCR1寄存器)和占空比(TIMx_CCR2寄存器),具体步骤如下(取决于CK_INT的频率和预分频器的值)

● 选择TIMx_CCR1的有效输入:置TIMx_CCMR1寄存器的CC1S=01(选择TI1)。

● 选择TI1FP1的有效极性(用来捕获数据到TIMx_CCR1中和清除计数器):置CC1P=0(上升沿有效)。

● 选择TIMx_CCR2的有效输入:置TIMx_CCMR1寄存器的CC2S=10(选择TI1)。

● 选择TI1FP2的有效极性(捕获数据到TIMx_CCR2):置CC2P=1(下降沿有效)。

● 选择有效的触发输入信号:置TIMx_SMCR寄存器中的TS=101(选择TI1FP1)。

● 配置从模式控制器为复位模式:置TIMx_SMCR中的SMS=100。

● 使能捕获:置TIMx_CCER寄存器中CC1E=1且CC2E=1。


由于只有TI1FP1和TI2FP2连到了从模式控制器,所以PWM输入模式只能使用TIMx_CH1 /TIMx_CH2信号。

强置输出模式

在输出模式(TIMx_CCMRx寄存器中CCxS=00)下,输出比较信号(OCxREF和相应的OCx)能够直接由软件强置为有效或无效状态,而不依赖于输出比较寄存器和计数器间的比较结果。

例如:CCxP=0(OCx高电平有效),则OCx被强置为高电平。 置TIMx_CCMRx寄存器中的OCxM=100,可强置OCxREF信号为低。

输出比较模式

此项功能是用来控制一个输出波形,或者指示一段给定的的时间已经到时。 当计数器与捕获/比较寄存器的内容相同时,输出比较功能做如下操作:

● 将输出比较模式(TIMx_CCMRx寄存器中的OCxM位)和输出极性(TIMx_CCER寄存器中的CCxP位)定义的值输出到对应的引脚上。在比较匹配时,输出引脚可以保持它的电平(OCxM=000)、被设置成有效电平(OCxM=001)、被设置成无效电平(OCxM=010)或进行翻转(OCxM=011)。

● 设置中断状态寄存器中的标志位(TIMx_SR寄存器中的CCxIF位)。

● 若设置了相应的中断屏蔽(TIMx_DIER寄存器中的CCxIE位),则产生一个中断。

● 若设置了相应的使能位(TIMx_DIER寄存器中的CCxDE位,TIMx_CR2寄存器中的CCDS位选择DMA请求功能),则产生一个DMA请求。

输出比较模式的配置步骤:

1. 选择计数器时钟(内部,外部,预分频器)

2. 将相应的数据写入TIMx_ARR和TIMx_CCRx寄存器中

3. 如果要产生一个中断请求和/或一个DMA请求,设置CCxIE位和/或CCxDE位。

4. 选择输出模式,例如当计数器CNT与CCRx匹配时翻转OCx的输出引脚,CCRx预装载未用,开启OCx输出且高电平有效,则必须设置OCxM=’011’、OCxPE=’0’、CCxP=’0’和CCxE=’1’。

5. 设置TIMx_CR1寄存器的CEN位启动计数器


PWM 模式

脉冲宽度调制模式可以产生一个由TIMx_ARR寄存器确定频率、由TIMx_CCRx寄存器确定占空比的信号。

在TIMx_CCMRx寄存器中的OCxM位写入’110’(PWM模式1)或’111’(PWM模式2),能够独立地设置每个OCx输出通道产生一路PWM。必须设置TIMx_CCMRx寄存器OCxPE位以使能相应的预装载寄存器,最后还要设置TIMx_CR1寄存器的ARPE位,(在向上计数或中心对称模式中)使能自动重装载的预装载寄存器。

下面是一个PWM模式1的例子。当TIMx_CNT<TIMx_CCRx时PWM信号参考OCxREF为高,否则为低。如果TIMx_CCRx中的比较值大于自动重装载值(TIMx_ARR),则OCxREF保持为’1’。如果比较值为0,则OCxREF保持为’0’。 下图为TIMx_ARR=8时边沿对齐的PWM波形实例。


单脉冲模式

单脉冲模式(OPM)是前述众多模式的一个特例。这种模式允许计数器响应一个激励,并在一个程序可控的延时之后,产生一个脉宽可程序控制的脉冲。

可以通过从模式控制器启动计数器,在输出比较模式或者PWM模式下产生波形。设置TIMx_CR1寄存器中的OPM位将选择单脉冲模式,这样可以让计数器自动地在产生下一个更新事件UEV时停止。 仅当比较值与计数器的初始值不同时,才能产生一个脉冲。启动之前(当定时器正在等待触发),必须如下配置:

向上计数方式:CNT < CCRx ≤ ARR (特别地,0 < CCRx), 向下计数方式:CNT > CCRx。


编码器接口模式


两个输入TI1和TI2被用来作为增量编码器的接口。参看表77,假定计数器已经启动(TIMx_CR1寄存器中的CEN=’1’),计数器由每次在TI1FP1或TI2FP2上的有效跳变驱动。TI1FP1和TI2FP2是TI1和TI2在通过输入滤波器和极性控制后的信号;如果没有滤波和变相,则TI1FP1=TI1,TI2FP2=TI2。根据两个输入信号的跳变顺序,产生了计数脉冲和方向信号。依据两个输入信号的跳变顺序,计数器向上或向下计数,同时硬件对TIMx_CR1寄存器的DIR位进行相应的设置。不管计数器是依靠TI1计数、依靠TI2计数或者同时依靠TI1和TI2计数。在任一输入端(TI1或者TI2)的跳变都会重新计算DIR位。 编码器接口模式基本上相当于使用了一个带有方向选择的外部时钟。这意味着计数器只在0到TIMx_ARR寄存器的自动装载值之间连续计数(根据方向,或是0到ARR计数,或是ARR到0计数)。所以在开始计数之前必须配置TIMx_ARR;同样,捕获器、比较器、预分频器、触发输出特性等仍工作如常。 在这个模式下,计数器依照增量编码器的速度和方向被自动的修改,因此计数器的内容始终指示着编码器的位置。计数方向与相连的传感器旋转的方向对应。下表列出了所有可能的组合,假设TI1和TI2不同时变换。


。。。。。。。http://www.360doc.com/content/11/0917/04/7736891_149022671.shtml


http://chatgpt.dhexx.cn/article/xp8EgdLR.shtml

相关文章

JavaScript权威指南 第13章 异步JavaScript

JavaScript权威指南 第13章 异步JavaScript 13章 异步JavaScript13.1 使用回调的异步编程13.1.1 定时器13.1.2 事件13.1.3 网络事件13.1.4 Node中的回调与事件 13.2 期约13.2.1 使用期约使用期约处理错误 13.2.2 期约链13.2.2 解决期约13.2.4 再谈期约和错误catch和finally方法…

javascript权威指南(第四版)

Java Script是一种功能强大的基于对象的脚本语言。Java Script程序可以直接嵌入HTML页面。与Web浏览器定义的文档对象模型(DOM)一起使用时&#xff0c;JavaScript可以创建动态HTML(DHTML)内容&#xff0c;允许用户与客户端的Web应用程序交互。 JavaScript语法以流行的程序设计语…

《JavaScript权威指南》学习笔记(一)

跟着《JavaScript权威指南》整理的一些知识点和自己的小拓展。有不足之处请指正。 1、try catch 防止程序异常直接报错退出&#xff0c;而是能对异常进行一些处理&#xff0c;具体处理就在catch中。最好是在最外层函数使用。 2、HTML不区分大小写、XHTML区分大小写、JavaScri…

《javascript权威指南》精读笔记-持续更新

《javascript权威指南》 作用域链 表达式 原始表达式 对象和数组的初始化表达式 函数定义表达式 函数直接量 属性访问表达式 调用表达式 对象创建表达式 运算符 表达式计算 var function for in with debugger use strict 对象 创建对象 属性的查询和设置 作为关联数组的对象 继…

JavaScript权威指南(第6版)

JavaScript权威指南&#xff08;第6版&#xff09; JavaScript权威指南 第6版&#xff08;影印版&#xff09;上册 Beginning iOS Programming, 2014年 Gradle for Android (2016年3月 Finished)

JavaScript权威指南 第11章JavaScript标准库

JavaScript权威指南 第11章JavaScript标准库 第11章 JavaScript标准库11.1 集合与映射11.1.1 Set类11.1.2 Map类11.1.3 WeakMap和WeakSet 11.2 定型数组与二进制数据11.2.1 定型数组的类型11.2.2 创建定型数组11.2.3 使用定型数组11.2.4 定型数组的方法与属性11.2.5 DateView与…

JavaScript 权威指南-学习笔记(一)

本文所有教程及源码、软件仅为技术研究。不涉及计算机信息系统功能的删除、修改、增加、干扰,更不会影响计算机信息系统的正常运行。不得将代码用于非法用途,如侵立删!JavaScript 权威指南-学习笔记 JavaScript是一门高级、动态、解释型变成语言,非常适合面向对象和函数式编…

JavaScript权威指南笔记-masaikk

JavaScript权威指南笔记-马赛柯柯 源代码位于masaikk/interviewAccess - Gitee.com 前五章笔记略 第六章 对象 防止某个对象被第三方库意外修改&#xff0c;建议使用Object.create()方法 ★ \bigstar ★ let o {foo: bar}; library.func(Object.create(o))解释Object.crea…

【JavaScript权威指南(第七版)】之阅读学习总结

写在前面 最近借着空闲时间断断续续两个月看完了《JavaScript权威指南(第七版)》&#xff0c;《JavaScript权威指南》一直以来被称为“犀牛书”&#xff0c;前面的第六版我大概略过一遍&#xff0c;由于书的厚度实在有点“厚重”&#xff0c;将近1000多页左右&#xff0c;有一些…

JavaScript权威指南(原书第7版) 犀牛书

第3章 语法结构 3.10.1 使用let和const声明 ES6后&#xff0c;变量通过let关键字声明 let i let sum可以使用一条let语句声明多个变量 let i, sum声明变量的同时&#xff0c;&#xff08;如果可能&#xff09;也为其赋予一个初始值 let message hello let i 0, j 1let …

JavaScript权威指南-总结

章2 词法结构 1.什么是字面量&#xff0c;标识符&#xff0c;保留字&#xff1f; 字面量即程序中的数据的值&#xff1b;标识符指数据的名字&#xff08;字母、下划线_或美元符号$开头&#xff0c;为了和数值区分开&#xff0c;标识符不能用数字开头&#xff0c;&#xff09;…

javascript 权威指南笔记

1.如果没有用var语句给一个变量指初始值&#xff0c;那么虽然这个变量被声明了&#xff0c;但是在给它存一个值之前&#xff0c;它的初始值就是 undefined 2.使用var语句多次声明一个变量不仅是合法的&#xff0c;而且也不会造成任何错误。如果重复的声明有一个初始值&#xf…

【WCF】使用WCF测试客户端

【是什么】 WCF测试客户端&#xff08;WCF Test Client&#xff09;是一个用来测试WCF服务程序的调试工具&#xff0c;能够使开发WCF服务更加方便。 【打开方法】 有四种打开方式 1、找到Vs的安装路径&#xff0c;找到Common7\IDE\WcfTestClient.exe&#xff0c;双击打开。如…

WCF 介绍(一)

前言&#xff1a;WCF是微软基于SOA&#xff08;Service Oriented Architecture&#xff09;推出的.Net平台下的框架产品&#xff0c;它代表了软件架构设计与开发的一种发展方向&#xff0c;在微软的战略计划中也占有非常重要的地位。了解和掌握WCF&#xff0c;对于程序员特别是…

C#中如何使用WCF

一、什么是WCF Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口&#xff0c;可以翻译为Windows通讯接口&#xff0c;它是.NET框架的一部分。由 .NET Framework 3.0 开始引入。 从我现在获得的知识&#xff0c;我理解的WCF重点是分布式&a…

WCF Debug 调试

关于WCF的调试&#xff0c;MSDN给出如下说明&#xff0c;可能是由于我的水平问题&#xff0c;个人无法完全看懂&#xff0c;所以自己总结了一点WCF的调试技巧。仅供参考。 如何开始调试 WCF 服务:  通常WCF可以部署成Windows service 和Web service。 1.对于WebService通常…

WebService,WCF,WebApi区别与特点

WebService,WCF,WebApi区别与特点 于 2019-06-10 10:11:00 发布7872 收藏 32 文章标签&#xff1a; c# 测试 操作系统 版权 在.NET平台下&#xff0c;有大量的技术让你创建一个HTTP服务&#xff0c;像Web Service&#xff0c;WCF&#xff0c;现在又出了Web API。在.NET平台…

WCF入门讲解

一、简单WCF服务TCP和HTTP传输协议 二、实例管理 1、实例管理-单调服务 介绍&#xff1a;单调服务的一个实例创建于每个方法调用之前&#xff0c;调用完成后会立即销毁该服务实例。 2、实例管理-会话 介绍&#xff1a;一个配置了私有会话的服务通常无法支持多达几十个&#x…

关于WCF服务的使用(非常详细的步骤)

&#xff08;附上一篇对WCF基础讲解挺详细的一篇文章http://www.cnblogs.com/wayfarer/archive/2008/04/15/1153775.html&#xff09; WCF是.NET提供的一种服务&#xff0c;可以将自己写的程序&#xff08;完成特定功能&#xff0c;比如从数据库中读取数据操作等&#xff09…

WebService、WCF、WebAPI之间的区别

Web Service 1、它是基于SOAP协议的&#xff0c;数据格式是XML 2、只支持HTTP协议 3、它不是开源的&#xff0c;但可以被任意一个了解XML的人使用 4、它只能部署在IIS上 WCF 1、它是基于SOAP协议的&#xff0c;数据格式是XML 2、这个是Web Service&#xff08;ASMX&#xff09…