STM32 Timer : Base Timer, Input Capture, PWM, Output Compare
http://www.cs.indiana.edu/~geobrown/book.pdf

An example of a basic timer is illustrated in Figure 10.1.
This timer has four components – a controller, a prescaler (PSC), an “auto-reload” register (ARR) and a counter (CNT).
The function of the prescaler is to divide a reference clock to lower frequency.
The STM32 timers have 16-bit prescaler registers and can divide the reference clock by any value 1..65535.
For example, the 24Mhz system clock of the STM32 VL Discovery
could be used to generate a 1 Mhz count frequency with a prescaler of 23 (0..23 == 24 values). T
he counter register can be configured to count up, down, or up/down and to be reloaded from the auto reload register
whenever it wraps around (an “update event”) or to stop when it wraps around.

The basic timer generates an output event (TGRO) which can be configured
to occur on an update event or when the counter is enabled (for example on a GPIO input).
To understand the three counter modes consider Figure 10.2.
In these examples, we assume a prescaler of 1 (counter clock is half the internal clock), and a auto reload value of 3.
Notice that in “Up” mode, the counter increments from 0 to 3 (ARR) and then is reset to 0.
When the reset occurs, an “update event” is generated.
This update event may be tied to TRGO, or in more complex timers with capture/compare channels
it may have additional effects (described below).
Similarly, in “Down” mode, the counter decrements from 3 to 0 and then is reset to 3 (ARR).
In Down mode, an update “event” (UEV) is generated when the counter is reset to ARR.
Finally, in Up/Down mode, the counter increments to ARR, then decrements to 0, and repeats.
A UEV is generated before each reversal with the effect that the period in Up/Down mode
is one shorter than in either Up or Down mode.
Many timers extend this basic module with the addition of counter channels such as the one illustrated in Figure 10.3.

The “x” refers to the channel number – frequently, timers support multiple channels.
With this modest additional hardware, an output can be generated whenever the count register reaches a specific value
or the counter register can be captured when a specific input event occurs (possibly a prescaled input clock).
An important use of counter channels is the generation of precisely timed pulses.
There are two variations of this use – “one-pulse” pulses,
in which a single pulse is generated, and pulse width modulation, in which a series of pulses is generated with the counter UEV period.
The pulse width is controlled by the Capture/Compare Register (CCR).
For example, the channel output (OCxREF) may tied to whether the CNT register is greater (or less) than the Compare register.

In Figure 10.4 we illustrate the use of two channels for one-pulse and PWM outputs.
Here we assume that the ARR is 7 and the CCR is 3.
In PWM mode, ARR controls the period, and CCR controls the pulse width (and hence the duty cycle).
In one-pulse mode, the pulse begins CCR cycles after an initial trigger event, and has a width of ARR-CRR.
It is possible to use multiple channels to create a set of synchronized, pulses beginning at precise delays from each other.
A timer channel may also be used to measure pulse widths – in effect decoding pwm signals.
There are many other configuration options for the STM32 timers including mechanisms
to synchronize multiple timers both to each other and to external signals.
In the remainder of this chapter we consider two timer applications including PWM output (Section 10.1),
input pulse measurement (Section 10.2).
In Chapter 13 we show how to use a timer to control DMA transfers for an audio player and
in Chapter 14 we use a timer to sample and analog input at regular intervals.

STM32 Timer : Base Timer, Input Capture, PWM, Output Compare的更多相关文章
- PIC32MZ tutorial -- Output Compare
Output Compare is a powerful feature of embedded world. The PIC32 Output Compare module compares the ...
- STM32 System and Timer Clock Configurations
STM32 System and Timer Clock Configurations I've started writing some software to drive a series of ...
- TIMER门控模式控制PWM输出长度
TIMER门控模式控制PWM输出长度 参照一些网友代码做了些修改,由TIM4来控制TIM2的PWM输出长度, 采用主从的门控模式,即TIM4输出高时候TIM2使能输出 //TIM2 PWM输出,由TI ...
- PIC32MZ tutorial -- Input Capture
Today I accomplish a simple application for PIC32MZ EC Starter Kit. This application uses Input Capt ...
- An Isolated DAC Using PWM Output
An Isolated DAC Using PWM Output Arduino‘s (ATmega328P) PWM outputs via analogWrite can be convenien ...
- 深入比特币原理(三)——交易的输入(input)与输出(output)
本节内容非常重要,如果你不能很好的掌握本节内容,你无法真正理解比特币的运行原理,请务必要学习清楚. 比特币的交易模型为UTXO(unspend transaction output),即只记录未花费的 ...
- Linux部署Django:报错 nohup: ignoring input and appending output to ‘nohup.out’
一.部署 Django 到远程 Linux 服务器 利用 xshell 通过 ssh 连接到 Linux服务器,常规的启动命令是 python3 manage.py runserver 但是,关闭 x ...
- STM32: TIMER门控模式控制PWM输出长度
搞了两天单脉冲没搞定,无意中发现,这个利用主从模式的门控方式来控制一路PWM的输出长度很有效. //TIM2 PWM输出,由TIM4来控制其输出与停止 //frequency_tim2:TIM2 PW ...
- STM32 Seminar 2007 -- Timer
随机推荐
- 批量增加Linux系统账号、重置账号密码、FTP账号批量测试
批量增加Linux系统账号.重置账号密码是用Linux Shell脚本来做的:批量FTP账号测试是用Python脚本来做的.这些脚本都是读取一个用户名和密码文件,然后基于该用户名密码文件进行自动批量测 ...
- mysql基本操作【重要】
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAuYAAAVeCAIAAACyxWmSAAAgAElEQVR4nOydT0wbV/vvZzm7YXd2zI ...
- [转]html网页 swf播放器使用代码
<object id="player" height="240" width="275" classid="CLSID:6B ...
- springcloud微服务架构搭建:服务调用
spring-cloud调用服务有两种方式,一种是Ribbon+RestTemplate, 另外一种是Feign. Ribbon是一个基于HTTP和TCP客户端的负载均衡器,类似nginx反向代理,可 ...
- Python学习四|变量、对象、引用的介绍
变量 变量创建:一个变量也就是变量名,就像a,当代码第一次赋值时就创建了它.之后的赋值将会改变已创建的变量名的值,从技术上讲,Python在代码运行之前先检测变量名,可以当成是最初的赋值创建了变量. ...
- ASP.NET结合COM组件发送Email
在开发电子邮件发送程序的时候,我们经常需要使用到相应的组件,其实不需要第三方的组件(例如:Jmail)照常可以做到发送Email的功能. 在系统目录(如c:/winnt或c:/windows)的sys ...
- URL传递的参数是UTF-8编码,在打开的页面正常显示(GB2312)的方法
URL传递的参数采用的是UTF-8编码,在打开的子页面中显示乱码, URL传递的地址形如:http://localhost/test.aspx?orgname=%E5%8B%**%**%**%**&a ...
- javascript-dom文档对象模型1
HTML DOM (文档对象模型) 当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model). HTML DOM 模型被构造为对象的树. 一:HTML DOM 树 ...
- Asp.Net Core WebAPI入门整理(二)简单示例
一.Core WebAPI中的序列化 使用的是Newtonsoft.Json,自定义全局配置处理: // This method gets called by the runtime. Use thi ...
- Java第三阶段学习(八:网络通信协议、UDP与TCP协议)
一.网络通信协议 1.概念: 通过计算机网络可以使多台计算机实现连接,位于同一个网络中的计算机在进行连接和通信时需要遵守一定的规则,在计算机网络中,这些连接和通信的规则被称为网络通信协议,它对数据的传 ...