diff --git a/cubemx/output/inverter2/Inc/mxconstants.h b/cubemx/output/inverter2/Inc/mxconstants.h index c34dc07..ff1a158 100644 --- a/cubemx/output/inverter2/Inc/mxconstants.h +++ b/cubemx/output/inverter2/Inc/mxconstants.h @@ -41,6 +41,12 @@ /* Private define ------------------------------------------------------------*/ +#define LED2_PIN_Pin GPIO_PIN_4 +#define LED2_PIN_GPIO_Port GPIOE +#define LED3_PIN_Pin GPIO_PIN_5 +#define LED3_PIN_GPIO_Port GPIOE +#define LED4_PIN_Pin GPIO_PIN_6 +#define LED4_PIN_GPIO_Port GPIOE #define LED_PIN_Pin GPIO_PIN_13 #define LED_PIN_GPIO_Port GPIOC /* USER CODE BEGIN Private defines */ diff --git a/cubemx/output/inverter2/Inc/stm32f1xx_hal_conf.h b/cubemx/output/inverter2/Inc/stm32f1xx_hal_conf.h index 86b72de..a3c1293 100644 --- a/cubemx/output/inverter2/Inc/stm32f1xx_hal_conf.h +++ b/cubemx/output/inverter2/Inc/stm32f1xx_hal_conf.h @@ -77,7 +77,7 @@ /*#define HAL_SMARTCARD_MODULE_ENABLED */ /*#define HAL_SPI_MODULE_ENABLED */ /*#define HAL_SRAM_MODULE_ENABLED */ -/*#define HAL_TIM_MODULE_ENABLED */ +#define HAL_TIM_MODULE_ENABLED /*#define HAL_UART_MODULE_ENABLED */ /*#define HAL_USART_MODULE_ENABLED */ /*#define HAL_WWDG_MODULE_ENABLED */ diff --git a/cubemx/output/inverter2/Inc/stm32f1xx_it.h b/cubemx/output/inverter2/Inc/stm32f1xx_it.h index 2cd9db0..8b7b204 100644 --- a/cubemx/output/inverter2/Inc/stm32f1xx_it.h +++ b/cubemx/output/inverter2/Inc/stm32f1xx_it.h @@ -54,6 +54,7 @@ void SVC_Handler(void); void DebugMon_Handler(void); void PendSV_Handler(void); void SysTick_Handler(void); +void TIM1_CC_IRQHandler(void); #ifdef __cplusplus } diff --git a/cubemx/output/inverter2/Src/main.c b/cubemx/output/inverter2/Src/main.c index db075f0..593b997 100644 --- a/cubemx/output/inverter2/Src/main.c +++ b/cubemx/output/inverter2/Src/main.c @@ -40,6 +40,9 @@ /* Private variables ---------------------------------------------------------*/ RTC_HandleTypeDef hrtc; +TIM_HandleTypeDef htim1; +TIM_HandleTypeDef htim2; + /* USER CODE BEGIN PV */ /* Private variables ---------------------------------------------------------*/ @@ -50,6 +53,11 @@ void SystemClock_Config(void); void Error_Handler(void); static void MX_GPIO_Init(void); static void MX_RTC_Init(void); +static void MX_TIM1_Init(void); +static void MX_TIM2_Init(void); + +void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim); + /* USER CODE BEGIN PFP */ /* Private function prototypes -----------------------------------------------*/ @@ -78,6 +86,8 @@ int main(void) /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_RTC_Init(); + MX_TIM1_Init(); + MX_TIM2_Init(); /* USER CODE BEGIN 2 */ @@ -181,6 +191,145 @@ static void MX_RTC_Init(void) } +/* TIM1 init function */ +static void MX_TIM1_Init(void) +{ + + TIM_ClockConfigTypeDef sClockSourceConfig; + TIM_MasterConfigTypeDef sMasterConfig; + TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig; + TIM_OC_InitTypeDef sConfigOC; + + htim1.Instance = TIM1; + htim1.Init.Prescaler = 36; + htim1.Init.CounterMode = TIM_COUNTERMODE_UP; + htim1.Init.Period = 10000; + htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + htim1.Init.RepetitionCounter = 0; + if (HAL_TIM_Base_Init(&htim1) != HAL_OK) + { + Error_Handler(); + } + + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK) + { + Error_Handler(); + } + + if (HAL_TIM_OC_Init(&htim1) != HAL_OK) + { + Error_Handler(); + } + + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) + { + Error_Handler(); + } + + sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_DISABLE; + sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_DISABLE; + sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_OFF; + sBreakDeadTimeConfig.DeadTime = 0; + sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE; + sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH; + sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE; + if (HAL_TIMEx_ConfigBreakDeadTime(&htim1, &sBreakDeadTimeConfig) != HAL_OK) + { + Error_Handler(); + } + + sConfigOC.OCMode = TIM_OCMODE_TIMING; + sConfigOC.Pulse = 1000; + sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; + sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH; + sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; + sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET; + sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET; + if (HAL_TIM_OC_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) + { + Error_Handler(); + } + + sConfigOC.Pulse = 2000; + if (HAL_TIM_OC_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) + { + Error_Handler(); + } + + sConfigOC.Pulse = 3000; + if (HAL_TIM_OC_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) + { + Error_Handler(); + } + + HAL_TIM_MspPostInit(&htim1); + +} + +/* TIM2 init function */ +static void MX_TIM2_Init(void) +{ + + TIM_ClockConfigTypeDef sClockSourceConfig; + TIM_MasterConfigTypeDef sMasterConfig; + TIM_OC_InitTypeDef sConfigOC; + + htim2.Instance = TIM2; + htim2.Init.Prescaler = 72; + htim2.Init.CounterMode = TIM_COUNTERMODE_UP; + htim2.Init.Period = 1000; + htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + if (HAL_TIM_Base_Init(&htim2) != HAL_OK) + { + Error_Handler(); + } + + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK) + { + Error_Handler(); + } + + if (HAL_TIM_OC_Init(&htim2) != HAL_OK) + { + Error_Handler(); + } + + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK) + { + Error_Handler(); + } + + sConfigOC.OCMode = TIM_OCMODE_TIMING; + sConfigOC.Pulse = 0; + sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; + sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; + if (HAL_TIM_OC_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) + { + Error_Handler(); + } + + sConfigOC.OCMode = TIM_OCMODE_FORCED_ACTIVE; + if (HAL_TIM_OC_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) + { + Error_Handler(); + } + + sConfigOC.OCMode = TIM_OCMODE_FORCED_INACTIVE; + if (HAL_TIM_OC_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) + { + Error_Handler(); + } + + HAL_TIM_MspPostInit(&htim2); + +} + /** Configure pins as * Analog * Input @@ -194,12 +343,22 @@ static void MX_GPIO_Init(void) GPIO_InitTypeDef GPIO_InitStruct; /* GPIO Ports Clock Enable */ + __HAL_RCC_GPIOE_CLK_ENABLE(); __HAL_RCC_GPIOC_CLK_ENABLE(); __HAL_RCC_GPIOA_CLK_ENABLE(); + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOE, LED2_PIN_Pin|LED3_PIN_Pin|LED4_PIN_Pin, GPIO_PIN_RESET); + /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(LED_PIN_GPIO_Port, LED_PIN_Pin, GPIO_PIN_RESET); + /*Configure GPIO pins : LED2_PIN_Pin LED3_PIN_Pin LED4_PIN_Pin */ + GPIO_InitStruct.Pin = LED2_PIN_Pin|LED3_PIN_Pin|LED4_PIN_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); + /*Configure GPIO pin : LED_PIN_Pin */ GPIO_InitStruct.Pin = LED_PIN_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; diff --git a/cubemx/output/inverter2/Src/stm32f1xx_hal_msp.c b/cubemx/output/inverter2/Src/stm32f1xx_hal_msp.c index b004b84..c458d56 100644 --- a/cubemx/output/inverter2/Src/stm32f1xx_hal_msp.c +++ b/cubemx/output/inverter2/Src/stm32f1xx_hal_msp.c @@ -114,6 +114,117 @@ void HAL_RTC_MspDeInit(RTC_HandleTypeDef* hrtc) } +void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base) +{ + + if(htim_base->Instance==TIM1) + { + /* USER CODE BEGIN TIM1_MspInit 0 */ + + /* USER CODE END TIM1_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_TIM1_CLK_ENABLE(); + /* Peripheral interrupt init */ + HAL_NVIC_SetPriority(TIM1_CC_IRQn, 0, 0); + HAL_NVIC_EnableIRQ(TIM1_CC_IRQn); + /* USER CODE BEGIN TIM1_MspInit 1 */ + + /* USER CODE END TIM1_MspInit 1 */ + } + else if(htim_base->Instance==TIM2) + { + /* USER CODE BEGIN TIM2_MspInit 0 */ + + /* USER CODE END TIM2_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_TIM2_CLK_ENABLE(); + /* USER CODE BEGIN TIM2_MspInit 1 */ + + /* USER CODE END TIM2_MspInit 1 */ + } + +} + +void HAL_TIM_MspPostInit(TIM_HandleTypeDef* htim) +{ + + GPIO_InitTypeDef GPIO_InitStruct; + if(htim->Instance==TIM1) + { + /* USER CODE BEGIN TIM1_MspPostInit 0 */ + + /* USER CODE END TIM1_MspPostInit 0 */ + /**TIM1 GPIO Configuration + PE9 ------> TIM1_CH1 + PE11 ------> TIM1_CH2 + PE13 ------> TIM1_CH3 + */ + GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_11|GPIO_PIN_13; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); + + __HAL_AFIO_REMAP_TIM1_ENABLE(); + + /* USER CODE BEGIN TIM1_MspPostInit 1 */ + + /* USER CODE END TIM1_MspPostInit 1 */ + } + else if(htim->Instance==TIM2) + { + /* USER CODE BEGIN TIM2_MspPostInit 0 */ + + /* USER CODE END TIM2_MspPostInit 0 */ + + /**TIM2 GPIO Configuration + PA0-WKUP ------> TIM2_CH1 + PA1 ------> TIM2_CH2 + PA2 ------> TIM2_CH3 + */ + GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /* USER CODE BEGIN TIM2_MspPostInit 1 */ + + /* USER CODE END TIM2_MspPostInit 1 */ + } + +} + +void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* htim_base) +{ + + if(htim_base->Instance==TIM1) + { + /* USER CODE BEGIN TIM1_MspDeInit 0 */ + + /* USER CODE END TIM1_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_TIM1_CLK_DISABLE(); + + /* Peripheral interrupt DeInit*/ + HAL_NVIC_DisableIRQ(TIM1_CC_IRQn); + + /* USER CODE BEGIN TIM1_MspDeInit 1 */ + + /* USER CODE END TIM1_MspDeInit 1 */ + } + else if(htim_base->Instance==TIM2) + { + /* USER CODE BEGIN TIM2_MspDeInit 0 */ + + /* USER CODE END TIM2_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_TIM2_CLK_DISABLE(); + /* USER CODE BEGIN TIM2_MspDeInit 1 */ + + /* USER CODE END TIM2_MspDeInit 1 */ + } + +} + /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ diff --git a/cubemx/output/inverter2/Src/stm32f1xx_it.c b/cubemx/output/inverter2/Src/stm32f1xx_it.c index ced17ec..5380e5b 100644 --- a/cubemx/output/inverter2/Src/stm32f1xx_it.c +++ b/cubemx/output/inverter2/Src/stm32f1xx_it.c @@ -40,6 +40,7 @@ /* USER CODE END 0 */ /* External variables --------------------------------------------------------*/ +extern TIM_HandleTypeDef htim1; /******************************************************************************/ /* Cortex-M3 Processor Interruption and Exception Handlers */ @@ -183,6 +184,20 @@ void SysTick_Handler(void) /* please refer to the startup file (startup_stm32f1xx.s). */ /******************************************************************************/ +/** +* @brief This function handles TIM1 capture compare interrupt. +*/ +void TIM1_CC_IRQHandler(void) +{ + /* USER CODE BEGIN TIM1_CC_IRQn 0 */ + + /* USER CODE END TIM1_CC_IRQn 0 */ + HAL_TIM_IRQHandler(&htim1); + /* USER CODE BEGIN TIM1_CC_IRQn 1 */ + + /* USER CODE END TIM1_CC_IRQn 1 */ +} + /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ diff --git a/cubemx/output/inverter2/inverter2.ioc b/cubemx/output/inverter2/inverter2.ioc index 55e9a7c..0df615a 100644 --- a/cubemx/output/inverter2/inverter2.ioc +++ b/cubemx/output/inverter2/inverter2.ioc @@ -6,17 +6,30 @@ Mcu.IP0=NVIC Mcu.IP1=RCC Mcu.IP2=RTC Mcu.IP3=SYS -Mcu.IPNb=4 +Mcu.IP4=TIM1 +Mcu.IP5=TIM2 +Mcu.IPNb=6 Mcu.Name=STM32F103V(C-D-E)Tx Mcu.Package=LQFP100 -Mcu.Pin0=PC13-TAMPER-RTC -Mcu.Pin1=OSC_IN -Mcu.Pin2=OSC_OUT -Mcu.Pin3=PA13 -Mcu.Pin4=PA14 -Mcu.Pin5=VP_RTC_No_RTC_Output -Mcu.Pin6=VP_SYS_VS_Systick -Mcu.PinsNb=7 +Mcu.Pin0=PE4 +Mcu.Pin1=PE5 +Mcu.Pin10=PE11 +Mcu.Pin11=PE13 +Mcu.Pin12=PA13 +Mcu.Pin13=PA14 +Mcu.Pin14=VP_RTC_No_RTC_Output +Mcu.Pin15=VP_SYS_VS_Systick +Mcu.Pin16=VP_TIM1_VS_ClockSourceINT +Mcu.Pin17=VP_TIM2_VS_ClockSourceINT +Mcu.Pin2=PE6 +Mcu.Pin3=PC13-TAMPER-RTC +Mcu.Pin4=OSC_IN +Mcu.Pin5=OSC_OUT +Mcu.Pin6=PA0-WKUP +Mcu.Pin7=PA1 +Mcu.Pin8=PA2 +Mcu.Pin9=PE9 +Mcu.PinsNb=18 Mcu.UserConstants= Mcu.UserName=STM32F103VCTx MxCube.Version=4.16.1 @@ -30,15 +43,20 @@ NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:true NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4 NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true NVIC.SysTick_IRQn=true\:0\:0\:false\:false\:true +NVIC.TIM1_CC_IRQn=true\:0\:0\:false\:false\:true NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true OSC_IN.Mode=HSE-External-Oscillator OSC_IN.Signal=RCC_OSC_IN OSC_OUT.Mode=HSE-External-Oscillator OSC_OUT.Signal=RCC_OSC_OUT +PA0-WKUP.Locked=true +PA0-WKUP.Signal=S_TIM2_CH1_ETR +PA1.Signal=S_TIM2_CH2 PA13.Mode=Serial_Wire PA13.Signal=SYS_JTMS-SWDIO PA14.Mode=Serial_Wire PA14.Signal=SYS_JTCK-SWCLK +PA2.Signal=S_TIM2_CH3 PC13-TAMPER-RTC.GPIOParameters=GPIO_Label PC13-TAMPER-RTC.GPIO_Label=LED_PIN PC13-TAMPER-RTC.Locked=true @@ -52,6 +70,21 @@ PCC.Seq0=0 PCC.Series=STM32F1 PCC.Temperature=25 PCC.Vdd=3.3 +PE11.Signal=S_TIM1_CH2 +PE13.Signal=S_TIM1_CH3 +PE4.GPIOParameters=GPIO_Label +PE4.GPIO_Label=LED2_PIN +PE4.Locked=true +PE4.Signal=GPIO_Output +PE5.GPIOParameters=GPIO_Label +PE5.GPIO_Label=LED3_PIN +PE5.Locked=true +PE5.Signal=GPIO_Output +PE6.GPIOParameters=GPIO_Label +PE6.GPIO_Label=LED4_PIN +PE6.Locked=true +PE6.Signal=GPIO_Output +PE9.Signal=S_TIM1_CH1 ProjectManager.AskForMigrate=true ProjectManager.BackupPrevious=false ProjectManager.CompilerOptimize=2 @@ -74,7 +107,7 @@ ProjectManager.StackSize=0x400 ProjectManager.TargetToolchain=SW4STM32 ProjectManager.ToolChainLocation=/home/wn/workspace-stm32/inverter2/cubemx/output/inverter2 ProjectManager.UnderRoot=true -ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false,2-MX_RTC_Init-RTC-false +ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false,2-MX_RTC_Init-RTC-false,3-MX_TIM1_Init-TIM1-false,4-MX_TIM2_Init-TIM2-false RCC.ADCFreqValue=36000000 RCC.AHBFreq_Value=72000000 RCC.APB1CLKDivider=RCC_HCLK_DIV2 @@ -104,8 +137,43 @@ RCC.USBFreq_Value=72000000 RCC.VCOOutput2Freq_Value=8000000 RTC.Format=RTC_FORMAT_BIN RTC.IPParameters=Format +SH.S_TIM1_CH1.0=TIM1_CH1,Output Compare1 CH1 +SH.S_TIM1_CH1.ConfNb=1 +SH.S_TIM1_CH2.0=TIM1_CH2,Output Compare2 CH2 +SH.S_TIM1_CH2.ConfNb=1 +SH.S_TIM1_CH3.0=TIM1_CH3,Output Compare3 CH3 +SH.S_TIM1_CH3.ConfNb=1 +SH.S_TIM2_CH1_ETR.0=TIM2_CH1,Output Compare1 CH1 +SH.S_TIM2_CH1_ETR.ConfNb=1 +SH.S_TIM2_CH2.0=TIM2_CH2,Forced Output2 CH2 +SH.S_TIM2_CH2.ConfNb=1 +SH.S_TIM2_CH3.0=TIM2_CH3,Forced Output3 CH3 +SH.S_TIM2_CH3.ConfNb=1 +TIM1.Channel-Output\ Compare2\ CH2=TIM_CHANNEL_2 +TIM1.Channel-Output\ Compare3\ CH3=TIM_CHANNEL_3 +TIM1.IPParameters=TIM_MasterOutputTrigger,TIM_MasterSlaveMode,Channel-Output Compare2 CH2,Channel-Output Compare3 CH3,Prescaler,Period,OCMode_1,Pulse-Output Compare1 CH1,OCMode_2,Pulse-Output Compare2 CH2,OCMode_3,Pulse-Output Compare3 CH3 +TIM1.OCMode_1=TIM_OCMODE_TIMING +TIM1.OCMode_2=TIM_OCMODE_TIMING +TIM1.OCMode_3=TIM_OCMODE_TIMING +TIM1.Period=10000 +TIM1.Prescaler=36 +TIM1.Pulse-Output\ Compare1\ CH1=1000 +TIM1.Pulse-Output\ Compare2\ CH2=2000 +TIM1.Pulse-Output\ Compare3\ CH3=3000 +TIM1.TIM_MasterOutputTrigger=TIM_TRGO_RESET +TIM1.TIM_MasterSlaveMode=TIM_MASTERSLAVEMODE_DISABLE +TIM2.Channel-Forced\ Output2\ CH2=TIM_CHANNEL_2 +TIM2.Channel-Forced\ Output3\ CH3=TIM_CHANNEL_3 +TIM2.IPParameters=Channel-Forced Output2 CH2,Prescaler,Period,Channel-Forced Output3 CH3,OCMode_forced-Forced Output3 CH3 +TIM2.OCMode_forced-Forced\ Output3\ CH3=TIM_OCMODE_FORCED_INACTIVE +TIM2.Period=1000 +TIM2.Prescaler=72 VP_RTC_No_RTC_Output.Mode=RTC_OUT_NO VP_RTC_No_RTC_Output.Signal=RTC_No_RTC_Output VP_SYS_VS_Systick.Mode=SysTick VP_SYS_VS_Systick.Signal=SYS_VS_Systick +VP_TIM1_VS_ClockSourceINT.Mode=Internal +VP_TIM1_VS_ClockSourceINT.Signal=TIM1_VS_ClockSourceINT +VP_TIM2_VS_ClockSourceINT.Mode=Internal +VP_TIM2_VS_ClockSourceINT.Signal=TIM2_VS_ClockSourceINT board=inverter2 diff --git a/include/mxconstants.h b/include/mxconstants.h index c34dc07..ff1a158 100644 --- a/include/mxconstants.h +++ b/include/mxconstants.h @@ -41,6 +41,12 @@ /* Private define ------------------------------------------------------------*/ +#define LED2_PIN_Pin GPIO_PIN_4 +#define LED2_PIN_GPIO_Port GPIOE +#define LED3_PIN_Pin GPIO_PIN_5 +#define LED3_PIN_GPIO_Port GPIOE +#define LED4_PIN_Pin GPIO_PIN_6 +#define LED4_PIN_GPIO_Port GPIOE #define LED_PIN_Pin GPIO_PIN_13 #define LED_PIN_GPIO_Port GPIOC /* USER CODE BEGIN Private defines */ diff --git a/include/stm32f1xx_hal_conf.h b/include/stm32f1xx_hal_conf.h index 86b72de..a3c1293 100644 --- a/include/stm32f1xx_hal_conf.h +++ b/include/stm32f1xx_hal_conf.h @@ -77,7 +77,7 @@ /*#define HAL_SMARTCARD_MODULE_ENABLED */ /*#define HAL_SPI_MODULE_ENABLED */ /*#define HAL_SRAM_MODULE_ENABLED */ -/*#define HAL_TIM_MODULE_ENABLED */ +#define HAL_TIM_MODULE_ENABLED /*#define HAL_UART_MODULE_ENABLED */ /*#define HAL_USART_MODULE_ENABLED */ /*#define HAL_WWDG_MODULE_ENABLED */ diff --git a/include/stm32f1xx_it.h b/include/stm32f1xx_it.h index 2cd9db0..8b7b204 100644 --- a/include/stm32f1xx_it.h +++ b/include/stm32f1xx_it.h @@ -54,6 +54,7 @@ void SVC_Handler(void); void DebugMon_Handler(void); void PendSV_Handler(void); void SysTick_Handler(void); +void TIM1_CC_IRQHandler(void); #ifdef __cplusplus } diff --git a/my_src/main2.c b/my_src/main2.c index 68f4e24..c06b060 100644 --- a/my_src/main2.c +++ b/my_src/main2.c @@ -18,6 +18,11 @@ #include #include "stm32f1xx_hal.h" + +extern TIM_HandleTypeDef htim1; +extern TIM_HandleTypeDef htim2; + + void blink(void *handle) { HAL_GPIO_TogglePin(LED_PIN_GPIO_Port, LED_PIN_Pin); @@ -25,11 +30,20 @@ void blink(void *handle) { void my_setup_1() { schInit(); - schAdd(blink, NULL, 0, 1000); + schAdd(blink, NULL, 0, 100); } void my_setup_2() { + HAL_TIM_OC_Start_IT(&htim1, TIM_CHANNEL_1); + HAL_TIM_OC_Start_IT(&htim1, TIM_CHANNEL_2); + HAL_TIM_OC_Start_IT(&htim1, TIM_CHANNEL_3); + HAL_TIM_OC_Start(&htim2, TIM_CHANNEL_1); + HAL_TIM_OC_Start(&htim2, TIM_CHANNEL_2); + HAL_TIM_OC_Start(&htim2, TIM_CHANNEL_3); + + HAL_NVIC_SetPriority(TIM1_CC_IRQn, 0, 0); + HAL_NVIC_EnableIRQ(TIM1_CC_IRQn); } void my_loop() { @@ -41,3 +55,15 @@ void HAL_SYSTICK_Callback() { //HAL_GPIO_TogglePin(LED_PIN_GPIO_Port, LED_PIN_Pin); schUpdate(); } + +void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef * htim) { + if (htim->Instance == TIM1) { + if (htim->Channel == HAL_TIM_ACTIVE_CHANNEL_1) { + HAL_GPIO_TogglePin(LED2_PIN_GPIO_Port, LED2_PIN_Pin); + } else if (htim->Channel == HAL_TIM_ACTIVE_CHANNEL_2) { + HAL_GPIO_TogglePin(LED3_PIN_GPIO_Port, LED3_PIN_Pin); + } else if (htim->Channel == HAL_TIM_ACTIVE_CHANNEL_3) { + HAL_GPIO_TogglePin(LED4_PIN_GPIO_Port, LED4_PIN_Pin); + } + } +} diff --git a/src/main.c b/src/main.c index 1c76325..9655cb9 100644 --- a/src/main.c +++ b/src/main.c @@ -41,6 +41,9 @@ /* Private variables ---------------------------------------------------------*/ RTC_HandleTypeDef hrtc; +TIM_HandleTypeDef htim1; +TIM_HandleTypeDef htim2; + /* USER CODE BEGIN PV */ /* Private variables ---------------------------------------------------------*/ @@ -51,6 +54,11 @@ void SystemClock_Config(void); void Error_Handler(void); static void MX_GPIO_Init(void); static void MX_RTC_Init(void); +static void MX_TIM1_Init(void); +static void MX_TIM2_Init(void); + +void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim); + /* USER CODE BEGIN PFP */ /* Private function prototypes -----------------------------------------------*/ @@ -80,6 +88,8 @@ int main(void) /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_RTC_Init(); + MX_TIM1_Init(); + MX_TIM2_Init(); /* USER CODE BEGIN 2 */ my_setup_2(); @@ -185,6 +195,145 @@ static void MX_RTC_Init(void) } +/* TIM1 init function */ +static void MX_TIM1_Init(void) +{ + + TIM_ClockConfigTypeDef sClockSourceConfig; + TIM_MasterConfigTypeDef sMasterConfig; + TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig; + TIM_OC_InitTypeDef sConfigOC; + + htim1.Instance = TIM1; + htim1.Init.Prescaler = 36; + htim1.Init.CounterMode = TIM_COUNTERMODE_UP; + htim1.Init.Period = 10000; + htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + htim1.Init.RepetitionCounter = 0; + if (HAL_TIM_Base_Init(&htim1) != HAL_OK) + { + Error_Handler(); + } + + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK) + { + Error_Handler(); + } + + if (HAL_TIM_OC_Init(&htim1) != HAL_OK) + { + Error_Handler(); + } + + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) + { + Error_Handler(); + } + + sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_DISABLE; + sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_DISABLE; + sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_OFF; + sBreakDeadTimeConfig.DeadTime = 0; + sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE; + sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH; + sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE; + if (HAL_TIMEx_ConfigBreakDeadTime(&htim1, &sBreakDeadTimeConfig) != HAL_OK) + { + Error_Handler(); + } + + sConfigOC.OCMode = TIM_OCMODE_TIMING; + sConfigOC.Pulse = 1000; + sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; + sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH; + sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; + sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET; + sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET; + if (HAL_TIM_OC_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) + { + Error_Handler(); + } + + sConfigOC.Pulse = 2000; + if (HAL_TIM_OC_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) + { + Error_Handler(); + } + + sConfigOC.Pulse = 3000; + if (HAL_TIM_OC_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) + { + Error_Handler(); + } + + HAL_TIM_MspPostInit(&htim1); + +} + +/* TIM2 init function */ +static void MX_TIM2_Init(void) +{ + + TIM_ClockConfigTypeDef sClockSourceConfig; + TIM_MasterConfigTypeDef sMasterConfig; + TIM_OC_InitTypeDef sConfigOC; + + htim2.Instance = TIM2; + htim2.Init.Prescaler = 72; + htim2.Init.CounterMode = TIM_COUNTERMODE_UP; + htim2.Init.Period = 1000; + htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + if (HAL_TIM_Base_Init(&htim2) != HAL_OK) + { + Error_Handler(); + } + + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK) + { + Error_Handler(); + } + + if (HAL_TIM_OC_Init(&htim2) != HAL_OK) + { + Error_Handler(); + } + + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK) + { + Error_Handler(); + } + + sConfigOC.OCMode = TIM_OCMODE_TIMING; + sConfigOC.Pulse = 0; + sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; + sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; + if (HAL_TIM_OC_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) + { + Error_Handler(); + } + + sConfigOC.OCMode = TIM_OCMODE_FORCED_ACTIVE; + if (HAL_TIM_OC_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) + { + Error_Handler(); + } + + sConfigOC.OCMode = TIM_OCMODE_FORCED_INACTIVE; + if (HAL_TIM_OC_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) + { + Error_Handler(); + } + + HAL_TIM_MspPostInit(&htim2); + +} + /** Configure pins as * Analog * Input @@ -198,12 +347,22 @@ static void MX_GPIO_Init(void) GPIO_InitTypeDef GPIO_InitStruct; /* GPIO Ports Clock Enable */ + __HAL_RCC_GPIOE_CLK_ENABLE(); __HAL_RCC_GPIOC_CLK_ENABLE(); __HAL_RCC_GPIOA_CLK_ENABLE(); + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOE, LED2_PIN_Pin|LED3_PIN_Pin|LED4_PIN_Pin, GPIO_PIN_RESET); + /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(LED_PIN_GPIO_Port, LED_PIN_Pin, GPIO_PIN_RESET); + /*Configure GPIO pins : LED2_PIN_Pin LED3_PIN_Pin LED4_PIN_Pin */ + GPIO_InitStruct.Pin = LED2_PIN_Pin|LED3_PIN_Pin|LED4_PIN_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); + /*Configure GPIO pin : LED_PIN_Pin */ GPIO_InitStruct.Pin = LED_PIN_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; diff --git a/src/main.c-bak b/src/main.c-bak index db075f0..593b997 100644 --- a/src/main.c-bak +++ b/src/main.c-bak @@ -40,6 +40,9 @@ /* Private variables ---------------------------------------------------------*/ RTC_HandleTypeDef hrtc; +TIM_HandleTypeDef htim1; +TIM_HandleTypeDef htim2; + /* USER CODE BEGIN PV */ /* Private variables ---------------------------------------------------------*/ @@ -50,6 +53,11 @@ void SystemClock_Config(void); void Error_Handler(void); static void MX_GPIO_Init(void); static void MX_RTC_Init(void); +static void MX_TIM1_Init(void); +static void MX_TIM2_Init(void); + +void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim); + /* USER CODE BEGIN PFP */ /* Private function prototypes -----------------------------------------------*/ @@ -78,6 +86,8 @@ int main(void) /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_RTC_Init(); + MX_TIM1_Init(); + MX_TIM2_Init(); /* USER CODE BEGIN 2 */ @@ -181,6 +191,145 @@ static void MX_RTC_Init(void) } +/* TIM1 init function */ +static void MX_TIM1_Init(void) +{ + + TIM_ClockConfigTypeDef sClockSourceConfig; + TIM_MasterConfigTypeDef sMasterConfig; + TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig; + TIM_OC_InitTypeDef sConfigOC; + + htim1.Instance = TIM1; + htim1.Init.Prescaler = 36; + htim1.Init.CounterMode = TIM_COUNTERMODE_UP; + htim1.Init.Period = 10000; + htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + htim1.Init.RepetitionCounter = 0; + if (HAL_TIM_Base_Init(&htim1) != HAL_OK) + { + Error_Handler(); + } + + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK) + { + Error_Handler(); + } + + if (HAL_TIM_OC_Init(&htim1) != HAL_OK) + { + Error_Handler(); + } + + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) + { + Error_Handler(); + } + + sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_DISABLE; + sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_DISABLE; + sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_OFF; + sBreakDeadTimeConfig.DeadTime = 0; + sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE; + sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH; + sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE; + if (HAL_TIMEx_ConfigBreakDeadTime(&htim1, &sBreakDeadTimeConfig) != HAL_OK) + { + Error_Handler(); + } + + sConfigOC.OCMode = TIM_OCMODE_TIMING; + sConfigOC.Pulse = 1000; + sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; + sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH; + sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; + sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET; + sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET; + if (HAL_TIM_OC_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) + { + Error_Handler(); + } + + sConfigOC.Pulse = 2000; + if (HAL_TIM_OC_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) + { + Error_Handler(); + } + + sConfigOC.Pulse = 3000; + if (HAL_TIM_OC_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) + { + Error_Handler(); + } + + HAL_TIM_MspPostInit(&htim1); + +} + +/* TIM2 init function */ +static void MX_TIM2_Init(void) +{ + + TIM_ClockConfigTypeDef sClockSourceConfig; + TIM_MasterConfigTypeDef sMasterConfig; + TIM_OC_InitTypeDef sConfigOC; + + htim2.Instance = TIM2; + htim2.Init.Prescaler = 72; + htim2.Init.CounterMode = TIM_COUNTERMODE_UP; + htim2.Init.Period = 1000; + htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + if (HAL_TIM_Base_Init(&htim2) != HAL_OK) + { + Error_Handler(); + } + + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK) + { + Error_Handler(); + } + + if (HAL_TIM_OC_Init(&htim2) != HAL_OK) + { + Error_Handler(); + } + + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK) + { + Error_Handler(); + } + + sConfigOC.OCMode = TIM_OCMODE_TIMING; + sConfigOC.Pulse = 0; + sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; + sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; + if (HAL_TIM_OC_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) + { + Error_Handler(); + } + + sConfigOC.OCMode = TIM_OCMODE_FORCED_ACTIVE; + if (HAL_TIM_OC_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) + { + Error_Handler(); + } + + sConfigOC.OCMode = TIM_OCMODE_FORCED_INACTIVE; + if (HAL_TIM_OC_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) + { + Error_Handler(); + } + + HAL_TIM_MspPostInit(&htim2); + +} + /** Configure pins as * Analog * Input @@ -194,12 +343,22 @@ static void MX_GPIO_Init(void) GPIO_InitTypeDef GPIO_InitStruct; /* GPIO Ports Clock Enable */ + __HAL_RCC_GPIOE_CLK_ENABLE(); __HAL_RCC_GPIOC_CLK_ENABLE(); __HAL_RCC_GPIOA_CLK_ENABLE(); + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOE, LED2_PIN_Pin|LED3_PIN_Pin|LED4_PIN_Pin, GPIO_PIN_RESET); + /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(LED_PIN_GPIO_Port, LED_PIN_Pin, GPIO_PIN_RESET); + /*Configure GPIO pins : LED2_PIN_Pin LED3_PIN_Pin LED4_PIN_Pin */ + GPIO_InitStruct.Pin = LED2_PIN_Pin|LED3_PIN_Pin|LED4_PIN_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); + /*Configure GPIO pin : LED_PIN_Pin */ GPIO_InitStruct.Pin = LED_PIN_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; diff --git a/src/stm32f1xx_hal_msp.c b/src/stm32f1xx_hal_msp.c index b004b84..c458d56 100644 --- a/src/stm32f1xx_hal_msp.c +++ b/src/stm32f1xx_hal_msp.c @@ -114,6 +114,117 @@ void HAL_RTC_MspDeInit(RTC_HandleTypeDef* hrtc) } +void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base) +{ + + if(htim_base->Instance==TIM1) + { + /* USER CODE BEGIN TIM1_MspInit 0 */ + + /* USER CODE END TIM1_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_TIM1_CLK_ENABLE(); + /* Peripheral interrupt init */ + HAL_NVIC_SetPriority(TIM1_CC_IRQn, 0, 0); + HAL_NVIC_EnableIRQ(TIM1_CC_IRQn); + /* USER CODE BEGIN TIM1_MspInit 1 */ + + /* USER CODE END TIM1_MspInit 1 */ + } + else if(htim_base->Instance==TIM2) + { + /* USER CODE BEGIN TIM2_MspInit 0 */ + + /* USER CODE END TIM2_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_TIM2_CLK_ENABLE(); + /* USER CODE BEGIN TIM2_MspInit 1 */ + + /* USER CODE END TIM2_MspInit 1 */ + } + +} + +void HAL_TIM_MspPostInit(TIM_HandleTypeDef* htim) +{ + + GPIO_InitTypeDef GPIO_InitStruct; + if(htim->Instance==TIM1) + { + /* USER CODE BEGIN TIM1_MspPostInit 0 */ + + /* USER CODE END TIM1_MspPostInit 0 */ + /**TIM1 GPIO Configuration + PE9 ------> TIM1_CH1 + PE11 ------> TIM1_CH2 + PE13 ------> TIM1_CH3 + */ + GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_11|GPIO_PIN_13; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); + + __HAL_AFIO_REMAP_TIM1_ENABLE(); + + /* USER CODE BEGIN TIM1_MspPostInit 1 */ + + /* USER CODE END TIM1_MspPostInit 1 */ + } + else if(htim->Instance==TIM2) + { + /* USER CODE BEGIN TIM2_MspPostInit 0 */ + + /* USER CODE END TIM2_MspPostInit 0 */ + + /**TIM2 GPIO Configuration + PA0-WKUP ------> TIM2_CH1 + PA1 ------> TIM2_CH2 + PA2 ------> TIM2_CH3 + */ + GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /* USER CODE BEGIN TIM2_MspPostInit 1 */ + + /* USER CODE END TIM2_MspPostInit 1 */ + } + +} + +void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* htim_base) +{ + + if(htim_base->Instance==TIM1) + { + /* USER CODE BEGIN TIM1_MspDeInit 0 */ + + /* USER CODE END TIM1_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_TIM1_CLK_DISABLE(); + + /* Peripheral interrupt DeInit*/ + HAL_NVIC_DisableIRQ(TIM1_CC_IRQn); + + /* USER CODE BEGIN TIM1_MspDeInit 1 */ + + /* USER CODE END TIM1_MspDeInit 1 */ + } + else if(htim_base->Instance==TIM2) + { + /* USER CODE BEGIN TIM2_MspDeInit 0 */ + + /* USER CODE END TIM2_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_TIM2_CLK_DISABLE(); + /* USER CODE BEGIN TIM2_MspDeInit 1 */ + + /* USER CODE END TIM2_MspDeInit 1 */ + } + +} + /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ diff --git a/src/stm32f1xx_it.c b/src/stm32f1xx_it.c index ced17ec..5380e5b 100644 --- a/src/stm32f1xx_it.c +++ b/src/stm32f1xx_it.c @@ -40,6 +40,7 @@ /* USER CODE END 0 */ /* External variables --------------------------------------------------------*/ +extern TIM_HandleTypeDef htim1; /******************************************************************************/ /* Cortex-M3 Processor Interruption and Exception Handlers */ @@ -183,6 +184,20 @@ void SysTick_Handler(void) /* please refer to the startup file (startup_stm32f1xx.s). */ /******************************************************************************/ +/** +* @brief This function handles TIM1 capture compare interrupt. +*/ +void TIM1_CC_IRQHandler(void) +{ + /* USER CODE BEGIN TIM1_CC_IRQn 0 */ + + /* USER CODE END TIM1_CC_IRQn 0 */ + HAL_TIM_IRQHandler(&htim1); + /* USER CODE BEGIN TIM1_CC_IRQn 1 */ + + /* USER CODE END TIM1_CC_IRQn 1 */ +} + /* USER CODE BEGIN 1 */ /* USER CODE END 1 */