Skip to content

Commit 0fda76e

Browse files
committed
timer features
1 parent 2c8a587 commit 0fda76e

File tree

8 files changed

+291
-307
lines changed

8 files changed

+291
-307
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
99

1010
- Add autoimplementations of `DMASet` [#614]
1111
- Simplify `gpio::Outport` [#611]
12+
- rcc `enable_unchecked`, timer features
1213
- Split SPI master and slave implementations [#609]
1314
- Split USART and UART implementations [#608]
1415
- Add `lapce` editor settings [#601]

Cargo.toml

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -121,22 +121,22 @@ gpio-f401 = [
121121
"otg-fs",
122122
"sdio",
123123
"spi3", "spi4",
124-
"tim2",
124+
"tim1", "tim2", "tim3", "tim4", "tim5", "tim9", "tim10", "tim11",
125125
]
126126
gpio-f410 = [
127127
"dac",
128128
"fmpi2c1",
129129
"lptim1",
130130
"spi5",
131+
"tim1", "tim5", "tim6", "tim9", "tim11",
131132
]
132133
gpio-f411 = [
133134
"gpiod", "gpioe", # "gpioi",
134135
"i2c3",
135136
"otg-fs",
136137
"sdio",
137-
"tim2",
138+
"tim1", "tim2", "tim3", "tim4", "tim5", "tim9", "tim10", "tim11",
138139
"spi3", "spi4", "spi5",
139-
140140
]
141141
gpio-f412 = [
142142
"gpiod", "gpioe", "gpiof", "gpiog",
@@ -150,7 +150,7 @@ gpio-f412 = [
150150
"rng",
151151
"sdio",
152152
"spi3", "spi4", "spi5",
153-
"tim2", "tim8",
153+
"tim1", "tim2", "tim3", "tim4", "tim5", "tim6", "tim7", "tim8", "tim9", "tim10", "tim11", "tim12", "tim13", "tim14",
154154
"usart3",
155155
]
156156
gpio-f413 = [
@@ -169,7 +169,7 @@ gpio-f413 = [
169169
"sai1",
170170
"sdio",
171171
"spi3", "spi4", "spi5",
172-
"tim2", "tim8",
172+
"tim1", "tim2", "tim3", "tim4", "tim5", "tim6", "tim7", "tim8", "tim9", "tim10", "tim11", "tim12", "tim13", "tim14",
173173
"usart3", "uart4", "uart5", "uart7", "uart8", "uart9", "uart10",
174174
]
175175
gpio-f417 = [
@@ -186,7 +186,7 @@ gpio-f417 = [
186186
"rng",
187187
"sdio",
188188
"spi3",
189-
"tim2", "tim8",
189+
"tim1", "tim2", "tim3", "tim4", "tim5", "tim6", "tim7", "tim8", "tim9", "tim10", "tim11", "tim12", "tim13", "tim14",
190190
"usart3", "uart4", "uart5",
191191
]
192192
gpio-f427 = [
@@ -204,7 +204,7 @@ gpio-f427 = [
204204
"sai1",
205205
"sdio",
206206
"spi3", "spi4", "spi5", "spi6",
207-
"tim2", "tim8",
207+
"tim1", "tim2", "tim3", "tim4", "tim5", "tim6", "tim7", "tim8", "tim9", "tim10", "tim11", "tim12", "tim13", "tim14",
208208
"usart3", "uart4", "uart5", "uart7", "uart8",
209209
]
210210
gpio-f446 = [
@@ -224,7 +224,7 @@ gpio-f446 = [
224224
#"sdio",
225225
"spi3", "spi4",
226226
"spdifrx",
227-
"tim2", "tim8",
227+
"tim1", "tim2", "tim3", "tim4", "tim5", "tim6", "tim7", "tim8", "tim9", "tim10", "tim11", "tim12", "tim13", "tim14",
228228
"usart3", "uart4", "uart5",
229229
]
230230
gpio-f469 = [
@@ -245,7 +245,7 @@ gpio-f469 = [
245245
"sai1",
246246
"sdio",
247247
"spi3", "spi4", "spi5", "spi6",
248-
"tim2", "tim8",
248+
"tim1", "tim2", "tim3", "tim4", "tim5", "tim6", "tim7", "tim8", "tim9", "tim10", "tim11", "tim12", "tim13", "tim14",
249249
"usart3", "uart4", "uart5", "uart7", "uart8",
250250
]
251251

@@ -296,8 +296,20 @@ spi4 = []
296296
spi5 = []
297297
spi6 = []
298298
spdifrx = []
299+
tim1 = []
299300
tim2 = []
301+
tim3 = []
302+
tim4 = []
303+
tim5 = []
304+
tim6 = []
305+
tim7 = []
300306
tim8 = []
307+
tim9 = []
308+
tim10 = []
309+
tim11 = []
310+
tim12 = []
311+
tim13 = []
312+
tim14 = []
301313
usart3 = []
302314
uart4 = []
303315
uart5 = []

src/dac.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
use crate::{
88
gpio::{Analog, PA4, PA5},
9-
pac::{DAC, RCC},
9+
pac::DAC,
1010
rcc::{Enable, Reset},
1111
};
1212

src/qei.rs

Lines changed: 33 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -95,47 +95,42 @@ pub trait Instance: crate::Sealed + rcc::Enable + rcc::Reset + General + CPin<0>
9595
}
9696

9797
macro_rules! hal {
98-
($($TIM:ty,)+) => {
99-
$(
100-
impl Instance for $TIM {
101-
fn setup_qei(&mut self) {
102-
// Configure TxC1 and TxC2 as captures
103-
#[cfg(not(feature = "gpio-f410"))]
104-
self.ccmr1_input().write(|w| w.cc1s().ti1().cc2s().ti2());
105-
#[cfg(feature = "gpio-f410")]
106-
self.ccmr1_input()
107-
.write(|w| unsafe { w.cc1s().bits(0b01).cc2s().bits(0b01) });
108-
// enable and configure to capture on rising edge
109-
self.ccer.write(|w| {
110-
w.cc1e().set_bit().cc1p().clear_bit();
111-
w.cc2e().set_bit().cc2p().clear_bit()
112-
});
113-
self.smcr.write(|w| w.sms().encoder_mode_3());
114-
self.set_auto_reload(<$TIM as General>::Width::MAX as u32).unwrap();
115-
self.cr1.write(|w| w.cen().set_bit());
116-
}
117-
118-
fn read_direction(&self) -> bool {
119-
self.cr1.read().dir().bit_is_clear()
120-
}
98+
($TIM:ty) => {
99+
impl Instance for $TIM {
100+
fn setup_qei(&mut self) {
101+
// Configure TxC1 and TxC2 as captures
102+
#[cfg(not(feature = "gpio-f410"))]
103+
self.ccmr1_input().write(|w| w.cc1s().ti1().cc2s().ti2());
104+
#[cfg(feature = "gpio-f410")]
105+
self.ccmr1_input()
106+
.write(|w| unsafe { w.cc1s().bits(0b01).cc2s().bits(0b01) });
107+
// enable and configure to capture on rising edge
108+
self.ccer.write(|w| {
109+
w.cc1e().set_bit().cc1p().clear_bit();
110+
w.cc2e().set_bit().cc2p().clear_bit()
111+
});
112+
self.smcr.write(|w| w.sms().encoder_mode_3());
113+
self.set_auto_reload(<$TIM as General>::Width::MAX as u32)
114+
.unwrap();
115+
self.cr1.write(|w| w.cen().set_bit());
121116
}
122-
)+
123-
}
124-
}
125117

126-
hal! {
127-
pac::TIM1,
128-
pac::TIM5,
118+
fn read_direction(&self) -> bool {
119+
self.cr1.read().dir().bit_is_clear()
120+
}
121+
}
122+
};
129123
}
130124

125+
#[cfg(feature = "tim1")]
126+
hal! { pac::TIM1 }
131127
#[cfg(feature = "tim2")]
132-
hal! {
133-
pac::TIM2,
134-
pac::TIM3,
135-
pac::TIM4,
136-
}
137-
128+
hal! { pac::TIM2 }
129+
#[cfg(feature = "tim3")]
130+
hal! { pac::TIM3 }
131+
#[cfg(feature = "tim4")]
132+
hal! { pac::TIM4 }
133+
#[cfg(feature = "tim5")]
134+
hal! { pac::TIM5 }
138135
#[cfg(feature = "tim8")]
139-
hal! {
140-
pac::TIM8,
141-
}
136+
hal! { pac::TIM8 }

src/rng.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
use core::cmp;
2424
use core::mem;
2525

26-
use crate::pac;
2726
use crate::pac::RNG;
2827
use crate::rcc::{Clocks, Enable, Reset};
2928
use core::num::NonZeroU32;
@@ -84,8 +83,10 @@ impl RngExt for RNG {
8483
fn constrain(self, clocks: &Clocks) -> Rng {
8584
cortex_m::interrupt::free(|_| {
8685
// enable RNG_CLK (peripheral clock)
87-
RNG::enable_unchecked();
88-
RNG::reset_unchecked();
86+
unsafe {
87+
RNG::enable_unchecked();
88+
RNG::reset_unchecked();
89+
}
8990

9091
// verify the clock configuration is valid
9192
let hclk = clocks.hclk();

0 commit comments

Comments
 (0)