Get rid of the TODO about variant names, stop the timer before setting BITMODE and set a default frequency.
This commit is contained in:
parent
e7addf094b
commit
e5a5031f20
@ -64,7 +64,7 @@ macro_rules! impl_timer {
|
|||||||
|
|
||||||
#[repr(u8)]
|
#[repr(u8)]
|
||||||
pub enum Frequency {
|
pub enum Frequency {
|
||||||
// TODO: These variant names are terrible, what should they be?
|
// I'd prefer not to prefix these with `F`, but Rust identifiers can't start with digits.
|
||||||
F16MHz = 0,
|
F16MHz = 0,
|
||||||
F8MHz = 1,
|
F8MHz = 1,
|
||||||
F4MHz = 2,
|
F4MHz = 2,
|
||||||
@ -108,6 +108,14 @@ impl<'d, T: Instance> Timer<'d, T> {
|
|||||||
pub(crate) fn new_irqless(_timer: impl Unborrow<Target = T> + 'd) -> Self {
|
pub(crate) fn new_irqless(_timer: impl Unborrow<Target = T> + 'd) -> Self {
|
||||||
let regs = T::regs();
|
let regs = T::regs();
|
||||||
|
|
||||||
|
let mut this = Self {
|
||||||
|
phantom: PhantomData,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Stop the timer before doing anything else,
|
||||||
|
// since changing BITMODE while running can cause 'unpredictable behaviour' according to the specification.
|
||||||
|
this.stop();
|
||||||
|
|
||||||
// Set the instance to timer mode.
|
// Set the instance to timer mode.
|
||||||
regs.mode.write(|w| w.mode().timer());
|
regs.mode.write(|w| w.mode().timer());
|
||||||
|
|
||||||
@ -115,16 +123,12 @@ impl<'d, T: Instance> Timer<'d, T> {
|
|||||||
// TODO: is there a reason someone would want to set this lower?
|
// TODO: is there a reason someone would want to set this lower?
|
||||||
regs.bitmode.write(|w| w.bitmode()._32bit());
|
regs.bitmode.write(|w| w.bitmode()._32bit());
|
||||||
|
|
||||||
let mut this = Self {
|
|
||||||
phantom: PhantomData,
|
|
||||||
};
|
|
||||||
|
|
||||||
// Initialize the timer as stopped.
|
|
||||||
this.stop();
|
|
||||||
|
|
||||||
// Initialize the counter at 0.
|
// Initialize the counter at 0.
|
||||||
this.clear();
|
this.clear();
|
||||||
|
|
||||||
|
// Default to the max frequency of the lower power clock
|
||||||
|
this.set_frequency(Frequency::F1MHz);
|
||||||
|
|
||||||
for n in 0..T::CCS {
|
for n in 0..T::CCS {
|
||||||
let cc = this.cc(n);
|
let cc = this.cc(n);
|
||||||
// Initialize all the shorts as disabled.
|
// Initialize all the shorts as disabled.
|
||||||
|
Loading…
Reference in New Issue
Block a user