Skip to content

Commit 533498e

Browse files
committed
F407_disco trigger ADC by timer
1 parent 905ae69 commit 533498e

File tree

6 files changed

+42
-47
lines changed

6 files changed

+42
-47
lines changed

Firmware/Targets/F407VG_DISCO/.cproject

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,7 @@
247247
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.nanoprintffloat.1586695396" name="Use float with printf from newlib-nano (-u _printf_float)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.nanoprintffloat" useByScannerDiscovery="false" value="true" valueType="boolean"/>
248248
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.converthex.1723306711" name="Convert to Intel Hex file (-O ihex)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.converthex" useByScannerDiscovery="false" value="true" valueType="boolean"/>
249249
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.runtimelibrary_cpp.692226491" name="Runtime library" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.runtimelibrary_cpp" useByScannerDiscovery="true" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.runtimelibrary_cpp.value.standard_c_nano_cpp" valueType="enumerated"/>
250-
<option id="com.st.stm32cube.ide.mcu.debug.option.cpuclock.1945594623" superClass="com.st.stm32cube.ide.mcu.debug.option.cpuclock" value="168" valueType="string"/>
250+
<option id="com.st.stm32cube.ide.mcu.debug.option.cpuclock.1945594623" superClass="com.st.stm32cube.ide.mcu.debug.option.cpuclock" useByScannerDiscovery="false" value="168" valueType="string"/>
251251
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform.830438003" isAbstract="false" osList="all" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform"/>
252252
<builder buildPath="${workspace_loc:/F407VG}/Debug" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder.587985951" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder"/>
253253
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.1451593181" name="MCU GCC Assembler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler">

Firmware/Targets/F407VG_DISCO/Core/Inc/stm32f4xx_it.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,6 @@ void CAN1_RX0_IRQHandler(void);
6464
void EXTI9_5_IRQHandler(void);
6565
void TIM1_BRK_TIM9_IRQHandler(void);
6666
void TIM2_IRQHandler(void);
67-
void TIM4_IRQHandler(void);
6867
void I2C1_EV_IRQHandler(void);
6968
void USART1_IRQHandler(void);
7069
void USART3_IRQHandler(void);

Firmware/Targets/F407VG_DISCO/Core/Src/main.c

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -284,9 +284,6 @@ static void MX_NVIC_Init(void)
284284
/* DMA2_Stream0_IRQn interrupt configuration */
285285
HAL_NVIC_SetPriority(DMA2_Stream0_IRQn, 5, 0);
286286
HAL_NVIC_EnableIRQ(DMA2_Stream0_IRQn);
287-
/* TIM4_IRQn interrupt configuration */
288-
HAL_NVIC_SetPriority(TIM4_IRQn, 6, 0);
289-
HAL_NVIC_EnableIRQ(TIM4_IRQn);
290287
}
291288

292289
/**
@@ -313,10 +310,10 @@ static void MX_ADC1_Init(void)
313310
hadc1.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV4;
314311
hadc1.Init.Resolution = ADC_RESOLUTION_12B;
315312
hadc1.Init.ScanConvMode = ENABLE;
316-
hadc1.Init.ContinuousConvMode = ENABLE;
313+
hadc1.Init.ContinuousConvMode = DISABLE;
317314
hadc1.Init.DiscontinuousConvMode = DISABLE;
318-
hadc1.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;
319-
hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START;
315+
hadc1.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_RISING;
316+
hadc1.Init.ExternalTrigConv = ADC_EXTERNALTRIGCONV_T4_CC4;
320317
hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;
321318
hadc1.Init.NbrOfConversion = 5;
322319
hadc1.Init.DMAContinuousRequests = ENABLE;
@@ -402,10 +399,10 @@ static void MX_ADC2_Init(void)
402399
hadc2.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV4;
403400
hadc2.Init.Resolution = ADC_RESOLUTION_12B;
404401
hadc2.Init.ScanConvMode = ENABLE;
405-
hadc2.Init.ContinuousConvMode = ENABLE;
402+
hadc2.Init.ContinuousConvMode = DISABLE;
406403
hadc2.Init.DiscontinuousConvMode = DISABLE;
407-
hadc2.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;
408-
hadc2.Init.ExternalTrigConv = ADC_SOFTWARE_START;
404+
hadc2.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_RISINGFALLING;
405+
hadc2.Init.ExternalTrigConv = ADC_EXTERNALTRIGCONV_T4_CC4;
409406
hadc2.Init.DataAlign = ADC_DATAALIGN_RIGHT;
410407
hadc2.Init.NbrOfConversion = 2;
411408
hadc2.Init.DMAContinuousRequests = ENABLE;
@@ -809,14 +806,15 @@ static void MX_TIM4_Init(void)
809806

810807
TIM_ClockConfigTypeDef sClockSourceConfig = {0};
811808
TIM_MasterConfigTypeDef sMasterConfig = {0};
809+
TIM_OC_InitTypeDef sConfigOC = {0};
812810

813811
/* USER CODE BEGIN TIM4_Init 1 */
814812

815813
/* USER CODE END TIM4_Init 1 */
816814
htim4.Instance = TIM4;
817-
htim4.Init.Prescaler = 168-1;
815+
htim4.Init.Prescaler = 84-1;
818816
htim4.Init.CounterMode = TIM_COUNTERMODE_UP;
819-
htim4.Init.Period = 0xffff;
817+
htim4.Init.Period = 100;
820818
htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
821819
htim4.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
822820
if (HAL_TIM_Base_Init(&htim4) != HAL_OK)
@@ -828,14 +826,26 @@ static void MX_TIM4_Init(void)
828826
{
829827
Error_Handler();
830828
}
829+
if (HAL_TIM_PWM_Init(&htim4) != HAL_OK)
830+
{
831+
Error_Handler();
832+
}
831833
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
832834
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
833835
if (HAL_TIMEx_MasterConfigSynchronization(&htim4, &sMasterConfig) != HAL_OK)
834836
{
835837
Error_Handler();
836838
}
839+
sConfigOC.OCMode = TIM_OCMODE_PWM1;
840+
sConfigOC.Pulse = 50;
841+
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
842+
sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
843+
if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_4) != HAL_OK)
844+
{
845+
Error_Handler();
846+
}
837847
/* USER CODE BEGIN TIM4_Init 2 */
838-
848+
HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_4);
839849
/* USER CODE END TIM4_Init 2 */
840850

841851
}

Firmware/Targets/F407VG_DISCO/Core/Src/stm32f4xx_hal_msp.c

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -917,9 +917,6 @@ void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* htim_base)
917917
/* USER CODE END TIM4_MspDeInit 0 */
918918
/* Peripheral clock disable */
919919
__HAL_RCC_TIM4_CLK_DISABLE();
920-
921-
/* TIM4 interrupt DeInit */
922-
HAL_NVIC_DisableIRQ(TIM4_IRQn);
923920
/* USER CODE BEGIN TIM4_MspDeInit 1 */
924921

925922
/* USER CODE END TIM4_MspDeInit 1 */

Firmware/Targets/F407VG_DISCO/Core/Src/stm32f4xx_it.c

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,6 @@ extern DMA_HandleTypeDef hdma_spi3_tx;
7171
extern SPI_HandleTypeDef hspi3;
7272
extern TIM_HandleTypeDef htim1;
7373
extern TIM_HandleTypeDef htim2;
74-
extern TIM_HandleTypeDef htim4;
7574
extern TIM_HandleTypeDef htim5;
7675
extern TIM_HandleTypeDef htim6;
7776
extern TIM_HandleTypeDef htim9;
@@ -337,20 +336,6 @@ void TIM2_IRQHandler(void)
337336
/* USER CODE END TIM2_IRQn 1 */
338337
}
339338

340-
/**
341-
* @brief This function handles TIM4 global interrupt.
342-
*/
343-
void TIM4_IRQHandler(void)
344-
{
345-
/* USER CODE BEGIN TIM4_IRQn 0 */
346-
347-
/* USER CODE END TIM4_IRQn 0 */
348-
HAL_TIM_IRQHandler(&htim4);
349-
/* USER CODE BEGIN TIM4_IRQn 1 */
350-
351-
/* USER CODE END TIM4_IRQn 1 */
352-
}
353-
354339
/**
355340
* @brief This function handles I2C1 event interrupt.
356341
*/

Firmware/Targets/F407VG_DISCO/OpenFFBoard_F407VG_DISCO.ioc

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@ ADC1.Channel-3\#ChannelRegularConversion=ADC_CHANNEL_14
55
ADC1.Channel-4\#ChannelRegularConversion=ADC_CHANNEL_TEMPSENSOR
66
ADC1.Channel-5\#ChannelRegularConversion=ADC_CHANNEL_VREFINT
77
ADC1.ClockPrescaler=ADC_CLOCK_SYNC_PCLK_DIV4
8-
ADC1.ContinuousConvMode=ENABLE
8+
ADC1.ContinuousConvMode=DISABLE
99
ADC1.DMAContinuousRequests=ENABLE
1010
ADC1.DataAlign=ADC_DATAALIGN_RIGHT
1111
ADC1.DiscontinuousConvMode=DISABLE
1212
ADC1.EOCSelection=ADC_EOC_SINGLE_CONV
1313
ADC1.EnableAnalogWatchDog=false
14-
ADC1.ExternalTrigConv=ADC_SOFTWARE_START
15-
ADC1.ExternalTrigConvEdge=ADC_EXTERNALTRIGCONVEDGE_NONE
14+
ADC1.ExternalTrigConv=ADC_EXTERNALTRIGCONV_T4_CC4
15+
ADC1.ExternalTrigConvEdge=ADC_EXTERNALTRIGCONVEDGE_RISING
1616
ADC1.IPParameters=Mode,Resolution,DataAlign,ContinuousConvMode,DiscontinuousConvMode,DMAContinuousRequests,EOCSelection,NbrOfConversion,ExternalTrigConv,ExternalTrigConvEdge,InjNumberOfConversion,EnableAnalogWatchDog,Rank-1\#ChannelRegularConversion,Channel-1\#ChannelRegularConversion,SamplingTime-1\#ChannelRegularConversion,Rank-2\#ChannelRegularConversion,Channel-2\#ChannelRegularConversion,SamplingTime-2\#ChannelRegularConversion,Rank-3\#ChannelRegularConversion,Channel-3\#ChannelRegularConversion,SamplingTime-3\#ChannelRegularConversion,master,ClockPrescaler,Rank-4\#ChannelRegularConversion,Channel-4\#ChannelRegularConversion,SamplingTime-4\#ChannelRegularConversion,Rank-5\#ChannelRegularConversion,Channel-5\#ChannelRegularConversion,SamplingTime-5\#ChannelRegularConversion
1717
ADC1.InjNumberOfConversion=0
1818
ADC1.Mode=__NULL
@@ -32,14 +32,14 @@ ADC1.master=1
3232
ADC2.Channel-0\#ChannelRegularConversion=ADC_CHANNEL_3
3333
ADC2.Channel-1\#ChannelRegularConversion=ADC_CHANNEL_15
3434
ADC2.ClockPrescaler=ADC_CLOCK_SYNC_PCLK_DIV4
35-
ADC2.ContinuousConvMode=ENABLE
35+
ADC2.ContinuousConvMode=DISABLE
3636
ADC2.DMAContinuousRequests=ENABLE
3737
ADC2.DataAlign=ADC_DATAALIGN_RIGHT
3838
ADC2.DiscontinuousConvMode=DISABLE
3939
ADC2.EOCSelection=ADC_EOC_SINGLE_CONV
4040
ADC2.EnableAnalogWatchDog=false
41-
ADC2.ExternalTrigConv=ADC_SOFTWARE_START
42-
ADC2.ExternalTrigConvEdge=ADC_EXTERNALTRIGCONVEDGE_NONE
41+
ADC2.ExternalTrigConv=ADC_EXTERNALTRIGCONV_T4_CC4
42+
ADC2.ExternalTrigConvEdge=ADC_EXTERNALTRIGCONVEDGE_RISINGFALLING
4343
ADC2.IPParameters=Mode,Resolution,DataAlign,ContinuousConvMode,DiscontinuousConvMode,DMAContinuousRequests,EOCSelection,NbrOfConversion,ExternalTrigConv,ExternalTrigConvEdge,InjNumberOfConversion,EnableAnalogWatchDog,Rank-0\#ChannelRegularConversion,Channel-0\#ChannelRegularConversion,SamplingTime-0\#ChannelRegularConversion,ScanConvMode,Rank-1\#ChannelRegularConversion,Channel-1\#ChannelRegularConversion,SamplingTime-1\#ChannelRegularConversion,ClockPrescaler
4444
ADC2.InjNumberOfConversion=0
4545
ADC2.Mode=__NULL
@@ -286,13 +286,14 @@ Mcu.Pin7=PC15-OSC32_OUT
286286
Mcu.Pin70=VP_SYS_VS_tim7
287287
Mcu.Pin71=VP_TIM1_VS_ClockSourceINT
288288
Mcu.Pin72=VP_TIM4_VS_ClockSourceINT
289-
Mcu.Pin73=VP_TIM5_VS_ClockSourceINT
290-
Mcu.Pin74=VP_TIM6_VS_ClockSourceINT
291-
Mcu.Pin75=VP_TIM9_VS_ClockSourceINT
292-
Mcu.Pin76=VP_TIM13_VS_ClockSourceINT
289+
Mcu.Pin73=VP_TIM4_VS_no_output4
290+
Mcu.Pin74=VP_TIM5_VS_ClockSourceINT
291+
Mcu.Pin75=VP_TIM6_VS_ClockSourceINT
292+
Mcu.Pin76=VP_TIM9_VS_ClockSourceINT
293+
Mcu.Pin77=VP_TIM13_VS_ClockSourceINT
293294
Mcu.Pin8=PH0-OSC_IN
294295
Mcu.Pin9=PH1-OSC_OUT
295-
Mcu.PinsNb=77
296+
Mcu.PinsNb=78
296297
Mcu.ThirdPartyNb=0
297298
Mcu.UserConstants=
298299
Mcu.UserName=STM32F407VGTx
@@ -329,7 +330,6 @@ NVIC.SavedSystickIrqHandlerGenerated=true
329330
NVIC.SysTick_IRQn=true\:15\:0\:true\:false\:false\:true\:false\:true\:false
330331
NVIC.TIM1_BRK_TIM9_IRQn=true\:6\:0\:true\:false\:true\:true\:true\:true\:true
331332
NVIC.TIM2_IRQn=true\:7\:0\:true\:false\:true\:true\:true\:true\:true
332-
NVIC.TIM4_IRQn=true\:6\:0\:true\:true\:true\:2\:true\:true\:true\:true
333333
NVIC.TIM5_IRQn=true\:6\:0\:true\:false\:true\:true\:true\:true\:true
334334
NVIC.TIM6_DAC_IRQn=true\:9\:0\:true\:false\:true\:true\:true\:true\:true
335335
NVIC.TIM7_IRQn=true\:4\:0\:true\:false\:true\:false\:false\:true\:true
@@ -819,11 +819,13 @@ TIM2.Prescaler=0
819819
TIM2.TIM_MasterOutputTrigger=TIM_TRGO_RESET
820820
TIM2.TIM_MasterSlaveMode=TIM_MASTERSLAVEMODE_DISABLE
821821
TIM4.AutoReloadPreload=TIM_AUTORELOAD_PRELOAD_DISABLE
822+
TIM4.Channel-PWM\ Generation4\ No\ Output=TIM_CHANNEL_4
822823
TIM4.ClockDivision=TIM_CLOCKDIVISION_DIV1
823824
TIM4.CounterMode=TIM_COUNTERMODE_UP
824-
TIM4.IPParameters=Prescaler,CounterMode,Period,ClockDivision,AutoReloadPreload,TIM_MasterSlaveMode,TIM_MasterOutputTrigger
825-
TIM4.Period=0xffff
826-
TIM4.Prescaler=168-1
825+
TIM4.IPParameters=Prescaler,CounterMode,Period,ClockDivision,AutoReloadPreload,TIM_MasterSlaveMode,TIM_MasterOutputTrigger,Channel-PWM Generation4 No Output,Pulse-PWM Generation4 No Output
826+
TIM4.Period=100
827+
TIM4.Prescaler=84-1
828+
TIM4.Pulse-PWM\ Generation4\ No\ Output=50
827829
TIM4.TIM_MasterOutputTrigger=TIM_TRGO_RESET
828830
TIM4.TIM_MasterSlaveMode=TIM_MASTERSLAVEMODE_DISABLE
829831
TIM5.AutoReloadPreload=TIM_AUTORELOAD_PRELOAD_DISABLE
@@ -862,6 +864,8 @@ VP_TIM1_VS_ClockSourceINT.Mode=Internal
862864
VP_TIM1_VS_ClockSourceINT.Signal=TIM1_VS_ClockSourceINT
863865
VP_TIM4_VS_ClockSourceINT.Mode=Internal
864866
VP_TIM4_VS_ClockSourceINT.Signal=TIM4_VS_ClockSourceINT
867+
VP_TIM4_VS_no_output4.Mode=PWM Generation4 No Output
868+
VP_TIM4_VS_no_output4.Signal=TIM4_VS_no_output4
865869
VP_TIM5_VS_ClockSourceINT.Mode=Internal
866870
VP_TIM5_VS_ClockSourceINT.Signal=TIM5_VS_ClockSourceINT
867871
VP_TIM6_VS_ClockSourceINT.Mode=Enable_Timer

0 commit comments

Comments
 (0)