Skip to content
Snippets Groups Projects
Commit 772e94c5 authored by Anton's avatar Anton
Browse files

bare5_2

parent 9817a47a
No related branches found
No related tags found
No related merge requests found
......@@ -59,6 +59,16 @@ mod stm32f40x {
#[inline(always)]
pub fn modify(&self, offset: u8, width: u8, value: u32) {
// your code here
let current = self.read();
let mut mask = 0;
for _ in 0..width {
mask = (mask << 1 | 1);
}
//mask = mask << offset;
let test = (current & !(mask << offset));
let test2 = ((value & (mask))<<offset);
let modified = (current & !(mask << offset)) | ((value & (mask))<<offset);
self.write(modified);
}
}
......@@ -170,12 +180,16 @@ const APP: () = {
let gpioa = unsafe { &mut *GPIOA::get() }; // get the reference to GPIOA in memory
// power on GPIOA
let r = rcc.AHB1ENR.read(); // read
rcc.AHB1ENR.write(r | 1 << (0)); // set enable
// let r = rcc.AHB1ENR.read(); // read
// rcc.AHB1ENR.write(r | 1 << (0)); // set enable
rcc.AHB1ENR.modify(0, 1, 1);
// configure PA5 as output
let r = gpioa.MODER.read() & !(0b11 << (5 * 2)); // read and mask
gpioa.MODER.write(r | 0b01 << (5 * 2)); // set output mode
// let r = gpioa.MODER.read() & !(0b11 << (5 * 2)); // read and mask
// gpioa.MODER.write(r | 0b01 << (5 * 2)); // set output mode
gpioa.MODER.modify(5*2, 2, 0b01);
//test_modify();
......@@ -241,6 +255,6 @@ const APP: () = {
// What if we could automatically generate that from Vendors specifications (SVD files)?
// Wouldn't that be great?
//
// ** your answer here **
// Yes.
//
// Commit your answers (bare5_2)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment