stm32_rust_template/utils/
mod.rs1use core::assert;
9
10pub fn set_bits(value: u32, new_bits_val: u32, bit_position: u32, n_bits: u32) -> u32 {
12 assert!(
13 n_bits > 0 && n_bits <= 32,
14 "n_bits must be between 1 and 32"
15 );
16 assert!(bit_position < 32, "bit_position must be less than 32");
17 let mask = ((1 << n_bits) - 1) << bit_position;
18 (value & !mask) | ((new_bits_val << bit_position) & mask)
19}
20
21pub fn set_bit(value: u32, bit_position: u32, bit_val: bool) -> u32 {
23 if bit_val {
24 value | (1 << bit_position)
25 } else {
26 value & !(1 << bit_position)
27 }
28}
29
30pub fn read_bit(value: u32, bit_position: u32) -> bool {
32 (value & (1 << bit_position)) != 0
33}