From 4bbe59b24be734e42de76ea59d2e7d68a6c92c94 Mon Sep 17 00:00:00 2001
From: Birte Kristina Friesel <birte.friesel@uos.de>
Date: Thu, 15 Feb 2024 16:59:42 +0100
Subject: [PATCH] stm32f7: Working counter

---
 README.md                                | 2 --
 src/arch/stm32f746zg-nucleo/Makefile.inc | 8 ++++----
 src/arch/stm32f746zg-nucleo/arch.cc      | 2 ++
 3 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/README.md b/README.md
index 4997ab5..c7983d4 100644
--- a/README.md
+++ b/README.md
@@ -135,8 +135,6 @@ Peripheral communication:
 
 ### STM32F746ZG (NUCLEO-F746ZG)
 
-Preliminary support, timers may be incorrect.
-
 Peripheral communication:
 
 * UART output on USART3
diff --git a/src/arch/stm32f746zg-nucleo/Makefile.inc b/src/arch/stm32f746zg-nucleo/Makefile.inc
index 17c7e65..fada19d 100644
--- a/src/arch/stm32f746zg-nucleo/Makefile.inc
+++ b/src/arch/stm32f746zg-nucleo/Makefile.inc
@@ -7,6 +7,7 @@
 SERIAL_PORT ?= ttyACM0
 
 cpu_freq ?= 216000000
+counter_freq ?= 108000000
 
 INCLUDES += -Iext/libopencm3/include
 
@@ -114,7 +115,7 @@ arch_clean:
 	${QUIET}rm -f ${OBJECTS}
 
 cat:
-	${QUIET}script/cat.py /dev/${SERIAL_PORT} 115200 ${cpu_freq} 65536
+	${QUIET}script/cat.py /dev/${SERIAL_PORT} 115200 ${counter_freq} 4294967296
 
 monitor:
 	${QUIET}screen /dev/${SERIAL_PORT} 115200
@@ -126,9 +127,8 @@ arch_help:
 
 arch_info:
 	@echo "CPU   Freq: ${cpu_freq} Hz"
-	@echo "Timer Freq: ${timer_freq} Hz -> $(shell src/arch/stm32f746zg-nucleo/model.py f_timer "${cpu_freq}" "${timer_freq}")"
-	@echo "I2C   Freq: ${i2c_freq} Hz"
-	@echo "Counter Overflow: 4294967296/255"
+	@echo "Count Freq: ${counter_freq} Hz"
+	@echo "Counter Overflow: 4294967296/4294967295"
 	@echo "Monitor: /dev/${SERIAL_PORT} 115200"
 
 attributes: build/system.elf
diff --git a/src/arch/stm32f746zg-nucleo/arch.cc b/src/arch/stm32f746zg-nucleo/arch.cc
index 4adb883..443a2cf 100644
--- a/src/arch/stm32f746zg-nucleo/arch.cc
+++ b/src/arch/stm32f746zg-nucleo/arch.cc
@@ -21,6 +21,7 @@ void Arch::setup(void)
 #error Unsupported F_CPU
 #endif
 
+#ifdef CONFIG_arch_stm32f746zg_nucleo_driver_counter
 	// counter
 	rcc_periph_clock_enable(RCC_TIM2);
 	nvic_enable_irq(NVIC_TIM2_IRQ);
@@ -32,6 +33,7 @@ void Arch::setup(void)
 	timer_continuous_mode(TIM2);
 	timer_set_period(TIM2, 4294967295);
 	timer_enable_irq(TIM2, TIM_DIER_UIE);
+#endif
 
 #ifdef CONFIG_loop
 	rcc_periph_clock_enable(RCC_TIM3);
-- 
GitLab