Merge pull request #2450 from shufps/feat/timer-driver-tim22-tim23
adds timer-driver for tim21 and tim22 (on L0)
This commit is contained in:
commit
9cd0beaee3
3 changed files with 32 additions and 2 deletions
|
@ -139,6 +139,10 @@ time-driver-tim11 = ["_time-driver"]
|
||||||
time-driver-tim12 = ["_time-driver"]
|
time-driver-tim12 = ["_time-driver"]
|
||||||
## Use TIM15 as time driver
|
## Use TIM15 as time driver
|
||||||
time-driver-tim15 = ["_time-driver"]
|
time-driver-tim15 = ["_time-driver"]
|
||||||
|
## Use TIM21 as time driver
|
||||||
|
time-driver-tim21 = ["_time-driver"]
|
||||||
|
## Use TIM22 as time driver
|
||||||
|
time-driver-tim22 = ["_time-driver"]
|
||||||
|
|
||||||
|
|
||||||
#! ## Analog Switch Pins (Pxy_C) on STM32H7 series
|
#! ## Analog Switch Pins (Pxy_C) on STM32H7 series
|
||||||
|
|
|
@ -191,6 +191,8 @@ fn main() {
|
||||||
Some("tim11") => "TIM11",
|
Some("tim11") => "TIM11",
|
||||||
Some("tim12") => "TIM12",
|
Some("tim12") => "TIM12",
|
||||||
Some("tim15") => "TIM15",
|
Some("tim15") => "TIM15",
|
||||||
|
Some("tim21") => "TIM21",
|
||||||
|
Some("tim22") => "TIM22",
|
||||||
Some("any") => {
|
Some("any") => {
|
||||||
if singletons.contains(&"TIM2".to_string()) {
|
if singletons.contains(&"TIM2".to_string()) {
|
||||||
"TIM2"
|
"TIM2"
|
||||||
|
@ -208,6 +210,10 @@ fn main() {
|
||||||
"TIM12"
|
"TIM12"
|
||||||
} else if singletons.contains(&"TIM15".to_string()) {
|
} else if singletons.contains(&"TIM15".to_string()) {
|
||||||
"TIM15"
|
"TIM15"
|
||||||
|
} else if singletons.contains(&"TIM21".to_string()) {
|
||||||
|
"TIM21"
|
||||||
|
} else if singletons.contains(&"TIM22".to_string()) {
|
||||||
|
"TIM22"
|
||||||
} else {
|
} else {
|
||||||
panic!("time-driver-any requested, but the chip doesn't have TIM2, TIM3, TIM4, TIM5, TIM9, TIM11, TIM12 or TIM15.")
|
panic!("time-driver-any requested, but the chip doesn't have TIM2, TIM3, TIM4, TIM5, TIM9, TIM11, TIM12 or TIM15.")
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,10 +28,10 @@ use crate::{interrupt, peripherals};
|
||||||
// available after reserving CC1 for regular time keeping. For example, TIM2 has four CC registers:
|
// available after reserving CC1 for regular time keeping. For example, TIM2 has four CC registers:
|
||||||
// CC1, CC2, CC3, and CC4, so it can provide ALARM_COUNT = 3.
|
// CC1, CC2, CC3, and CC4, so it can provide ALARM_COUNT = 3.
|
||||||
|
|
||||||
#[cfg(not(any(time_driver_tim12, time_driver_tim15)))]
|
#[cfg(not(any(time_driver_tim12, time_driver_tim15, time_driver_tim21, time_driver_tim22)))]
|
||||||
const ALARM_COUNT: usize = 3;
|
const ALARM_COUNT: usize = 3;
|
||||||
|
|
||||||
#[cfg(any(time_driver_tim12, time_driver_tim15))]
|
#[cfg(any(time_driver_tim12, time_driver_tim15, time_driver_tim21, time_driver_tim22))]
|
||||||
const ALARM_COUNT: usize = 1;
|
const ALARM_COUNT: usize = 1;
|
||||||
|
|
||||||
#[cfg(time_driver_tim2)]
|
#[cfg(time_driver_tim2)]
|
||||||
|
@ -50,6 +50,10 @@ type T = peripherals::TIM11;
|
||||||
type T = peripherals::TIM12;
|
type T = peripherals::TIM12;
|
||||||
#[cfg(time_driver_tim15)]
|
#[cfg(time_driver_tim15)]
|
||||||
type T = peripherals::TIM15;
|
type T = peripherals::TIM15;
|
||||||
|
#[cfg(time_driver_tim21)]
|
||||||
|
type T = peripherals::TIM21;
|
||||||
|
#[cfg(time_driver_tim22)]
|
||||||
|
type T = peripherals::TIM22;
|
||||||
|
|
||||||
foreach_interrupt! {
|
foreach_interrupt! {
|
||||||
(TIM2, timer, $block:ident, UP, $irq:ident) => {
|
(TIM2, timer, $block:ident, UP, $irq:ident) => {
|
||||||
|
@ -116,6 +120,22 @@ foreach_interrupt! {
|
||||||
DRIVER.on_interrupt()
|
DRIVER.on_interrupt()
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
(TIM21, timer, $block:ident, UP, $irq:ident) => {
|
||||||
|
#[cfg(time_driver_tim21)]
|
||||||
|
#[cfg(feature = "rt")]
|
||||||
|
#[interrupt]
|
||||||
|
fn $irq() {
|
||||||
|
DRIVER.on_interrupt()
|
||||||
|
}
|
||||||
|
};
|
||||||
|
(TIM22, timer, $block:ident, UP, $irq:ident) => {
|
||||||
|
#[cfg(time_driver_tim22)]
|
||||||
|
#[cfg(feature = "rt")]
|
||||||
|
#[interrupt]
|
||||||
|
fn $irq() {
|
||||||
|
DRIVER.on_interrupt()
|
||||||
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
// Clock timekeeping works with something we call "periods", which are time intervals
|
// Clock timekeeping works with something we call "periods", which are time intervals
|
||||||
|
|
Loading…
Reference in a new issue