![ARTERY AT32F435 Series Скачать руководство пользователя страница 256](http://html1.mh-extra.com/html/artery/at32f435-series/at32f435-series_reference-manual_2977592256.webp)
AT32F435/437
Series Reference Manual
2022.11.11
Page 256
Rev 2.03
14.2.3.2 Counting mode
The timer (TMR2 to TMR5) supports several counting modes to meet different application scenarios.
Each timer has an internal 16-bit upcounter, downcounter, upcounter/downcounter. TMR2/5 can be
extended to 32-bit by setting the PMEN bit to 1.
The TMRx_PR register is used to set the counting period. The value in the TMRx_PR is immediately
moved to the shadow register by default. When the periodic buffer is enabled (PRBEN=1), the value in
the TMRx_PR register is transferred to the shadow register only at an overflow event. The OVFEN and
OVFS bits are used to configure the overflow event.
The TMRx_DIV register is used to configure the counting frequency. The counter counts once every
count clock period (DIV[15:0]+1). Similar to TMRx_PR register, when the periodic buffer is enabled, the
value in the TMRx_DIV register is updated to the shadow register at an overflow event.
An overflow event is generated by default. Set OVFEN=1 in the TMRx_CTRL1 to disable generation of
update events. The OVFS bit in the TMRx_CTRL1 register is used to select overflow event source. By
default, counter overflow/underflow, setting OVFSWTR bit and the reset signal generated by the slave
timer controller in reset mode trigger the generation of an overflow event. When the OVFS bit is set, only
counter overflow/underflow triggers an overflow event.
Setting the TMREN bit (TMREN=1) enables the timer to start counting. Base on synchronization logic,
however, the actual enable signal TMR_EN is set 1 clock cycle after the TMREN is set.
Figure 14-125 Counter structure
Overflow event
(CNT_overflow)
Overflow event
TMRx_PR
Preload
Overflow event
PR_shadow
1
0
TMRx_DIV
Preload
PRBEN
DIV_shadow
0
1
PRBEN
DIV_counter
CNT_counter
TMR_CLK
DIV_overflow
Upcounting mode
Set CMSEL[1:0]=2’b00 and OWCDIR=1’b0 in the TMRx_CTRL1 register to enable upcounting mode. In
this mode, the counter counts from 0 to the value programmed in the TMRx_PR register, then restarts
from 0, and generates a counter overflow event, with the OVFIF bit being set to 1. If the overflow event
is disabled, the counter is no longer reloaded with the preload value and period value at a counter
overflow event; otherwise, the counter is updated with the preload value and period value on an overflow
event.
Figure 14-136 Overflow event when PRBEN=0
0
1
2
3
...
21
22
0
1
2
3
...
31
32
0
1
2
3
COUNTER
31
32
0
1
32
...
PR[15:0]
OVFIF
TMR_CLK
0
DIV[15:0]
22
Clear
Clear
Clear