diff --git a/testhal/STM32/multi/ADC/.cproject b/testhal/STM32/multi/ADC/.cproject index 1b8427810..07eba767f 100644 --- a/testhal/STM32/multi/ADC/.cproject +++ b/testhal/STM32/multi/ADC/.cproject @@ -151,10 +151,16 @@ - + - + + + + + + + diff --git a/testhal/STM32/multi/ADC/cfg/stm32h743_nucleo144/mcuconf.h b/testhal/STM32/multi/ADC/cfg/stm32h743_nucleo144/mcuconf.h index da2d83264..5b6e99c00 100644 --- a/testhal/STM32/multi/ADC/cfg/stm32h743_nucleo144/mcuconf.h +++ b/testhal/STM32/multi/ADC/cfg/stm32h743_nucleo144/mcuconf.h @@ -223,9 +223,9 @@ #define STM32_GPT_USE_TIM1 FALSE #define STM32_GPT_USE_TIM2 FALSE #define STM32_GPT_USE_TIM3 FALSE -#define STM32_GPT_USE_TIM4 FALSE +#define STM32_GPT_USE_TIM4 TRUE #define STM32_GPT_USE_TIM5 FALSE -#define STM32_GPT_USE_TIM6 TRUE +#define STM32_GPT_USE_TIM6 FALSE #define STM32_GPT_USE_TIM7 FALSE #define STM32_GPT_USE_TIM8 FALSE #define STM32_GPT_USE_TIM9 FALSE diff --git a/testhal/STM32/multi/ADC/cfg/stm32h743_nucleo144/portab.h b/testhal/STM32/multi/ADC/cfg/stm32h743_nucleo144/portab.h index 56ae995fa..500e4f2ab 100644 --- a/testhal/STM32/multi/ADC/cfg/stm32h743_nucleo144/portab.h +++ b/testhal/STM32/multi/ADC/cfg/stm32h743_nucleo144/portab.h @@ -67,6 +67,7 @@ extern const GPTConfig portab_gptcfg1; extern const ADCConfig portab_adccfg1; extern const ADCConversionGroup portab_adcgrpcfg1; +extern const ADCConversionGroup portab_adcgrpcfg2; #ifdef __cplusplus extern "C" { diff --git a/testhal/STM32/multi/ADC/debug/STM32-ADC (Select ELF file)(OpenOCD, Flash and Run).launch b/testhal/STM32/multi/ADC/debug/STM32-ADC (Select ELF file)(OpenOCD, Flash and Run).launch index be98c7537..98cf3d524 100644 --- a/testhal/STM32/multi/ADC/debug/STM32-ADC (Select ELF file)(OpenOCD, Flash and Run).launch +++ b/testhal/STM32/multi/ADC/debug/STM32-ADC (Select ELF file)(OpenOCD, Flash and Run).launch @@ -33,7 +33,7 @@ - + diff --git a/testhal/STM32/multi/ADC/main.c b/testhal/STM32/multi/ADC/main.c index 5464bd7c5..8e26c3819 100644 --- a/testhal/STM32/multi/ADC/main.c +++ b/testhal/STM32/multi/ADC/main.c @@ -42,18 +42,23 @@ adcsample_t samples2[CACHE_SIZE_ALIGN(adcsample_t, ADC_GRP2_NUM_CHANNELS * ADC_G /* * ADC streaming callback. */ -size_t nx = 0, ny = 0; +size_t n= 0, nx = 0, ny = 0; void adccallback(ADCDriver *adcp) { (void)adcp; /* Updating counters.*/ + n++; if (adcIsBufferComplete(adcp)) { nx += 1; } else { ny += 1; } + + if ((n % 200) == 0U) { + palToggleLine(LINE_LED2); + } } /* @@ -112,7 +117,7 @@ int main(void) { chThdCreateStatic(waThread1, sizeof(waThread1), NORMALPRIO, Thread1, NULL); /* - * Activates the PORTAB_ADC1 driver and the temperature sensor. + * Starting PORTAB_ADC1 driver and the temperature sensor. */ adcStart(&PORTAB_ADC1, &portab_adccfg1); adcSTM32EnableVREF(&PORTAB_ADC1); @@ -122,12 +127,27 @@ int main(void) { adcConvert(&PORTAB_ADC1, &portab_adcgrpcfg1, samples1, ADC_GRP1_BUF_DEPTH); cacheBufferInvalidate(samples1, sizeof (samples1) / sizeof (adcsample_t)); + /* + * Starting PORTAB_GPT1 driver, it is used for triggering the ADC. + */ + gptStart(&PORTAB_GPT1, &portab_gptcfg1); + + /* + * Starting an ADC continuous conversion triggered with a period of + * 1/10000 second. + */ + adcStartConversion(&PORTAB_ADC1, &portab_adcgrpcfg2, + samples2, ADC_GRP2_BUF_DEPTH); + gptStartContinuous(&PORTAB_GPT1, 100U); + /* * Normal main() thread activity, if the button is pressed then the * conversion is stopped. */ while (true) { if (palReadLine(PORTAB_LINE_BUTTON) == PORTAB_BUTTON_PRESSED) { + gptStopTimer(&PORTAB_GPT1); + adcStopConversion(&PORTAB_ADC1); } chThdSleepMilliseconds(500); }