forked from M-Labs/kirdy
87 lines
2.1 KiB
Rust
87 lines
2.1 KiB
Rust
|
use stm32f4xx_hal::{
|
||
|
adc::Adc,
|
||
|
gpio::{
|
||
|
AF5, Alternate, AlternateOD, Analog, Floating, Input,
|
||
|
gpioa::*,
|
||
|
gpiob::*,
|
||
|
gpioc::*,
|
||
|
gpioe::*,
|
||
|
gpiof::*,
|
||
|
gpiog::*,
|
||
|
GpioExt,
|
||
|
Output, PushPull,
|
||
|
},
|
||
|
hal::{self, blocking::spi::Transfer, digital::v2::OutputPin},
|
||
|
otg_fs::USB,
|
||
|
rcc::Clocks,
|
||
|
pwm::{self, PwmChannels},
|
||
|
spi::{Spi, NoMiso, TransferModeNormal},
|
||
|
pac::{
|
||
|
ADC1,
|
||
|
GPIOA, GPIOB, GPIOC, GPIOD, GPIOE, GPIOF, GPIOG,
|
||
|
OTG_FS_GLOBAL, OTG_FS_DEVICE, OTG_FS_PWRCLK,
|
||
|
SPI1, SPI2, SPI3,
|
||
|
TIM4
|
||
|
},
|
||
|
timer::Timer,
|
||
|
time::U32Ext,
|
||
|
};
|
||
|
|
||
|
use stm32_eth::EthPins;
|
||
|
pub type EthernetPins = EthPins<
|
||
|
PA1<Input<Floating>>,
|
||
|
PA7<Input<Floating>>,
|
||
|
PB11<Input<Floating>>,
|
||
|
PG13<Input<Floating>>,
|
||
|
PB13<Input<Floating>>,
|
||
|
PC4<Input<Floating>>,
|
||
|
PC5<Input<Floating>>,
|
||
|
>;
|
||
|
|
||
|
impl thermostatPins for thermostat {
|
||
|
type DacSpi = Dac0Spi;
|
||
|
type DacSync = PE4<Output<PushPull>>;
|
||
|
type Shdn = PE10<Output<PushPull>>;
|
||
|
type VRefPin = PA0<Analog>;
|
||
|
type ItecPin = PA6<Analog>;
|
||
|
type DacFeedbackPin = PA4<Analog>;
|
||
|
type TecUMeasPin = PC2<Analog>;
|
||
|
}
|
||
|
|
||
|
pub struct thermostatPinSet {
|
||
|
pub dac_spi: Transfer<u8>,
|
||
|
pub dac_sync: OutputPin,
|
||
|
pub shdn: OutputPin,
|
||
|
pub vref_pin: VRefPin,
|
||
|
pub itec_pin: ItecPin,
|
||
|
pub dac_feedback_pin: DacFeedbackPin,
|
||
|
pub tec_u_meas_pin: TecUMeasPin,
|
||
|
}
|
||
|
|
||
|
pub struct Pins {
|
||
|
pub thermostat: thermostatPinSet,
|
||
|
}
|
||
|
|
||
|
impl Pins {
|
||
|
|
||
|
pub fn setup(
|
||
|
clocks: Clocks,
|
||
|
tim4: TIM4,
|
||
|
gpioa: GPIOA, gpiob: GPIOB, gpioc: GPIOC, gpiod: GPIOD, gpioe: GPIOE, gpiof: GPIOF, gpiog: GPIOG,
|
||
|
spi1: SPI1, spi2: SPI2, spi3: SPI3,
|
||
|
adc1: ADC1,
|
||
|
otg_fs_global: OTG_FS_GLOBAL, otg_fs_device: OTG_FS_DEVICE, otg_fs_pwrclk: OTG_FS_PWRCLK,
|
||
|
) -> (Self, EthernetPins, USB) {
|
||
|
let gpioa = gpioa.split();
|
||
|
let gpiob = gpiob.split();
|
||
|
let gpioc = gpioc.split();
|
||
|
let gpiod = gpiod.split();
|
||
|
let gpioe = gpioe.split();
|
||
|
let gpiof = gpiof.split();
|
||
|
let gpiog = gpiog.split();
|
||
|
|
||
|
|
||
|
|
||
|
}
|
||
|
|
||
|
}
|