Use rp2040-hal in all example (possibly through their bsp) (#423)

* Use rp2040-hal in all example (possibly through their bsp)

Some of the examples were using the cortex_m_rt::entry method which
misses the device specific spinlock re-initialisation.

This commits makes the usage more consistent by using rp2040_hal exported
macro as the only `entry` method used across examples.
This commit is contained in:
Wilfried Chauveau 2022-08-21 19:01:45 +01:00 committed by GitHub
parent 51db37a4cb
commit 42e929d7e1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
38 changed files with 138 additions and 142 deletions

1
.gitignore vendored
View file

@ -2,3 +2,4 @@
target target
Cargo.lock Cargo.lock
.vscode .vscode
*.orig

View file

@ -13,7 +13,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Changed ### Changed
- None - Use `rp2040-hal`'s entry function.
## 0.3.0 - 2022-06-13 ## 0.3.0 - 2022-06-13

View file

@ -13,12 +13,15 @@ use adafruit_macropad::{
}, },
Pins, XOSC_CRYSTAL_FREQ, Pins, XOSC_CRYSTAL_FREQ,
}; };
use cortex_m_rt::entry;
use embedded_hal::digital::v2::OutputPin; use embedded_hal::digital::v2::OutputPin;
use embedded_time::rate::*; use embedded_time::rate::*;
use panic_halt as _; use panic_halt as _;
#[entry] /// Entry point to our bare-metal application.
///
/// The `#[rp2040_hal::entry]` macro ensures the Cortex-M start-up code calls this function
/// as soon as all global variables and the spinlock are initialised.
#[rp2040_hal::entry]
fn main() -> ! { fn main() -> ! {
let mut pac = pac::Peripherals::take().unwrap(); let mut pac = pac::Peripherals::take().unwrap();
let core = pac::CorePeripherals::take().unwrap(); let core = pac::CorePeripherals::take().unwrap();

View file

@ -0,0 +1,13 @@
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## Unreleased
### Changed
- Use `rp2040-hal`'s entry function.

View file

@ -10,9 +10,6 @@
#![no_std] #![no_std]
#![no_main] #![no_main]
// The macro for our start-up function
use cortex_m_rt::entry;
use embedded_hal::digital::v2::OutputPin; use embedded_hal::digital::v2::OutputPin;
// // Time handling traits // // Time handling traits
use embedded_time::rate::*; use embedded_time::rate::*;
@ -36,12 +33,12 @@ use bsp::hal;
/// Entry point to our bare-metal application. /// Entry point to our bare-metal application.
/// ///
/// The `#[entry]` macro ensures the Cortex-M start-up code calls this function /// The `#[arduino_nano_connect::entry]` macro ensures the Cortex-M start-up code calls this function
/// as soon as all global variables are initialised. /// as soon as all global variables and the spinlock are initialised.
/// ///
/// The function configures the RP2040 peripherals, then blinks the LED in an /// The function configures the RP2040 peripherals, then blinks the LED in an
/// infinite loop. /// infinite loop.
#[entry] #[arduino_nano_connect::entry]
fn main() -> ! { fn main() -> ! {
// Grab our singleton objects // Grab our singleton objects
let mut pac = pac::Peripherals::take().unwrap(); let mut pac = pac::Peripherals::take().unwrap();

View file

@ -3,9 +3,7 @@
pub extern crate rp2040_hal as hal; pub extern crate rp2040_hal as hal;
#[cfg(feature = "rt")] #[cfg(feature = "rt")]
extern crate cortex_m_rt; pub use rp2040_hal::entry;
#[cfg(feature = "rt")]
pub use cortex_m_rt::entry;
//// The linker will place this boot block at the start of our program image. We //// The linker will place this boot block at the start of our program image. We
//// need this to help the ROM bootloader get our code up and running. //// need this to help the ROM bootloader get our code up and running.

View file

@ -5,4 +5,9 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased] ## Unreleased
### Changed
- Use `rp2040-hal`'s entry function.

View file

@ -2,12 +2,11 @@
pub extern crate rp2040_hal as hal; pub extern crate rp2040_hal as hal;
#[cfg(feature = "rt")]
extern crate cortex_m_rt;
#[cfg(feature = "rt")]
pub use cortex_m_rt::entry;
pub use hal::pac; pub use hal::pac;
#[cfg(feature = "rt")]
pub use rp2040_hal::entry;
/// The linker will place this boot block at the start of our program image. We /// The linker will place this boot block at the start of our program image. We
/// need this to help the ROM bootloader get our code up and running. /// need this to help the ROM bootloader get our code up and running.
#[cfg(feature = "boot2")] #[cfg(feature = "boot2")]

View file

@ -0,0 +1,13 @@
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## Unreleased
### Changed
- Use `rp2040-hal`'s entry function.

View file

@ -2,7 +2,6 @@
#![no_std] #![no_std]
#![no_main] #![no_main]
use cortex_m_rt::entry;
use defmt::*; use defmt::*;
use defmt_rtt as _; use defmt_rtt as _;
use embedded_hal::digital::v2::OutputPin; use embedded_hal::digital::v2::OutputPin;
@ -18,7 +17,11 @@ use bsp::hal::{
watchdog::Watchdog, watchdog::Watchdog,
}; };
#[entry] /// Entry point to our bare-metal application.
///
/// The `#[rp2040_hal::entry]` macro ensures the Cortex-M start-up code calls this function
/// as soon as all global variables and the spinlock are initialised.
#[rp2040_hal::entry]
fn main() -> ! { fn main() -> ! {
info!("Program start"); info!("Program start");
let mut pac = pac::Peripherals::take().unwrap(); let mut pac = pac::Peripherals::take().unwrap();

View file

@ -6,9 +6,6 @@
#![no_std] #![no_std]
#![no_main] #![no_main]
// The macro for our start-up function
use cortex_m_rt::entry;
// Ensure we halt the program on panic (if we don't mention this crate it won't // Ensure we halt the program on panic (if we don't mention this crate it won't
// be linked) // be linked)
use panic_halt as _; use panic_halt as _;
@ -44,7 +41,11 @@ use ws2812_pio::Ws2812;
// to keep the power draw compatible with USB: // to keep the power draw compatible with USB:
const STRIP_LEN: usize = 3; const STRIP_LEN: usize = 3;
#[entry] /// Entry point to our bare-metal application.
///
/// The `#[pimoroni_plasma_2040::entry]` macro ensures the Cortex-M start-up code calls this function
/// as soon as all global variables and the spinlock are initialised.
#[pimoroni_plasma_2040::entry]
fn main() -> ! { fn main() -> ! {
// Grab our singleton objects // Grab our singleton objects
let mut pac = pac::Peripherals::take().unwrap(); let mut pac = pac::Peripherals::take().unwrap();

View file

@ -3,10 +3,7 @@
pub extern crate rp2040_hal as hal; pub extern crate rp2040_hal as hal;
#[cfg(feature = "rt")] #[cfg(feature = "rt")]
extern crate cortex_m_rt; pub use rp2040_hal::entry;
#[cfg(feature = "rt")]
pub use cortex_m_rt::entry;
/// The linker will place this boot block at the start of our program image. We /// The linker will place this boot block at the start of our program image. We
/// need this to help the ROM bootloader get our code up and running. /// need this to help the ROM bootloader get our code up and running.

View file

@ -14,7 +14,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Changed ### Changed
- None - Use `rp2040-hal`'s entry function.
## 0.4.0 - 2022-06-13 ## 0.4.0 - 2022-06-13

View file

@ -38,9 +38,6 @@
#![no_std] #![no_std]
#![no_main] #![no_main]
// The macro for our start-up function
use cortex_m_rt::entry;
// Ensure we halt the program on panic (if we don't mention this crate it won't // Ensure we halt the program on panic (if we don't mention this crate it won't
// be linked) // be linked)
use panic_halt as _; use panic_halt as _;
@ -57,7 +54,11 @@ use embedded_time::rate::*;
// For LCD display // For LCD display
use hd44780_driver::HD44780; use hd44780_driver::HD44780;
#[entry] /// Entry point to our bare-metal application.
///
/// The `#[rp_pico::entry]` macro ensures the Cortex-M start-up code calls this function
/// as soon as all global variables and the spinlock are initialised.
#[rp_pico::entry]
fn main() -> ! { fn main() -> ! {
// Grab our singleton objects // Grab our singleton objects
let mut pac = rp_pico::hal::pac::Peripherals::take().unwrap(); let mut pac = rp_pico::hal::pac::Peripherals::take().unwrap();

View file

@ -9,9 +9,6 @@
#![no_std] #![no_std]
#![no_main] #![no_main]
// The macro for our start-up function
use cortex_m_rt::entry;
use cortex_m::prelude::*; use cortex_m::prelude::*;
// GPIO traits // GPIO traits
@ -34,12 +31,12 @@ use rp_pico::hal;
/// Entry point to our bare-metal application. /// Entry point to our bare-metal application.
/// ///
/// The `#[entry]` macro ensures the Cortex-M start-up code calls this function /// The `#[rp2040_hal::entry]` macro ensures the Cortex-M start-up code calls this function
/// as soon as all global variables are initialised. /// as soon as all global variables and the spinlock are initialised.
/// ///
/// The function configures the RP2040 peripherals, then fades the LED in an /// The function configures the RP2040 peripherals, then fades the LED in an
/// infinite loop. /// infinite loop.
#[entry] #[rp2040_hal::entry]
fn main() -> ! { fn main() -> ! {
// Grab our singleton objects // Grab our singleton objects
let mut pac = pac::Peripherals::take().unwrap(); let mut pac = pac::Peripherals::take().unwrap();

View file

@ -13,7 +13,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Changed ### Changed
- None - Use `rp2040-hal`'s entry function.
## 0.2.0 - 2022-06-13 ## 0.2.0 - 2022-06-13

View file

@ -9,7 +9,6 @@
#![no_main] #![no_main]
use core::iter::once; use core::iter::once;
use cortex_m_rt::entry;
use embedded_hal::timer::CountDown; use embedded_hal::timer::CountDown;
use embedded_time::duration::Extensions; use embedded_time::duration::Extensions;
use panic_halt as _; use panic_halt as _;
@ -30,12 +29,12 @@ use ws2812_pio::Ws2812;
/// Entry point to our bare-metal application. /// Entry point to our bare-metal application.
/// ///
/// The `#[entry]` macro ensures the Cortex-M start-up code calls this /// The `#[sparkfun_thing_plus_rp2040::entry]` macro ensures the Cortex-M start-up code calls this
/// function as soon as all global variables are initialised. /// function as soon as all global variables are initialised.
/// ///
/// The function configures the RP2040 peripherals, then the LED, then runs /// The function configures the RP2040 peripherals, then the LED, then runs
/// the colour wheel in an infinite loop. /// the colour wheel in an infinite loop.
#[entry] #[sparkfun_thing_plus_rp2040::entry]
fn main() -> ! { fn main() -> ! {
// Configure the RP2040 peripherals // Configure the RP2040 peripherals

View file

@ -2,9 +2,7 @@
pub use rp2040_hal as hal; pub use rp2040_hal as hal;
#[cfg(feature = "rt")] #[cfg(feature = "rt")]
extern crate cortex_m_rt; pub use rp2040_hal::entry;
#[cfg(feature = "rt")]
pub use cortex_m_rt::entry;
/// The linker will place this boot block at the start of our program image. We /// The linker will place this boot block at the start of our program image. We
/// need this to help the ROM bootloader get our code up and running. /// need this to help the ROM bootloader get our code up and running.

View file

@ -20,6 +20,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Update embedded-hal alpha support to version 1.0.0-alpha.8 - Update embedded-hal alpha support to version 1.0.0-alpha.8
- Implement `From<&SomeClock> for Hertz` instead of `From<SomeClock> for Hertz` - Implement `From<&SomeClock> for Hertz` instead of `From<SomeClock> for Hertz`
for the clocks in `rp2040_hal::clocks`. for the clocks in `rp2040_hal::clocks`.
- Use `rp2040-hal`'s entry function.
## [0.5.0] - 2022-06-13 ## [0.5.0] - 2022-06-13

View file

@ -10,9 +10,6 @@
#![no_std] #![no_std]
#![no_main] #![no_main]
// The macro for our start-up function
use cortex_m_rt::entry;
// Ensure we halt the program on panic (if we don't mention this crate it won't // Ensure we halt the program on panic (if we don't mention this crate it won't
// be linked) // be linked)
use panic_halt as _; use panic_halt as _;
@ -42,12 +39,12 @@ const XTAL_FREQ_HZ: u32 = 12_000_000u32;
/// Entry point to our bare-metal application. /// Entry point to our bare-metal application.
/// ///
/// The `#[entry]` macro ensures the Cortex-M start-up code calls this function /// The `#[rp2040_hal::entry]` macro ensures the Cortex-M start-up code calls this function
/// as soon as all global variables are initialised. /// as soon as all global variables and the spinlock are initialised.
/// ///
/// The function configures the RP2040 peripherals, then prints the temperature /// The function configures the RP2040 peripherals, then prints the temperature
/// in an infinite loop. /// in an infinite loop.
#[entry] #[rp2040_hal::entry]
fn main() -> ! { fn main() -> ! {
// Grab our singleton objects // Grab our singleton objects
let mut pac = pac::Peripherals::take().unwrap(); let mut pac = pac::Peripherals::take().unwrap();

View file

@ -9,9 +9,6 @@
#![no_std] #![no_std]
#![no_main] #![no_main]
// The macro for our start-up function
use cortex_m_rt::entry;
// Ensure we halt the program on panic (if we don't mention this crate it won't // Ensure we halt the program on panic (if we don't mention this crate it won't
// be linked) // be linked)
use panic_halt as _; use panic_halt as _;
@ -40,12 +37,12 @@ const XTAL_FREQ_HZ: u32 = 12_000_000u32;
/// Entry point to our bare-metal application. /// Entry point to our bare-metal application.
/// ///
/// The `#[entry]` macro ensures the Cortex-M start-up code calls this function /// The `#[rp2040_hal::entry]` macro ensures the Cortex-M start-up code calls this function
/// as soon as all global variables are initialised. /// as soon as all global variables and the spinlock are initialised.
/// ///
/// The function configures the RP2040 peripherals, then toggles a GPIO pin in /// The function configures the RP2040 peripherals, then toggles a GPIO pin in
/// an infinite loop. If there is an LED connected to that pin, it will blink. /// an infinite loop. If there is an LED connected to that pin, it will blink.
#[entry] #[rp2040_hal::entry]
fn main() -> ! { fn main() -> ! {
// Grab our singleton objects // Grab our singleton objects
let mut pac = pac::Peripherals::take().unwrap(); let mut pac = pac::Peripherals::take().unwrap();

View file

@ -12,9 +12,6 @@
#![no_std] #![no_std]
#![no_main] #![no_main]
// The macro for our start-up function
use cortex_m_rt::entry;
// Ensure we halt the program on panic (if we don't mention this crate it won't // Ensure we halt the program on panic (if we don't mention this crate it won't
// be linked) // be linked)
use panic_halt as _; use panic_halt as _;
@ -89,12 +86,12 @@ impl OutputPin for InOutPin {
/// Entry point to our bare-metal application. /// Entry point to our bare-metal application.
/// ///
/// The `#[entry]` macro ensures the Cortex-M start-up code calls this function /// The `#[rp2040_hal::entry]` macro ensures the Cortex-M start-up code calls this function
/// as soon as all global variables are initialised. /// as soon as all global variables and the spinlock are initialised.
/// ///
/// The function configures the RP2040 peripherals, assigns GPIO 28 to the /// The function configures the RP2040 peripherals, assigns GPIO 28 to the
/// DHT11 driver, and takes a single measurement. /// DHT11 driver, and takes a single measurement.
#[entry] #[rp2040_hal::entry]
fn main() -> ! { fn main() -> ! {
// Grab our singleton objects // Grab our singleton objects
let mut pac = pac::Peripherals::take().unwrap(); let mut pac = pac::Peripherals::take().unwrap();

View file

@ -9,9 +9,6 @@
#![no_std] #![no_std]
#![no_main] #![no_main]
// The macro for our start-up function
use cortex_m_rt::entry;
// Ensure we halt the program on panic (if we don't mention this crate it won't // Ensure we halt the program on panic (if we don't mention this crate it won't
// be linked) // be linked)
use panic_halt as _; use panic_halt as _;
@ -39,12 +36,12 @@ const XTAL_FREQ_HZ: u32 = 12_000_000u32;
/// Entry point to our bare-metal application. /// Entry point to our bare-metal application.
/// ///
/// The `#[entry]` macro ensures the Cortex-M start-up code calls this function /// The `#[rp2040_hal::entry]` macro ensures the Cortex-M start-up code calls this function
/// as soon as all global variables are initialised. /// as soon as all global variables and the spinlock are initialised.
/// ///
/// The function configures the RP2040 peripherals, then toggles a GPIO pin in /// The function configures the RP2040 peripherals, then toggles a GPIO pin in
/// an infinite loop. If there is an LED connected to that pin, it will blink. /// an infinite loop. If there is an LED connected to that pin, it will blink.
#[entry] #[rp2040_hal::entry]
fn main() -> ! { fn main() -> ! {
// Grab our singleton objects // Grab our singleton objects
let mut pac = pac::Peripherals::take().unwrap(); let mut pac = pac::Peripherals::take().unwrap();

View file

@ -22,9 +22,6 @@
#![no_std] #![no_std]
#![no_main] #![no_main]
// The macro for our start-up function
use cortex_m_rt::entry;
// Ensure we halt the program on panic (if we don't mention this crate it won't // Ensure we halt the program on panic (if we don't mention this crate it won't
// be linked) // be linked)
use panic_halt as _; use panic_halt as _;
@ -82,12 +79,12 @@ static GLOBAL_PINS: Mutex<RefCell<Option<LedAndButton>>> = Mutex::new(RefCell::n
/// Entry point to our bare-metal application. /// Entry point to our bare-metal application.
/// ///
/// The `#[entry]` macro ensures the Cortex-M start-up code calls this function /// The `#[rp2040_hal::entry]` macro ensures the Cortex-M start-up code calls this function
/// as soon as all global variables are initialised. /// as soon as all global variables and the spinlock are initialised.
/// ///
/// The function configures the RP2040 peripherals, then toggles a GPIO pin in /// The function configures the RP2040 peripherals, then toggles a GPIO pin in
/// an infinite loop. If there is an LED connected to that pin, it will blink. /// an infinite loop. If there is an LED connected to that pin, it will blink.
#[entry] #[rp2040_hal::entry]
fn main() -> ! { fn main() -> ! {
// Grab our singleton objects // Grab our singleton objects
let mut pac = pac::Peripherals::take().unwrap(); let mut pac = pac::Peripherals::take().unwrap();

View file

@ -9,9 +9,6 @@
#![no_std] #![no_std]
#![no_main] #![no_main]
// The macro for our start-up function
use cortex_m_rt::entry;
// Ensure we halt the program on panic (if we don't mention this crate it won't // Ensure we halt the program on panic (if we don't mention this crate it won't
// be linked) // be linked)
use panic_halt as _; use panic_halt as _;
@ -39,12 +36,12 @@ const XTAL_FREQ_HZ: u32 = 12_000_000u32;
/// Entry point to our bare-metal application. /// Entry point to our bare-metal application.
/// ///
/// The `#[entry]` macro ensures the Cortex-M start-up code calls this function /// The `#[rp2040_hal::entry]` macro ensures the Cortex-M start-up code calls this function
/// as soon as all global variables are initialised. /// as soon as all global variables and the spinlock are initialised.
/// ///
/// The function configures the RP2040 peripherals, then performs a single I²C /// The function configures the RP2040 peripherals, then performs a single I²C
/// write to a fixed address. /// write to a fixed address.
#[entry] #[rp2040_hal::entry]
fn main() -> ! { fn main() -> ! {
let mut pac = pac::Peripherals::take().unwrap(); let mut pac = pac::Peripherals::take().unwrap();

View file

@ -12,9 +12,6 @@
#![no_std] #![no_std]
#![no_main] #![no_main]
// The macro for our start-up function
use cortex_m_rt::entry;
// Ensure we halt the program on panic (if we don't mention this crate it won't // Ensure we halt the program on panic (if we don't mention this crate it won't
// be linked) // be linked)
use panic_halt as _; use panic_halt as _;
@ -45,12 +42,12 @@ const XTAL_FREQ_HZ: u32 = 12_000_000u32;
/// Entry point to our bare-metal application. /// Entry point to our bare-metal application.
/// ///
/// The `#[entry]` macro ensures the Cortex-M start-up code calls this function /// The `#[rp2040_hal::entry]` macro ensures the Cortex-M start-up code calls this function
/// as soon as all global variables are initialised. /// as soon as all global variables and the spinlock are initialised.
/// ///
/// The function configures the RP2040 peripherals, writes to the LCD, then goes /// The function configures the RP2040 peripherals, writes to the LCD, then goes
/// to sleep. /// to sleep.
#[entry] #[rp2040_hal::entry]
fn main() -> ! { fn main() -> ! {
// Grab our singleton objects // Grab our singleton objects
let mut pac = pac::Peripherals::take().unwrap(); let mut pac = pac::Peripherals::take().unwrap();

View file

@ -12,9 +12,6 @@
#![no_std] #![no_std]
#![no_main] #![no_main]
// The macro for our start-up function
use cortex_m_rt::entry;
use embedded_time::fixed_point::FixedPoint; use embedded_time::fixed_point::FixedPoint;
use hal::clocks::Clock; use hal::clocks::Clock;
use hal::multicore::{Multicore, Stack}; use hal::multicore::{Multicore, Stack};
@ -83,12 +80,12 @@ fn core1_task(sys_freq: u32) -> ! {
/// Entry point to our bare-metal application. /// Entry point to our bare-metal application.
/// ///
/// The `#[entry]` macro ensures the Cortex-M start-up code calls this function /// The `#[rp2040_hal::entry]` macro ensures the Cortex-M start-up code calls this function
/// as soon as all global variables are initialised. /// as soon as all global variables and the spinlock are initialised.
/// ///
/// The function configures the RP2040 peripherals, then toggles a GPIO pin in /// The function configures the RP2040 peripherals, then toggles a GPIO pin in
/// an infinite loop. If there is an LED connected to that pin, it will blink. /// an infinite loop. If there is an LED connected to that pin, it will blink.
#[entry] #[rp2040_hal::entry]
fn main() -> ! { fn main() -> ! {
// Grab our singleton objects // Grab our singleton objects
let mut pac = pac::Peripherals::take().unwrap(); let mut pac = pac::Peripherals::take().unwrap();

View file

@ -9,8 +9,6 @@
#![no_main] #![no_main]
use cortex_m::delay::Delay; use cortex_m::delay::Delay;
// The macro for our start-up function
use cortex_m_rt::entry;
use embedded_time::fixed_point::FixedPoint; use embedded_time::fixed_point::FixedPoint;
use hal::clocks::Clock; use hal::clocks::Clock;
@ -64,9 +62,9 @@ static mut CORE1_STACK: Stack<4096> = Stack::new();
/// Entry point to our bare-metal application. /// Entry point to our bare-metal application.
/// ///
/// The `#[entry]` macro ensures the Cortex-M start-up code calls this function /// The `#[rp2040_hal::entry]` macro ensures the Cortex-M start-up code calls this function
/// as soon as all global variables are initialised. /// as soon as all global variables and the spinlock are initialised.
#[entry] #[rp2040_hal::entry]
fn main() -> ! { fn main() -> ! {
// Grab our singleton objects // Grab our singleton objects
let mut pac = pac::Peripherals::take().unwrap(); let mut pac = pac::Peripherals::take().unwrap();

View file

@ -4,7 +4,6 @@
#![no_std] #![no_std]
#![no_main] #![no_main]
use cortex_m_rt::entry;
use hal::gpio::{FunctionPio0, Pin}; use hal::gpio::{FunctionPio0, Pin};
use hal::pac; use hal::pac;
use hal::pio::PIOExt; use hal::pio::PIOExt;
@ -16,7 +15,13 @@ use rp2040_hal as hal;
#[used] #[used]
pub static BOOT2: [u8; 256] = rp2040_boot2::BOOT_LOADER_GENERIC_03H; pub static BOOT2: [u8; 256] = rp2040_boot2::BOOT_LOADER_GENERIC_03H;
#[entry] /// Entry point to our bare-metal application.
///
/// The `#[rp2040_hal::entry]` macro ensures the Cortex-M start-up code calls this function
/// as soon as all global variables and the spinlock are initialised.
///
/// The function configures the RP2040 peripherals, then blinks an LED using the PIO peripheral.
#[rp2040_hal::entry]
fn main() -> ! { fn main() -> ! {
let mut pac = pac::Peripherals::take().unwrap(); let mut pac = pac::Peripherals::take().unwrap();

View file

@ -4,7 +4,6 @@
#![no_std] #![no_std]
#![no_main] #![no_main]
use cortex_m_rt::entry;
use hal::gpio::{FunctionPio0, Pin}; use hal::gpio::{FunctionPio0, Pin};
use hal::pac; use hal::pac;
use hal::pio::PIOExt; use hal::pio::PIOExt;
@ -16,7 +15,11 @@ use rp2040_hal as hal;
#[used] #[used]
pub static BOOT2: [u8; 256] = rp2040_boot2::BOOT_LOADER_GENERIC_03H; pub static BOOT2: [u8; 256] = rp2040_boot2::BOOT_LOADER_GENERIC_03H;
#[entry] /// Entry point to our bare-metal application.
///
/// The `#[rp2040_hal::entry]` macro ensures the Cortex-M start-up code calls this function
/// as soon as all global variables and the spinlock are initialised.
#[rp2040_hal::entry]
fn main() -> ! { fn main() -> ! {
let mut pac = pac::Peripherals::take().unwrap(); let mut pac = pac::Peripherals::take().unwrap();

View file

@ -6,7 +6,6 @@
#![no_std] #![no_std]
#![no_main] #![no_main]
use cortex_m_rt::entry;
use hal::gpio::{FunctionPio0, Pin}; use hal::gpio::{FunctionPio0, Pin};
use hal::pac; use hal::pac;
use hal::pio::PIOExt; use hal::pio::PIOExt;
@ -18,7 +17,11 @@ use rp2040_hal as hal;
#[used] #[used]
pub static BOOT2: [u8; 256] = rp2040_boot2::BOOT_LOADER_GENERIC_03H; pub static BOOT2: [u8; 256] = rp2040_boot2::BOOT_LOADER_GENERIC_03H;
#[entry] /// Entry point to our bare-metal application.
///
/// The `#[rp2040_hal::entry]` macro ensures the Cortex-M start-up code calls this function
/// as soon as all global variables and the spinlock are initialised.
#[rp2040_hal::entry]
fn main() -> ! { fn main() -> ! {
let mut pac = pac::Peripherals::take().unwrap(); let mut pac = pac::Peripherals::take().unwrap();

View file

@ -6,7 +6,6 @@
#![no_std] #![no_std]
#![no_main] #![no_main]
use cortex_m_rt::entry;
use hal::gpio::{FunctionPio0, Pin}; use hal::gpio::{FunctionPio0, Pin};
use hal::pac; use hal::pac;
use hal::pio::PIOExt; use hal::pio::PIOExt;
@ -18,7 +17,11 @@ use rp2040_hal as hal;
#[used] #[used]
pub static BOOT2: [u8; 256] = rp2040_boot2::BOOT_LOADER_GENERIC_03H; pub static BOOT2: [u8; 256] = rp2040_boot2::BOOT_LOADER_GENERIC_03H;
#[entry] /// Entry point to our bare-metal application.
///
/// The `#[rp2040_hal::entry]` macro ensures the Cortex-M start-up code calls this function
/// as soon as all global variables and the spinlock are initialised.
#[rp2040_hal::entry]
fn main() -> ! { fn main() -> ! {
let mut pac = pac::Peripherals::take().unwrap(); let mut pac = pac::Peripherals::take().unwrap();

View file

@ -10,9 +10,6 @@
#![no_std] #![no_std]
#![no_main] #![no_main]
// The macro for our start-up function
use cortex_m_rt::entry;
// Ensure we halt the program on panic (if we don't mention this crate it won't // Ensure we halt the program on panic (if we don't mention this crate it won't
// be linked) // be linked)
use panic_halt as _; use panic_halt as _;
@ -47,12 +44,12 @@ const XTAL_FREQ_HZ: u32 = 12_000_000u32;
/// Entry point to our bare-metal application. /// Entry point to our bare-metal application.
/// ///
/// The `#[entry]` macro ensures the Cortex-M start-up code calls this function /// The `#[rp2040_hal::entry]` macro ensures the Cortex-M start-up code calls this function
/// as soon as all global variables are initialised. /// as soon as all global variables and the spinlock are initialised.
/// ///
/// The function configures the RP2040 peripherals, then fades the LED in an /// The function configures the RP2040 peripherals, then fades the LED in an
/// infinite loop. /// infinite loop.
#[entry] #[rp2040_hal::entry]
fn main() -> ! { fn main() -> ! {
// Grab our singleton objects // Grab our singleton objects
let mut pac = pac::Peripherals::take().unwrap(); let mut pac = pac::Peripherals::take().unwrap();

View file

@ -9,9 +9,6 @@
#![no_std] #![no_std]
#![no_main] #![no_main]
// The macro for our start-up function
use cortex_m_rt::entry;
// Ensure we halt the program on panic (if we don't mention this crate it won't // Ensure we halt the program on panic (if we don't mention this crate it won't
// be linked) // be linked)
use panic_halt as _; use panic_halt as _;
@ -43,12 +40,12 @@ const SYSTICK_RELOAD: u32 = 0x00FF_FFFF;
/// Entry point to our bare-metal application. /// Entry point to our bare-metal application.
/// ///
/// The `#[entry]` macro ensures the Cortex-M start-up code calls this function /// The `#[rp2040_hal::entry]` macro ensures the Cortex-M start-up code calls this function
/// as soon as all global variables are initialised. /// as soon as all global variables and the spinlock are initialised.
/// ///
/// The function configures the RP2040 peripherals, then writes to the UART in /// The function configures the RP2040 peripherals, then writes to the UART in
/// an infinite loop. /// an infinite loop.
#[entry] #[rp2040_hal::entry]
fn main() -> ! { fn main() -> ! {
// Grab our singleton objects // Grab our singleton objects
let mut pac = pac::Peripherals::take().unwrap(); let mut pac = pac::Peripherals::take().unwrap();

View file

@ -12,9 +12,6 @@
#![no_std] #![no_std]
#![no_main] #![no_main]
// The macro for our start-up function
use cortex_m_rt::entry;
// Ensure we halt the program on panic (if we don't mention this crate it won't // Ensure we halt the program on panic (if we don't mention this crate it won't
// be linked) // be linked)
use panic_halt as _; use panic_halt as _;
@ -43,12 +40,12 @@ const XTAL_FREQ_HZ: u32 = 12_000_000u32;
/// Entry point to our bare-metal application. /// Entry point to our bare-metal application.
/// ///
/// The `#[entry]` macro ensures the Cortex-M start-up code calls this function /// The `#[rp2040_hal::entry]` macro ensures the Cortex-M start-up code calls this function
/// as soon as all global variables are initialised. /// as soon as all global variables and the spinlock are initialised.
/// ///
/// The function configures the RP2040 peripherals, then performs some example /// The function configures the RP2040 peripherals, then performs some example
/// SPI transactions, then goes to sleep. /// SPI transactions, then goes to sleep.
#[entry] #[rp2040_hal::entry]
fn main() -> ! { fn main() -> ! {
// Grab our singleton objects // Grab our singleton objects
let mut pac = pac::Peripherals::take().unwrap(); let mut pac = pac::Peripherals::take().unwrap();

View file

@ -11,9 +11,6 @@
#![no_std] #![no_std]
#![no_main] #![no_main]
// The macro for our start-up function
use cortex_m_rt::entry;
// Ensure we halt the program on panic (if we don't mention this crate it won't // Ensure we halt the program on panic (if we don't mention this crate it won't
// be linked) // be linked)
use panic_halt as _; use panic_halt as _;
@ -42,12 +39,12 @@ const XTAL_FREQ_HZ: u32 = 12_000_000u32;
/// Entry point to our bare-metal application. /// Entry point to our bare-metal application.
/// ///
/// The `#[entry]` macro ensures the Cortex-M start-up code calls this function /// The `#[rp2040_hal::entry]` macro ensures the Cortex-M start-up code calls this function
/// as soon as all global variables are initialised. /// as soon as all global variables and the spinlock are initialised.
/// ///
/// The function configures the RP2040 peripherals, then writes to the UART in /// The function configures the RP2040 peripherals, then writes to the UART in
/// an infinite loop. /// an infinite loop.
#[entry] #[rp2040_hal::entry]
fn main() -> ! { fn main() -> ! {
// Grab our singleton objects // Grab our singleton objects
let mut pac = pac::Peripherals::take().unwrap(); let mut pac = pac::Peripherals::take().unwrap();

View file

@ -9,9 +9,6 @@
#![no_std] #![no_std]
#![no_main] #![no_main]
// The macro for our start-up function
use cortex_m_rt::entry;
// Ensure we halt the program on panic // Ensure we halt the program on panic
use panic_halt as _; use panic_halt as _;
@ -60,12 +57,12 @@ const XTAL_FREQ_HZ: u32 = 12_000_000u32;
/// Entry point to our bare-metal application. /// Entry point to our bare-metal application.
/// ///
/// The `#[entry]` macro ensures the Cortex-M start-up code calls this function /// The `#[rp2040_hal::entry]` macro ensures the Cortex-M start-up code calls this function
/// as soon as all global variables are initialised. /// as soon as all global variables and the spinlock are initialised.
/// ///
/// The function configures the RP2040 peripherals, then toggles a GPIO pin in /// The function configures the RP2040 peripherals, then toggles a GPIO pin in
/// an infinite loop. If there is an LED connected to that pin, it will blink. /// an infinite loop. If there is an LED connected to that pin, it will blink.
#[entry] #[rp2040_hal::entry]
fn main() -> ! { fn main() -> ! {
// Grab our singleton objects // Grab our singleton objects
let mut pac = pac::Peripherals::take().unwrap(); let mut pac = pac::Peripherals::take().unwrap();

View file

@ -9,9 +9,6 @@
#![no_std] #![no_std]
#![no_main] #![no_main]
// The macro for our start-up function
use cortex_m_rt::entry;
// Ensure we halt the program on panic (if we don't mention this crate it won't // Ensure we halt the program on panic (if we don't mention this crate it won't
// be linked) // be linked)
use panic_halt as _; use panic_halt as _;
@ -42,13 +39,13 @@ const XTAL_FREQ_HZ: u32 = 12_000_000u32;
/// Entry point to our bare-metal application. /// Entry point to our bare-metal application.
/// ///
/// The `#[entry]` macro ensures the Cortex-M start-up code calls this function /// The `#[rp2040_hal::entry]` macro ensures the Cortex-M start-up code calls this function
/// as soon as all global variables are initialised. /// as soon as all global variables and the spinlock are initialised.
/// ///
/// The function configures the RP2040 peripherals, then toggles a GPIO pin in /// The function configures the RP2040 peripherals, then toggles a GPIO pin in
/// an infinite loop. After a period of time, the watchdog will kick in to reset /// an infinite loop. After a period of time, the watchdog will kick in to reset
/// the CPU. /// the CPU.
#[entry] #[rp2040_hal::entry]
fn main() -> ! { fn main() -> ! {
// Grab our singleton objects // Grab our singleton objects
let mut pac = pac::Peripherals::take().unwrap(); let mut pac = pac::Peripherals::take().unwrap();