Skip to content

Commit

Permalink
*: add initial implementation for efm32gg11b820
Browse files Browse the repository at this point in the history
This adds timers 4, 5, and 6; adds the routing definitions for the
efm32gg11b820; and adds support for timers with different register
widths.

Some basic tests were done on the GPIOs, but I didn't test the PWM
functionality.
  • Loading branch information
crawford committed May 20, 2019
1 parent defca11 commit ab031de
Show file tree
Hide file tree
Showing 7 changed files with 342 additions and 8 deletions.
6 changes: 6 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ embedded-hal = { version = "0.2.0", features = ["unproven"] }
# even smoother.

efm32gg990 = { version = "0.1.2", optional = true }
efm32gg11b820 = { version = "0.7.0", optional = true }
efr32xg1 = { version = "0.2.0", optional = true }

[features]
Expand All @@ -40,10 +41,15 @@ unproven = []
_routing_per_function = []

chip-efm32gg = [ "efm32gg990", "_has_timer2", "_has_timer3" ]
chip-efm32gg11b820 = [ "efm32gg11b820", "_has_timer2", "_has_timer3", "_has_timer4", "_has_timer5", "_has_timer6", "_routing_per_function", "_has_channel3" ]
chip-efr32xg1 = [ "efr32xg1", "_routing_per_function" ]

# Marker features pulled in by the individual chip features. Enabling them
# manually results in build-time errors (as clocks or peripherals are accessed
# that are not available).
_has_timer2 = []
_has_timer3 = []
_has_timer4 = []
_has_timer5 = []
_has_timer6 = []
_has_channel3 = []
22 changes: 20 additions & 2 deletions src/cmu.rs
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,12 @@ pub struct Clocks {
pub timer2: TIMER2Clk,
#[cfg(feature = "_has_timer3")]
pub timer3: TIMER3Clk,
#[cfg(feature = "_has_timer4")]
pub timer4: TIMER4Clk,
#[cfg(feature = "_has_timer5")]
pub timer5: TIMER5Clk,
#[cfg(feature = "_has_timer6")]
pub timer6: TIMER6Clk,
}

pub struct I2C0Clk {
Expand Down Expand Up @@ -96,6 +102,12 @@ timerclk!(TIMER1Clk, timer1);
timerclk!(TIMER2Clk, timer2);
#[cfg(feature = "_has_timer3")]
timerclk!(TIMER3Clk, timer3);
#[cfg(feature = "_has_timer4")]
timerclk!(TIMER4Clk, timer4);
#[cfg(feature = "_has_timer5")]
timerclk!(TIMER5Clk, timer5);
#[cfg(feature = "_has_timer6")]
timerclk!(TIMER6Clk, timer6);

pub struct GPIOClk {
_private: (),
Expand All @@ -108,7 +120,7 @@ impl GPIOClk {
let cmu = &*registers::CMU::ptr();
#[cfg(feature = "chip-efm32gg")]
cmu.hfperclken0.modify(|_, w| w.gpio().bit(true));
#[cfg(feature = "chip-efr32xg1")]
#[cfg(any(feature = "chip-efr32xg1", feature = "chip-efm32gg11b820"))]
cmu.hfbusclken0.modify(|_, w| w.gpio().bit(true));
}
}
Expand All @@ -126,6 +138,12 @@ impl Cmu {
timer2: TIMER2Clk { _private: () },
#[cfg(feature = "_has_timer3")]
timer3: TIMER3Clk { _private: () },
#[cfg(feature = "_has_timer4")]
timer4: TIMER4Clk { _private: () },
#[cfg(feature = "_has_timer5")]
timer5: TIMER5Clk { _private: () },
#[cfg(feature = "_has_timer6")]
timer6: TIMER6Clk { _private: () },
}
}
}
Expand All @@ -142,7 +160,7 @@ impl FrozenClock for HFCoreClk {
{
Hertz(14_000_000)
}
#[cfg(feature = "chip-efr32xg1")]
#[cfg(any(feature = "chip-efr32xg1", feature = "chip-efm32gg11b820"))]
{
Hertz(19_000_000)
}
Expand Down
48 changes: 48 additions & 0 deletions src/gpio.rs
Original file line number Diff line number Diff line change
Expand Up @@ -269,4 +269,52 @@ gpio!([
PF13: (pf13, 13, pf_din, pf_dout, mode13, pf_modeh),
PF14: (pf14, 14, pf_din, pf_dout, mode14, pf_modeh),
PF15: (pf15, 15, pf_din, pf_dout, mode15, pf_modeh),
PG0: (pg0, 0, pg_din, pg_dout, mode0, pg_model),
PG1: (pg1, 1, pg_din, pg_dout, mode1, pg_model),
PG2: (pg2, 2, pg_din, pg_dout, mode2, pg_model),
PG3: (pg3, 3, pg_din, pg_dout, mode3, pg_model),
PG4: (pg4, 4, pg_din, pg_dout, mode4, pg_model),
PG5: (pg5, 5, pg_din, pg_dout, mode5, pg_model),
PG6: (pg6, 6, pg_din, pg_dout, mode6, pg_model),
PG7: (pg7, 7, pg_din, pg_dout, mode7, pg_model),
PG8: (pg8, 8, pg_din, pg_dout, mode8, pg_modeh),
PG9: (pg9, 9, pg_din, pg_dout, mode9, pg_modeh),
PG10: (pg10, 10, pg_din, pg_dout, mode10, pg_modeh),
PG11: (pg11, 11, pg_din, pg_dout, mode11, pg_modeh),
PG12: (pg12, 12, pg_din, pg_dout, mode12, pg_modeh),
PG13: (pg13, 13, pg_din, pg_dout, mode13, pg_modeh),
PG14: (pg14, 14, pg_din, pg_dout, mode14, pg_modeh),
PG15: (pg15, 15, pg_din, pg_dout, mode15, pg_modeh),
PH0: (ph0, 0, ph_din, ph_dout, mode0, ph_model),
PH1: (ph1, 1, ph_din, ph_dout, mode1, ph_model),
PH2: (ph2, 2, ph_din, ph_dout, mode2, ph_model),
PH3: (ph3, 3, ph_din, ph_dout, mode3, ph_model),
PH4: (ph4, 4, ph_din, ph_dout, mode4, ph_model),
PH5: (ph5, 5, ph_din, ph_dout, mode5, ph_model),
PH6: (ph6, 6, ph_din, ph_dout, mode6, ph_model),
PH7: (ph7, 7, ph_din, ph_dout, mode7, ph_model),
PH8: (ph8, 8, ph_din, ph_dout, mode8, ph_modeh),
PH9: (ph9, 9, ph_din, ph_dout, mode9, ph_modeh),
PH10: (ph10, 10, ph_din, ph_dout, mode10, ph_modeh),
PH11: (ph11, 11, ph_din, ph_dout, mode11, ph_modeh),
PH12: (ph12, 12, ph_din, ph_dout, mode12, ph_modeh),
PH13: (ph13, 13, ph_din, ph_dout, mode13, ph_modeh),
PH14: (ph14, 14, ph_din, ph_dout, mode14, ph_modeh),
PH15: (ph15, 15, ph_din, ph_dout, mode15, ph_modeh),
PI0: (pi0, 0, pi_din, pi_dout, mode0, pi_model),
PI1: (pi1, 1, pi_din, pi_dout, mode1, pi_model),
PI2: (pi2, 2, pi_din, pi_dout, mode2, pi_model),
PI3: (pi3, 3, pi_din, pi_dout, mode3, pi_model),
PI4: (pi4, 4, pi_din, pi_dout, mode4, pi_model),
PI5: (pi5, 5, pi_din, pi_dout, mode5, pi_model),
PI6: (pi6, 6, pi_din, pi_dout, mode6, pi_model),
PI7: (pi7, 7, pi_din, pi_dout, mode7, pi_model),
PI8: (pi8, 8, pi_din, pi_dout, mode8, pi_modeh),
PI9: (pi9, 9, pi_din, pi_dout, mode9, pi_modeh),
PI10: (pi10, 10, pi_din, pi_dout, mode10, pi_modeh),
PI11: (pi11, 11, pi_din, pi_dout, mode11, pi_modeh),
PI12: (pi12, 12, pi_din, pi_dout, mode12, pi_modeh),
PI13: (pi13, 13, pi_din, pi_dout, mode13, pi_modeh),
PI14: (pi14, 14, pi_din, pi_dout, mode14, pi_modeh),
PI15: (pi15, 15, pi_din, pi_dout, mode15, pi_modeh),
]);
2 changes: 2 additions & 0 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
extern crate cortex_m;
extern crate embedded_hal;

#[cfg(feature = "chip-efm32gg11b820")]
extern crate efm32gg11b820 as registers;
#[cfg(feature = "chip-efm32gg")]
extern crate efm32gg990 as registers;
#[cfg(feature = "chip-efr32xg1")]
Expand Down
2 changes: 2 additions & 0 deletions src/routing.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,7 @@ mod per_peripheral;

#[cfg(feature = "chip-efm32gg")]
mod efm32gg;
#[cfg(feature = "chip-efm32gg11b820")]
mod efm32gg11;
#[cfg(feature = "chip-efr32xg1")]
mod efr32xg1;
202 changes: 202 additions & 0 deletions src/routing/efm32gg11.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,202 @@
use super::per_function::timerchannel_pin;
use crate::timer::{
Channel0, Channel1, Channel2, Channel3, Timer0, Timer1, Timer2, Timer3, Timer4, Timer5, Timer6,
};

timerchannel_pin!(Timer0, Channel0, PA0, loc0, cc0loc, cc0pen);
timerchannel_pin!(Timer0, Channel0, PF6, loc1, cc0loc, cc0pen);
timerchannel_pin!(Timer0, Channel0, PD1, loc2, cc0loc, cc0pen);
timerchannel_pin!(Timer0, Channel0, PB6, loc3, cc0loc, cc0pen);
timerchannel_pin!(Timer0, Channel0, PF0, loc4, cc0loc, cc0pen);
timerchannel_pin!(Timer0, Channel0, PC4, loc5, cc0loc, cc0pen);
timerchannel_pin!(Timer0, Channel0, PA8, loc6, cc0loc, cc0pen);
timerchannel_pin!(Timer0, Channel0, PA1, loc7, cc0loc, cc0pen);

timerchannel_pin!(Timer0, Channel1, PA1, loc0, cc1loc, cc1pen);
timerchannel_pin!(Timer0, Channel1, PF7, loc1, cc1loc, cc1pen);
timerchannel_pin!(Timer0, Channel1, PD2, loc2, cc1loc, cc1pen);
timerchannel_pin!(Timer0, Channel1, PC0, loc3, cc1loc, cc1pen);
timerchannel_pin!(Timer0, Channel1, PF1, loc4, cc1loc, cc1pen);
timerchannel_pin!(Timer0, Channel1, PC5, loc5, cc1loc, cc1pen);
timerchannel_pin!(Timer0, Channel1, PA9, loc6, cc1loc, cc1pen);
timerchannel_pin!(Timer0, Channel1, PA0, loc7, cc1loc, cc1pen);

timerchannel_pin!(Timer0, Channel2, PA2, loc0, cc2loc, cc2pen);
timerchannel_pin!(Timer0, Channel2, PF8, loc1, cc2loc, cc2pen);
timerchannel_pin!(Timer0, Channel2, PD3, loc2, cc2loc, cc2pen);
timerchannel_pin!(Timer0, Channel2, PC1, loc3, cc2loc, cc2pen);
timerchannel_pin!(Timer0, Channel2, PF2, loc4, cc2loc, cc2pen);
timerchannel_pin!(Timer0, Channel2, PA7, loc5, cc2loc, cc2pen);
timerchannel_pin!(Timer0, Channel2, PA10, loc6, cc2loc, cc2pen);
timerchannel_pin!(Timer0, Channel2, PA13, loc7, cc2loc, cc2pen);

timerchannel_pin!(Timer1, Channel0, PC13, loc0, cc0loc, cc0pen);
timerchannel_pin!(Timer1, Channel0, PE10, loc1, cc0loc, cc0pen);
timerchannel_pin!(Timer1, Channel0, PB0, loc2, cc0loc, cc0pen);
timerchannel_pin!(Timer1, Channel0, PB7, loc3, cc0loc, cc0pen);
timerchannel_pin!(Timer1, Channel0, PD6, loc4, cc0loc, cc0pen);
timerchannel_pin!(Timer1, Channel0, PF2, loc5, cc0loc, cc0pen);
timerchannel_pin!(Timer1, Channel0, PF13, loc6, cc0loc, cc0pen);
timerchannel_pin!(Timer1, Channel0, PI6, loc7, cc0loc, cc0pen);

timerchannel_pin!(Timer1, Channel1, PC14, loc0, cc1loc, cc1pen);
timerchannel_pin!(Timer1, Channel1, PE11, loc1, cc1loc, cc1pen);
timerchannel_pin!(Timer1, Channel1, PB1, loc2, cc1loc, cc1pen);
timerchannel_pin!(Timer1, Channel1, PB8, loc3, cc1loc, cc1pen);
timerchannel_pin!(Timer1, Channel1, PD7, loc4, cc1loc, cc1pen);
timerchannel_pin!(Timer1, Channel1, PF3, loc5, cc1loc, cc1pen);
timerchannel_pin!(Timer1, Channel1, PF14, loc6, cc1loc, cc1pen);
timerchannel_pin!(Timer1, Channel1, PI7, loc7, cc1loc, cc1pen);

timerchannel_pin!(Timer1, Channel2, PC15, loc0, cc2loc, cc2pen);
timerchannel_pin!(Timer1, Channel2, PE12, loc1, cc2loc, cc2pen);
timerchannel_pin!(Timer1, Channel2, PB2, loc2, cc2loc, cc2pen);
timerchannel_pin!(Timer1, Channel2, PB11, loc3, cc2loc, cc2pen);
timerchannel_pin!(Timer1, Channel2, PC13, loc4, cc2loc, cc2pen);
timerchannel_pin!(Timer1, Channel2, PF4, loc5, cc2loc, cc2pen);
timerchannel_pin!(Timer1, Channel2, PF15, loc6, cc2loc, cc2pen);
timerchannel_pin!(Timer1, Channel2, PI8, loc7, cc2loc, cc2pen);

timerchannel_pin!(Timer1, Channel3, PC12, loc0, cc3loc, cc3pen);
timerchannel_pin!(Timer1, Channel3, PE13, loc1, cc3loc, cc3pen);
timerchannel_pin!(Timer1, Channel3, PB3, loc2, cc3loc, cc3pen);
timerchannel_pin!(Timer1, Channel3, PB12, loc3, cc3loc, cc3pen);
timerchannel_pin!(Timer1, Channel3, PC14, loc4, cc3loc, cc3pen);
timerchannel_pin!(Timer1, Channel3, PF12, loc5, cc3loc, cc3pen);
timerchannel_pin!(Timer1, Channel3, PF5, loc6, cc3loc, cc3pen);
timerchannel_pin!(Timer1, Channel3, PI9, loc7, cc3loc, cc3pen);

timerchannel_pin!(Timer2, Channel0, PA8, loc0, cc0loc, cc0pen);
timerchannel_pin!(Timer2, Channel0, PA12, loc1, cc0loc, cc0pen);
timerchannel_pin!(Timer2, Channel0, PC8, loc2, cc0loc, cc0pen);
timerchannel_pin!(Timer2, Channel0, PF2, loc3, cc0loc, cc0pen);
timerchannel_pin!(Timer2, Channel0, PB6, loc4, cc0loc, cc0pen);
timerchannel_pin!(Timer2, Channel0, PC2, loc5, cc0loc, cc0pen);
timerchannel_pin!(Timer2, Channel0, PG8, loc6, cc0loc, cc0pen);
timerchannel_pin!(Timer2, Channel0, PG5, loc7, cc0loc, cc0pen);

timerchannel_pin!(Timer2, Channel1, PA9, loc0, cc1loc, cc1pen);
timerchannel_pin!(Timer2, Channel1, PA13, loc1, cc1loc, cc1pen);
timerchannel_pin!(Timer2, Channel1, PC9, loc2, cc1loc, cc1pen);
timerchannel_pin!(Timer2, Channel1, PE12, loc3, cc1loc, cc1pen);
timerchannel_pin!(Timer2, Channel1, PC0, loc4, cc1loc, cc1pen);
timerchannel_pin!(Timer2, Channel1, PC3, loc5, cc1loc, cc1pen);
timerchannel_pin!(Timer2, Channel1, PG9, loc6, cc1loc, cc1pen);
timerchannel_pin!(Timer2, Channel1, PG6, loc7, cc1loc, cc1pen);

timerchannel_pin!(Timer2, Channel2, PA10, loc0, cc2loc, cc2pen);
timerchannel_pin!(Timer2, Channel2, PA14, loc1, cc2loc, cc2pen);
timerchannel_pin!(Timer2, Channel2, PC10, loc2, cc2loc, cc2pen);
timerchannel_pin!(Timer2, Channel2, PE13, loc3, cc2loc, cc2pen);
timerchannel_pin!(Timer2, Channel2, PC1, loc4, cc2loc, cc2pen);
timerchannel_pin!(Timer2, Channel2, PC4, loc5, cc2loc, cc2pen);
timerchannel_pin!(Timer2, Channel2, PG10, loc6, cc2loc, cc2pen);
timerchannel_pin!(Timer2, Channel2, PG7, loc7, cc2loc, cc2pen);

timerchannel_pin!(Timer3, Channel0, PE14, loc0, cc0loc, cc0pen);
timerchannel_pin!(Timer3, Channel0, PE0, loc1, cc0loc, cc0pen);
timerchannel_pin!(Timer3, Channel0, PE3, loc2, cc0loc, cc0pen);
timerchannel_pin!(Timer3, Channel0, PE5, loc3, cc0loc, cc0pen);
timerchannel_pin!(Timer3, Channel0, PA0, loc4, cc0loc, cc0pen);
timerchannel_pin!(Timer3, Channel0, PA3, loc5, cc0loc, cc0pen);
timerchannel_pin!(Timer3, Channel0, PA6, loc6, cc0loc, cc0pen);
timerchannel_pin!(Timer3, Channel0, PD15, loc7, cc0loc, cc0pen);

timerchannel_pin!(Timer3, Channel1, PE15, loc0, cc1loc, cc1pen);
timerchannel_pin!(Timer3, Channel1, PE1, loc1, cc1loc, cc1pen);
timerchannel_pin!(Timer3, Channel1, PE4, loc2, cc1loc, cc1pen);
timerchannel_pin!(Timer3, Channel1, PE6, loc3, cc1loc, cc1pen);
timerchannel_pin!(Timer3, Channel1, PA1, loc4, cc1loc, cc1pen);
timerchannel_pin!(Timer3, Channel1, PA4, loc5, cc1loc, cc1pen);
timerchannel_pin!(Timer3, Channel1, PD13, loc6, cc1loc, cc1pen);
timerchannel_pin!(Timer3, Channel1, PB15, loc7, cc1loc, cc1pen);

timerchannel_pin!(Timer3, Channel2, PA15, loc0, cc2loc, cc2pen);
timerchannel_pin!(Timer3, Channel2, PE2, loc1, cc2loc, cc2pen);
timerchannel_pin!(Timer3, Channel2, PE5, loc2, cc2loc, cc2pen);
timerchannel_pin!(Timer3, Channel2, PE7, loc3, cc2loc, cc2pen);
timerchannel_pin!(Timer3, Channel2, PA2, loc4, cc2loc, cc2pen);
timerchannel_pin!(Timer3, Channel2, PA5, loc5, cc2loc, cc2pen);
timerchannel_pin!(Timer3, Channel2, PD14, loc6, cc2loc, cc2pen);
timerchannel_pin!(Timer3, Channel2, PB0, loc7, cc2loc, cc2pen);

timerchannel_pin!(Timer4, Channel0, PF3, loc0, cc0loc, cc0pen);
timerchannel_pin!(Timer4, Channel0, PF13, loc1, cc0loc, cc0pen);
timerchannel_pin!(Timer4, Channel0, PF5, loc2, cc0loc, cc0pen);
timerchannel_pin!(Timer4, Channel0, PF6, loc4, cc0loc, cc0pen);
timerchannel_pin!(Timer4, Channel0, PI8, loc3, cc0loc, cc0pen);
timerchannel_pin!(Timer4, Channel0, PF9, loc5, cc0loc, cc0pen);
timerchannel_pin!(Timer4, Channel0, PD11, loc6, cc0loc, cc0pen);
timerchannel_pin!(Timer4, Channel0, PE9, loc7, cc0loc, cc0pen);

timerchannel_pin!(Timer4, Channel1, PF4, loc0, cc1loc, cc1pen);
timerchannel_pin!(Timer4, Channel1, PF14, loc1, cc1loc, cc1pen);
timerchannel_pin!(Timer4, Channel1, PI6, loc2, cc1loc, cc1pen);
timerchannel_pin!(Timer4, Channel1, PI9, loc3, cc1loc, cc1pen);
timerchannel_pin!(Timer4, Channel1, PF7, loc4, cc1loc, cc1pen);
timerchannel_pin!(Timer4, Channel1, PD9, loc5, cc1loc, cc1pen);
timerchannel_pin!(Timer4, Channel1, PD12, loc6, cc1loc, cc1pen);
timerchannel_pin!(Timer4, Channel1, PE10, loc7, cc0loc, cc0pen);

timerchannel_pin!(Timer4, Channel2, PF12, loc0, cc2loc, cc2pen);
timerchannel_pin!(Timer4, Channel2, PF15, loc1, cc2loc, cc2pen);
timerchannel_pin!(Timer4, Channel2, PI7, loc2, cc2loc, cc2pen);
timerchannel_pin!(Timer4, Channel2, PI10, loc3, cc2loc, cc2pen);
timerchannel_pin!(Timer4, Channel2, PF8, loc4, cc2loc, cc2pen);
timerchannel_pin!(Timer4, Channel2, PD10, loc5, cc2loc, cc2pen);
timerchannel_pin!(Timer4, Channel2, PE8, loc6, cc2loc, cc2pen);
timerchannel_pin!(Timer4, Channel2, PE11, loc7, cc2loc, cc2pen);

timerchannel_pin!(Timer5, Channel0, PE4, loc0, cc0loc, cc0pen);
timerchannel_pin!(Timer5, Channel0, PE7, loc1, cc0loc, cc0pen);
timerchannel_pin!(Timer5, Channel0, PH13, loc2, cc0loc, cc0pen);
timerchannel_pin!(Timer5, Channel0, PI0, loc3, cc0loc, cc0pen);
timerchannel_pin!(Timer5, Channel0, PC8, loc4, cc0loc, cc0pen);
timerchannel_pin!(Timer5, Channel0, PC11, loc5, cc0loc, cc0pen);
timerchannel_pin!(Timer5, Channel0, PC14, loc6, cc0loc, cc0pen);
timerchannel_pin!(Timer5, Channel0, PF12, loc7, cc0loc, cc0pen);

timerchannel_pin!(Timer5, Channel1, PE5, loc0, cc1loc, cc1pen);
timerchannel_pin!(Timer5, Channel1, PH11, loc1, cc1loc, cc1pen);
timerchannel_pin!(Timer5, Channel1, PH14, loc2, cc1loc, cc1pen);
timerchannel_pin!(Timer5, Channel1, PI1, loc3, cc1loc, cc1pen);
timerchannel_pin!(Timer5, Channel1, PC9, loc4, cc1loc, cc1pen);
timerchannel_pin!(Timer5, Channel1, PC12, loc5, cc1loc, cc1pen);
timerchannel_pin!(Timer5, Channel1, PF10, loc6, cc1loc, cc1pen);
timerchannel_pin!(Timer5, Channel1, PF13, loc7, cc1loc, cc1pen);

timerchannel_pin!(Timer5, Channel2, PE6, loc0, cc2loc, cc2pen);
timerchannel_pin!(Timer5, Channel2, PH12, loc1, cc2loc, cc2pen);
timerchannel_pin!(Timer5, Channel2, PH15, loc2, cc2loc, cc2pen);
timerchannel_pin!(Timer5, Channel2, PI2, loc3, cc2loc, cc2pen);
timerchannel_pin!(Timer5, Channel2, PC10, loc4, cc2loc, cc2pen);
timerchannel_pin!(Timer5, Channel2, PC13, loc5, cc2loc, cc2pen);
timerchannel_pin!(Timer5, Channel2, PF11, loc6, cc2loc, cc2pen);
timerchannel_pin!(Timer5, Channel2, PF14, loc7, cc2loc, cc2pen);

timerchannel_pin!(Timer6, Channel0, PG0, loc0, cc0loc, cc0pen);
timerchannel_pin!(Timer6, Channel0, PG6, loc1, cc0loc, cc0pen);
timerchannel_pin!(Timer6, Channel0, PG12, loc2, cc0loc, cc0pen);
timerchannel_pin!(Timer6, Channel0, PH2, loc3, cc0loc, cc0pen);
timerchannel_pin!(Timer6, Channel0, PH8, loc4, cc0loc, cc0pen);
timerchannel_pin!(Timer6, Channel0, PB13, loc5, cc0loc, cc0pen);
timerchannel_pin!(Timer6, Channel0, PD1, loc6, cc0loc, cc0pen);
timerchannel_pin!(Timer6, Channel0, PD4, loc7, cc0loc, cc0pen);

timerchannel_pin!(Timer6, Channel1, PG1, loc0, cc1loc, cc1pen);
timerchannel_pin!(Timer6, Channel1, PG7, loc1, cc1loc, cc1pen);
timerchannel_pin!(Timer6, Channel1, PG13, loc2, cc1loc, cc1pen);
timerchannel_pin!(Timer6, Channel1, PH3, loc3, cc1loc, cc1pen);
timerchannel_pin!(Timer6, Channel1, PH9, loc4, cc1loc, cc1pen);
timerchannel_pin!(Timer6, Channel1, PB14, loc5, cc1loc, cc1pen);
timerchannel_pin!(Timer6, Channel1, PD2, loc6, cc0loc, cc0pen);
timerchannel_pin!(Timer6, Channel1, PD5, loc7, cc1loc, cc1pen);

timerchannel_pin!(Timer6, Channel2, PG2, loc0, cc2loc, cc2pen);
timerchannel_pin!(Timer6, Channel2, PG8, loc1, cc2loc, cc2pen);
timerchannel_pin!(Timer6, Channel2, PG14, loc2, cc2loc, cc2pen);
timerchannel_pin!(Timer6, Channel2, PH4, loc3, cc2loc, cc2pen);
timerchannel_pin!(Timer6, Channel2, PH10, loc4, cc2loc, cc2pen);
timerchannel_pin!(Timer6, Channel2, PD0, loc5, cc2loc, cc2pen);
timerchannel_pin!(Timer6, Channel2, PD3, loc6, cc2loc, cc2pen);
timerchannel_pin!(Timer6, Channel2, PD6, loc7, cc2loc, cc2pen);
Loading

0 comments on commit ab031de

Please sign in to comment.