Skip to content
Snippets Groups Projects
Commit 0f74ecf5 authored by Anton Grahn's avatar Anton Grahn
Browse files

bare4_1

parent c0107e2a
Branches
No related tags found
No related merge requests found
...@@ -19,12 +19,12 @@ use cortex_m_rt::entry; ...@@ -19,12 +19,12 @@ use cortex_m_rt::entry;
// Peripheral addresses as constants // Peripheral addresses as constants
#[rustfmt::skip] #[rustfmt::skip]
mod address { mod address {
pub const PERIPH_BASE: u32 = 0x40000000; pub const PERIPH_BASE: u32 = 0x40000000;
pub const AHB1PERIPH_BASE: u32 = PERIPH_BASE + 0x00020000; pub const AHB1PERIPH_BASE: u32 = PERIPH_BASE + 0x00020000;
pub const RCC_BASE: u32 = AHB1PERIPH_BASE + 0x3800; pub const RCC_BASE: u32 = AHB1PERIPH_BASE + 0x3800;
pub const RCC_AHB1ENR: u32 = RCC_BASE + 0x30; pub const RCC_AHB1ENR: u32 = RCC_BASE + 0x30;
pub const GBPIA_BASE: u32 = AHB1PERIPH_BASE + 0x0000; pub const GBPIA_BASE: u32 = AHB1PERIPH_BASE + 0x0000;
pub const GPIOA_MODER: u32 = GBPIA_BASE + 0x00; pub const GPIOA_MODER: u32 = GBPIA_BASE + 0x00;
pub const GPIOA_BSRR: u32 = GBPIA_BASE + 0x18; pub const GPIOA_BSRR: u32 = GBPIA_BASE + 0x18;
} }
...@@ -56,10 +56,12 @@ fn wait(i: u32) { ...@@ -56,10 +56,12 @@ fn wait(i: u32) {
#[entry] #[entry]
fn main() -> ! { fn main() -> ! {
// power on GPIOA // power on GPIOA
//6.3.9
let r = read_u32(RCC_AHB1ENR); // read let r = read_u32(RCC_AHB1ENR); // read
write_u32(RCC_AHB1ENR, r | 1); // set enable write_u32(RCC_AHB1ENR, r | 1); // set enable
// configure PA5 as output // configure PA5 as output
//8.4.1
let r = read_u32(GPIOA_MODER) & !(0b11 << (5 * 2)); // read and mask let r = read_u32(GPIOA_MODER) & !(0b11 << (5 * 2)); // read and mask
write_u32(GPIOA_MODER, r | 0b01 << (5 * 2)); // set output mode write_u32(GPIOA_MODER, r | 0b01 << (5 * 2)); // set output mode
...@@ -68,6 +70,7 @@ fn main() -> ! { ...@@ -68,6 +70,7 @@ fn main() -> ! {
loop { loop {
// set PA5 high // set PA5 high
//8.4.7
write_u32(GPIOA_BSRR, 1 << 5); // set bit, output hight (turn on led) write_u32(GPIOA_BSRR, 1 << 5); // set bit, output hight (turn on led)
wait(10_000); wait(10_000);
...@@ -85,6 +88,7 @@ fn main() -> ! { ...@@ -85,6 +88,7 @@ fn main() -> ! {
// 1. Did you enjoy the blinking? // 1. Did you enjoy the blinking?
// //
// ** your answer here ** // ** your answer here **
// yes
// //
// Now lookup the data-sheets, and read each section referred, // Now lookup the data-sheets, and read each section referred,
// 6.3.11, 8.4.1, 8.4.7 // 6.3.11, 8.4.1, 8.4.7
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment