From: Lucjan Bryndza <lbryndza....@icloud.com> The current implementation of timers does not work properly even in basic functionality. A counter configured to report an interrupt every 10ms reports the first interrupts after a few seconds. There are also no properly implemented count up and count down modes. This commit fixes bugs with interrupt reporting and implements the basic modes of the counter's time-base block. Add time base registers definitions
Signed-off-by: Lucjan Bryndza <lbryndza....@icloud.com> --- include/hw/timer/stm32f2xx_timer.h | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/include/hw/timer/stm32f2xx_timer.h b/include/hw/timer/stm32f2xx_timer.h index 90f40f1746..8112878aa7 100644 --- a/include/hw/timer/stm32f2xx_timer.h +++ b/include/hw/timer/stm32f2xx_timer.h @@ -49,9 +49,15 @@ #define TIM_DMAR 0x4C #define TIM_OR 0x50 -#define TIM_CR1_CEN 1 +#define TIM_CR1_CEN 0x0001 +#define TIM_CR1_DIR 0x0010 +#define TIM_CR1_CMS 0x0060 +#define TIM_CR1_OPM 0x0008 -#define TIM_EGR_UG 1 +#define TIM_SR1_UIF 0x0001 + +#define TIM_EGR_UG 0x0001 +#define TIM_EGR_TG 0x0040 #define TIM_CCER_CC2E (1 << 4) #define TIM_CCMR1_OC2M2 (1 << 14) @@ -61,6 +67,7 @@ #define TIM_DIER_UIE 1 + #define TYPE_STM32F2XX_TIMER "stm32f2xx-timer" typedef struct STM32F2XXTimerState STM32F2XXTimerState; DECLARE_INSTANCE_CHECKER(STM32F2XXTimerState, STM32F2XXTIMER, @@ -99,4 +106,9 @@ struct STM32F2XXTimerState { uint32_t tim_or; }; +enum { + TIMER_UP_COUNT = 0, + TIMER_DOWN_COUNT = 1 +}; + #endif /* HW_STM32F2XX_TIMER_H */ -- 2.38.5