mirror of
https://github.com/italicsjenga/rp-hal-boards.git
synced 2024-12-23 20:51:31 +11:00
Refactor Uart initialization
This commit is contained in:
parent
6ab9cd7ed3
commit
26fa532fa3
|
@ -94,13 +94,12 @@ fn main() -> ! {
|
|||
&mut pac.RESETS,
|
||||
);
|
||||
|
||||
let mut uart = hal::uart::UartPeripheral::<_, _>::enable(
|
||||
pac.UART0,
|
||||
&mut pac.RESETS,
|
||||
hal::uart::common_configs::_115200_8_N_1,
|
||||
clocks.peripheral_clock.into(),
|
||||
)
|
||||
.unwrap();
|
||||
let mut uart = hal::uart::UartPeripheral::<_, _>::new(pac.UART0, &mut pac.RESETS)
|
||||
.enable(
|
||||
hal::uart::common_configs::_115200_8_N_1,
|
||||
clocks.peripheral_clock.into(),
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
// UART TX (characters sent from RP2040) on pin 1 (GPIO0)
|
||||
let _tx_pin = pins.gpio0.into_mode::<hal::gpio::FunctionUart>();
|
||||
|
|
|
@ -85,13 +85,12 @@ fn main() -> ! {
|
|||
);
|
||||
|
||||
// Create a UART driver
|
||||
let mut uart = hal::uart::UartPeripheral::<_, _>::enable(
|
||||
pac.UART0,
|
||||
&mut pac.RESETS,
|
||||
hal::uart::common_configs::_9600_8_N_1,
|
||||
clocks.peripheral_clock.into(),
|
||||
)
|
||||
.unwrap();
|
||||
let mut uart = hal::uart::UartPeripheral::<_, _>::new(pac.UART0, &mut pac.RESETS)
|
||||
.enable(
|
||||
hal::uart::common_configs::_9600_8_N_1,
|
||||
clocks.peripheral_clock.into(),
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
// UART TX (characters sent from pico) on pin 1 (GPIO0) and RX (on pin 2 (GPIO1)
|
||||
let _tx_pin = pins.gpio0.into_mode::<hal::gpio::FunctionUart>();
|
||||
|
|
|
@ -80,13 +80,12 @@ fn main() -> ! {
|
|||
&mut pac.RESETS,
|
||||
);
|
||||
|
||||
let mut uart = hal::uart::UartPeripheral::<_, _>::enable(
|
||||
pac.UART0,
|
||||
&mut pac.RESETS,
|
||||
hal::uart::common_configs::_9600_8_N_1,
|
||||
clocks.peripheral_clock.into(),
|
||||
)
|
||||
.unwrap();
|
||||
let mut uart = hal::uart::UartPeripheral::<_, _>::new(pac.UART0, &mut pac.RESETS)
|
||||
.enable(
|
||||
hal::uart::common_configs::_9600_8_N_1,
|
||||
clocks.peripheral_clock.into(),
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
// UART TX (characters sent from RP2040) on pin 1 (GPIO0)
|
||||
let _tx_pin = pins.gpio0.into_mode::<hal::gpio::FunctionUart>();
|
||||
|
|
|
@ -82,13 +82,12 @@ fn main() -> ! {
|
|||
&mut pac.RESETS,
|
||||
);
|
||||
|
||||
let mut uart = hal::uart::UartPeripheral::<_, _>::enable(
|
||||
pac.UART0,
|
||||
&mut pac.RESETS,
|
||||
hal::uart::common_configs::_9600_8_N_1,
|
||||
clocks.peripheral_clock.into(),
|
||||
)
|
||||
.unwrap();
|
||||
let mut uart = hal::uart::UartPeripheral::<_, _>::new(pac.UART0, &mut pac.RESETS)
|
||||
.enable(
|
||||
hal::uart::common_configs::_9600_8_N_1,
|
||||
clocks.peripheral_clock.into(),
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
// UART TX (characters sent from RP2040) on pin 1 (GPIO0)
|
||||
let _tx_pin = pins.gpio0.into_mode::<hal::gpio::FunctionUart>();
|
||||
|
|
|
@ -17,12 +17,12 @@
|
|||
//! let mut clocks = init_clocks_and_plls(XOSC_CRYSTAL_FREQ, peripherals.XOSC, peripherals.CLOCKS, peripherals.PLL_SYS, peripherals.PLL_USB, &mut peripherals.RESETS, &mut watchdog).ok().unwrap();
|
||||
//!
|
||||
//! // Need to perform clock init before using UART or it will freeze.
|
||||
//! let uart = UartPeripheral::<_, _>::enable(
|
||||
//! peripherals.UART0,
|
||||
//! &mut peripherals.RESETS,
|
||||
//! let uart = UartPeripheral::<_, _>::new(peripherals.UART0, &mut peripherals.RESETS)
|
||||
//! .enable(
|
||||
//! uart::common_configs::_9600_8_N_1,
|
||||
//! clocks.peripheral_clock.into(),
|
||||
//! ).unwrap();
|
||||
//! )
|
||||
//! .unwrap();
|
||||
//!
|
||||
//! // Set up UART on GP0 and GP1 (Pico pins 1 and 2)
|
||||
//! let _tx_pin = pins.gpio0.into_mode::<FunctionUart>();
|
||||
|
@ -222,15 +222,25 @@ impl<S: State, D: UartDevice> UartPeripheral<S, D> {
|
|||
}
|
||||
|
||||
impl<D: UartDevice> UartPeripheral<Disabled, D> {
|
||||
/// Creates an UartPeripheral in Disabled state.
|
||||
pub fn new(device: D, resets: &mut pac::RESETS) -> UartPeripheral<Disabled, D> {
|
||||
device.reset_bring_up(resets);
|
||||
|
||||
UartPeripheral {
|
||||
device,
|
||||
config: common_configs::_9600_8_N_1, // placeholder
|
||||
effective_baudrate: Baud(0),
|
||||
_state: Disabled,
|
||||
}
|
||||
}
|
||||
|
||||
/// Enables the provided UART device with the given configuration.
|
||||
pub fn enable(
|
||||
mut device: D,
|
||||
resets: &mut pac::RESETS,
|
||||
self,
|
||||
config: UartConfig,
|
||||
frequency: Hertz,
|
||||
) -> Result<UartPeripheral<Enabled, D>, Error> {
|
||||
device.reset_bring_up(resets);
|
||||
|
||||
let mut device = self.free();
|
||||
let effective_baudrate = configure_baudrate(&mut device, &config.baudrate, &frequency)?;
|
||||
|
||||
device.uartlcr_h.write(|w| {
|
||||
|
|
Loading…
Reference in a new issue