aboutsummaryrefslogtreecommitdiffstats
path: root/testhal/STM32/STM32F7xx/GPT-ADC/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'testhal/STM32/STM32F7xx/GPT-ADC/main.c')
-rw-r--r--testhal/STM32/STM32F7xx/GPT-ADC/main.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/testhal/STM32/STM32F7xx/GPT-ADC/main.c b/testhal/STM32/STM32F7xx/GPT-ADC/main.c
index 1f65197c3..4e1b27520 100644
--- a/testhal/STM32/STM32F7xx/GPT-ADC/main.c
+++ b/testhal/STM32/STM32F7xx/GPT-ADC/main.c
@@ -38,6 +38,12 @@ static const GPTConfig gpt4cfg1 = {
#define ADC_GRP1_NUM_CHANNELS 2
#define ADC_GRP1_BUF_DEPTH 64
+/* Note, the buffer is aligned to a 32 bytes boundary because limitations
+ imposed by the data cache. Note, this is GNU specific, it must be
+ handled differently for other compilers.*/
+#if defined(__GNUC__)
+__attribute__((aligned (32)))
+#endif
static adcsample_t samples1[ADC_GRP1_NUM_CHANNELS * ADC_GRP1_BUF_DEPTH];
/*
@@ -46,7 +52,8 @@ static adcsample_t samples1[ADC_GRP1_NUM_CHANNELS * ADC_GRP1_BUF_DEPTH];
size_t nx = 0, ny = 0;
static void adccallback(ADCDriver *adcp, adcsample_t *buffer, size_t n) {
- (void)adcp;
+ /* DMA buffer invalidation because data cache.*/
+ dmaBufferInvalidate(buffer, buffer + (n * adcp->grpp->num_channels));
/* Updating counters.*/
if (samples1 == buffer) {