As with every other peripheral, we'll have to initialize this timer before we can use it. And just as in the previous section, initialization is going to involve two steps: powering up the timer and then configuring it.
Powering up the timer is easy: We just have to set
TIM7EN bit to 1. This bit
is in the
APB1ENR register of the
RCC register block.
// Power on the TIM7 timer rcc.apb1enr.modify(|_, w| w.tim7en(true));
The configuration part is slightly more elaborate.
First, we'll have to configure the timer to operate in one pulse mode.
// OPM Select one pulse mode // CEN Keep the counter disabled for now tim7.cr1.write(|w| w.opm(false).cen(false));
Then, we'll like to have the
CNT counter operate at a frequency of 1 KHz
delay function takes a number of milliseconds as arguments and 1
KHz produces a 1 millisecond period.
// Configure the prescaler to have the counter operate at 1 KHz tim7.psc.write(|w| w.psc(x));
I'm going to leave it to you to figure out the value of the prescaler,
Remember that the frequency of the counter is
APB1_CLOCK / (PSC + 1) and that
APB1_CLOCK is 8 MHz.