diff options
| author | James Munns <[email protected]> | 2023-12-04 15:57:46 +0100 |
|---|---|---|
| committer | GitHub <[email protected]> | 2023-12-04 15:57:46 +0100 |
| commit | 18e89d741062e23446f9b04db7bcf0ecc3a0775b (patch) | |
| tree | 95c661f909ec84635cc5c5a7d5bafead2f6fd17c | |
| parent | 5f7cd821b55683f7773054a92ed4efa21c8abe19 (diff) | |
Add implementation note for embassy-stm32's time-driver
This is a detail I didn't originally understand when hoping to use TIM16/17 as alternative embassy-time driver providers.
Adding my note here to hopefully save the next person a little time.
| -rw-r--r-- | embassy-stm32/src/time_driver.rs | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/embassy-stm32/src/time_driver.rs b/embassy-stm32/src/time_driver.rs index 564c9d086..e2a4cc4da 100644 --- a/embassy-stm32/src/time_driver.rs +++ b/embassy-stm32/src/time_driver.rs | |||
| @@ -18,6 +18,17 @@ use crate::rtc::Rtc; | |||
| 18 | use crate::timer::sealed::{Basic16bitInstance as BasicInstance, GeneralPurpose16bitInstance as Instance}; | 18 | use crate::timer::sealed::{Basic16bitInstance as BasicInstance, GeneralPurpose16bitInstance as Instance}; |
| 19 | use crate::{interrupt, peripherals}; | 19 | use crate::{interrupt, peripherals}; |
| 20 | 20 | ||
| 21 | // NOTE regarding ALARM_COUNT: | ||
| 22 | // | ||
| 23 | // As of 2023-12-04, this driver is implemented using CC1 as the halfway rollover interrupt, and any | ||
| 24 | // additional CC capabilities to provide timer alarms to embassy-time. embassy-time requires AT LEAST | ||
| 25 | // one alarm to be allocatable, which means timers that only have CC1, such as TIM16/TIM17, are not | ||
| 26 | // candidates for use as an embassy-time driver provider. | ||
| 27 | // | ||
| 28 | // The values of ALARM_COUNT below are not the TOTAL CC registers available, but rather the number | ||
| 29 | // available after reserving CC1 for regular time keeping. For example, TIM2 has four CC registers: | ||
| 30 | // CC1, CC2, CC3, and CC4, so it can provide ALARM_COUNT = 3. | ||
| 31 | |||
| 21 | #[cfg(not(any(time_driver_tim12, time_driver_tim15)))] | 32 | #[cfg(not(any(time_driver_tim12, time_driver_tim15)))] |
| 22 | const ALARM_COUNT: usize = 3; | 33 | const ALARM_COUNT: usize = 3; |
| 23 | 34 | ||
