{wip} test timer clock source

This commit is contained in:
2023-08-01 11:04:16 +02:00
parent d3d896a419
commit 527585217c
6 changed files with 153 additions and 12 deletions

View File

@@ -36,12 +36,17 @@ extern TIM_HandleTypeDef htim2;
extern TIM_HandleTypeDef htim3; extern TIM_HandleTypeDef htim3;
extern TIM_HandleTypeDef htim17;
/* USER CODE BEGIN Private defines */ /* USER CODE BEGIN Private defines */
/* USER CODE END Private defines */ /* USER CODE END Private defines */
void MX_TIM2_Init(void); void MX_TIM2_Init(void);
void MX_TIM3_Init(void); void MX_TIM3_Init(void);
void MX_TIM17_Init(void);
void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim);
/* USER CODE BEGIN Prototypes */ /* USER CODE BEGIN Prototypes */

View File

@@ -100,6 +100,7 @@ int main(void)
MX_SPI3_Init(); MX_SPI3_Init();
MX_TIM2_Init(); MX_TIM2_Init();
MX_TIM3_Init(); MX_TIM3_Init();
MX_TIM17_Init();
/* USER CODE BEGIN 2 */ /* USER CODE BEGIN 2 */
ulog_init(); ulog_init();
ulog_subscribe(RTT_console_logger, ULOG_TRACE_LEVEL); ulog_subscribe(RTT_console_logger, ULOG_TRACE_LEVEL);
@@ -181,9 +182,11 @@ void SystemClock_Config(void)
Error_Handler(); Error_Handler();
} }
PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USART2|RCC_PERIPHCLK_I2C1 PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USART2|RCC_PERIPHCLK_I2C1
|RCC_PERIPHCLK_TIM2|RCC_PERIPHCLK_TIM34; |RCC_PERIPHCLK_TIM17|RCC_PERIPHCLK_TIM2
|RCC_PERIPHCLK_TIM34;
PeriphClkInit.Usart2ClockSelection = RCC_USART2CLKSOURCE_PCLK1; PeriphClkInit.Usart2ClockSelection = RCC_USART2CLKSOURCE_PCLK1;
PeriphClkInit.I2c1ClockSelection = RCC_I2C1CLKSOURCE_HSI; PeriphClkInit.I2c1ClockSelection = RCC_I2C1CLKSOURCE_HSI;
PeriphClkInit.Tim17ClockSelection = RCC_TIM17CLK_HCLK;
PeriphClkInit.Tim2ClockSelection = RCC_TIM2CLK_HCLK; PeriphClkInit.Tim2ClockSelection = RCC_TIM2CLK_HCLK;
PeriphClkInit.Tim34ClockSelection = RCC_TIM34CLK_HCLK; PeriphClkInit.Tim34ClockSelection = RCC_TIM34CLK_HCLK;
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)

View File

@@ -26,6 +26,7 @@
TIM_HandleTypeDef htim2; TIM_HandleTypeDef htim2;
TIM_HandleTypeDef htim3; TIM_HandleTypeDef htim3;
TIM_HandleTypeDef htim17;
/* TIM2 init function */ /* TIM2 init function */
void MX_TIM2_Init(void) void MX_TIM2_Init(void)
@@ -110,6 +111,64 @@ void MX_TIM3_Init(void)
/* USER CODE END TIM3_Init 2 */ /* USER CODE END TIM3_Init 2 */
}
/* TIM17 init function */
void MX_TIM17_Init(void)
{
/* USER CODE BEGIN TIM17_Init 0 */
/* USER CODE END TIM17_Init 0 */
TIM_OC_InitTypeDef sConfigOC = {0};
TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig = {0};
/* USER CODE BEGIN TIM17_Init 1 */
/* USER CODE END TIM17_Init 1 */
htim17.Instance = TIM17;
htim17.Init.Prescaler = 0;
htim17.Init.CounterMode = TIM_COUNTERMODE_UP;
htim17.Init.Period = 2;
htim17.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
htim17.Init.RepetitionCounter = 0;
htim17.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
if (HAL_TIM_Base_Init(&htim17) != HAL_OK)
{
Error_Handler();
}
if (HAL_TIM_PWM_Init(&htim17) != HAL_OK)
{
Error_Handler();
}
sConfigOC.OCMode = TIM_OCMODE_PWM1;
sConfigOC.Pulse = 1;
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH;
sConfigOC.OCFastMode = TIM_OCFAST_ENABLE;
sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET;
sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET;
if (HAL_TIM_PWM_ConfigChannel(&htim17, &sConfigOC, TIM_CHANNEL_1) != 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.BreakFilter = 0;
sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE;
if (HAL_TIMEx_ConfigBreakDeadTime(&htim17, &sBreakDeadTimeConfig) != HAL_OK)
{
Error_Handler();
}
/* USER CODE BEGIN TIM17_Init 2 */
/* USER CODE END TIM17_Init 2 */
HAL_TIM_MspPostInit(&htim17);
} }
void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle) void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle)
@@ -126,6 +185,17 @@ void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle)
/* USER CODE END TIM2_MspInit 1 */ /* USER CODE END TIM2_MspInit 1 */
} }
else if(tim_baseHandle->Instance==TIM17)
{
/* USER CODE BEGIN TIM17_MspInit 0 */
/* USER CODE END TIM17_MspInit 0 */
/* TIM17 clock enable */
__HAL_RCC_TIM17_CLK_ENABLE();
/* USER CODE BEGIN TIM17_MspInit 1 */
/* USER CODE END TIM17_MspInit 1 */
}
} }
void HAL_TIM_Encoder_MspInit(TIM_HandleTypeDef* tim_encoderHandle) void HAL_TIM_Encoder_MspInit(TIM_HandleTypeDef* tim_encoderHandle)
@@ -157,6 +227,33 @@ void HAL_TIM_Encoder_MspInit(TIM_HandleTypeDef* tim_encoderHandle)
/* USER CODE END TIM3_MspInit 1 */ /* USER CODE END TIM3_MspInit 1 */
} }
} }
void HAL_TIM_MspPostInit(TIM_HandleTypeDef* timHandle)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
if(timHandle->Instance==TIM17)
{
/* USER CODE BEGIN TIM17_MspPostInit 0 */
/* USER CODE END TIM17_MspPostInit 0 */
__HAL_RCC_GPIOB_CLK_ENABLE();
/**TIM17 GPIO Configuration
PB5 ------> TIM17_CH1
*/
GPIO_InitStruct.Pin = GPIO_PIN_5;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
GPIO_InitStruct.Alternate = GPIO_AF10_TIM17;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
/* USER CODE BEGIN TIM17_MspPostInit 1 */
/* USER CODE END TIM17_MspPostInit 1 */
}
}
void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* tim_baseHandle) void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* tim_baseHandle)
{ {
@@ -172,6 +269,17 @@ void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* tim_baseHandle)
/* USER CODE END TIM2_MspDeInit 1 */ /* USER CODE END TIM2_MspDeInit 1 */
} }
else if(tim_baseHandle->Instance==TIM17)
{
/* USER CODE BEGIN TIM17_MspDeInit 0 */
/* USER CODE END TIM17_MspDeInit 0 */
/* Peripheral clock disable */
__HAL_RCC_TIM17_CLK_DISABLE();
/* USER CODE BEGIN TIM17_MspDeInit 1 */
/* USER CODE END TIM17_MspDeInit 1 */
}
} }
void HAL_TIM_Encoder_MspDeInit(TIM_HandleTypeDef* tim_encoderHandle) void HAL_TIM_Encoder_MspDeInit(TIM_HandleTypeDef* tim_encoderHandle)

View File

@@ -1,5 +1,5 @@
########################################################################################################################## ##########################################################################################################################
# File automatically-generated by tool: [projectgenerator] version: [3.17.1] date: [Mon Jul 31 16:49:59 CEST 2023] # File automatically-generated by tool: [projectgenerator] version: [3.17.1] date: [Tue Aug 01 10:57:07 CEST 2023]
########################################################################################################################## ##########################################################################################################################
# ------------------------------------------------ # ------------------------------------------------

View File

@@ -15,8 +15,9 @@ Mcu.IP4=SPI3
Mcu.IP5=SYS Mcu.IP5=SYS
Mcu.IP6=TIM2 Mcu.IP6=TIM2
Mcu.IP7=TIM3 Mcu.IP7=TIM3
Mcu.IP8=USART2 Mcu.IP8=TIM17
Mcu.IPNb=9 Mcu.IP9=USART2
Mcu.IPNb=10
Mcu.Name=STM32F303R(D-E)Tx Mcu.Name=STM32F303R(D-E)Tx
Mcu.Package=LQFP64 Mcu.Package=LQFP64
Mcu.Pin0=PC13 Mcu.Pin0=PC13
@@ -45,18 +46,20 @@ Mcu.Pin29=PC11
Mcu.Pin3=PF0-OSC_IN Mcu.Pin3=PF0-OSC_IN
Mcu.Pin30=PC12 Mcu.Pin30=PC12
Mcu.Pin31=PB3 Mcu.Pin31=PB3
Mcu.Pin32=PB6 Mcu.Pin32=PB5
Mcu.Pin33=PB7 Mcu.Pin33=PB6
Mcu.Pin34=PB9 Mcu.Pin34=PB7
Mcu.Pin35=VP_SYS_VS_Systick Mcu.Pin35=PB9
Mcu.Pin36=VP_TIM2_VS_ClockSourceINT Mcu.Pin36=VP_SYS_VS_Systick
Mcu.Pin37=VP_TIM2_VS_ClockSourceINT
Mcu.Pin38=VP_TIM17_VS_ClockSourceINT
Mcu.Pin4=PF1-OSC_OUT Mcu.Pin4=PF1-OSC_OUT
Mcu.Pin5=PA0 Mcu.Pin5=PA0
Mcu.Pin6=PA1 Mcu.Pin6=PA1
Mcu.Pin7=PA2 Mcu.Pin7=PA2
Mcu.Pin8=PA3 Mcu.Pin8=PA3
Mcu.Pin9=PA4 Mcu.Pin9=PA4
Mcu.PinsNb=37 Mcu.PinsNb=39
Mcu.ThirdPartyNb=0 Mcu.ThirdPartyNb=0
Mcu.UserConstants= Mcu.UserConstants=
Mcu.UserName=STM32F303RETx Mcu.UserName=STM32F303RETx
@@ -160,6 +163,7 @@ PB3.GPIOParameters=GPIO_Label
PB3.GPIO_Label=SWO PB3.GPIO_Label=SWO
PB3.Locked=true PB3.Locked=true
PB3.Signal=SYS_JTDO-TRACESWO PB3.Signal=SYS_JTDO-TRACESWO
PB5.Signal=S_TIM17_CH1
PB6.Locked=true PB6.Locked=true
PB6.Mode=I2C PB6.Mode=I2C
PB6.Signal=I2C1_SCL PB6.Signal=I2C1_SCL
@@ -253,9 +257,9 @@ RCC.I2C1Freq_Value=8000000
RCC.I2C2Freq_Value=8000000 RCC.I2C2Freq_Value=8000000
RCC.I2C3Freq_Value=8000000 RCC.I2C3Freq_Value=8000000
RCC.I2SClocksFreq_Value=72000000 RCC.I2SClocksFreq_Value=72000000
RCC.IPParameters=ADC12outputFreq_Value,ADC34outputFreq_Value,AHBFreq_Value,APB1CLKDivider,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,CortexFreq_Value,FCLKCortexFreq_Value,FamilyName,HCLKFreq_Value,HSE_VALUE,HSI_VALUE,I2C1Freq_Value,I2C2Freq_Value,I2C3Freq_Value,I2SClocksFreq_Value,LSI_VALUE,MCOFreq_Value,PLLCLKFreq_Value,PLLM,PLLMCOFreq_Value,PLLMUL,PLLN,PLLP,PLLQ,RCC_PLLsource_Clock_Source_FROM_HSE,RTCFreq_Value,RTCHSEDivFreq_Value,SYSCLKFreq_VALUE,SYSCLKSourceVirtual,TIM15Freq_Value,TIM16Freq_Value,TIM17Freq_Value,TIM1Freq_Value,TIM20Freq_Value,TIM2Freq_Value,TIM3Freq_Value,TIM8Freq_Value,UART4Freq_Value,UART5Freq_Value,USART1Freq_Value,USART2Freq_Value,USART3Freq_Value,USBFreq_Value,VCOOutput2Freq_Value RCC.IPParameters=ADC12outputFreq_Value,ADC34outputFreq_Value,AHBFreq_Value,APB1CLKDivider,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,CortexFreq_Value,FCLKCortexFreq_Value,FamilyName,HCLKFreq_Value,HSE_VALUE,HSI_VALUE,I2C1Freq_Value,I2C2Freq_Value,I2C3Freq_Value,I2SClocksFreq_Value,LSI_VALUE,MCOFreq_Value,PLLCLKFreq_Value,PLLM,PLLMCOFreq_Value,PLLMUL,PLLN,PLLP,PLLQ,RCC_MCODiv,RCC_MCOSource,RCC_PLLsource_Clock_Source_FROM_HSE,RTCFreq_Value,RTCHSEDivFreq_Value,SYSCLKFreq_VALUE,SYSCLKSourceVirtual,TIM15Freq_Value,TIM16Freq_Value,TIM17Freq_Value,TIM1Freq_Value,TIM20Freq_Value,TIM2Freq_Value,TIM3Freq_Value,TIM8Freq_Value,UART4Freq_Value,UART5Freq_Value,USART1Freq_Value,USART2Freq_Value,USART3Freq_Value,USBFreq_Value,VCOOutput2Freq_Value
RCC.LSI_VALUE=40000 RCC.LSI_VALUE=40000
RCC.MCOFreq_Value=72000000 RCC.MCOFreq_Value=9000000
RCC.PLLCLKFreq_Value=72000000 RCC.PLLCLKFreq_Value=72000000
RCC.PLLM=8 RCC.PLLM=8
RCC.PLLMCOFreq_Value=72000000 RCC.PLLMCOFreq_Value=72000000
@@ -263,6 +267,8 @@ RCC.PLLMUL=RCC_PLL_MUL9
RCC.PLLN=336 RCC.PLLN=336
RCC.PLLP=RCC_PLLP_DIV4 RCC.PLLP=RCC_PLLP_DIV4
RCC.PLLQ=7 RCC.PLLQ=7
RCC.RCC_MCODiv=RCC_MCODIV_8
RCC.RCC_MCOSource=RCC_MCO1SOURCE_PLLCLK
RCC.RCC_PLLsource_Clock_Source_FROM_HSE=RCC_HSE_PREDIV_DIV2 RCC.RCC_PLLsource_Clock_Source_FROM_HSE=RCC_HSE_PREDIV_DIV2
RCC.RTCFreq_Value=40000 RCC.RTCFreq_Value=40000
RCC.RTCHSEDivFreq_Value=250000 RCC.RTCHSEDivFreq_Value=250000
@@ -285,6 +291,8 @@ RCC.USBFreq_Value=72000000
RCC.VCOOutput2Freq_Value=8000000 RCC.VCOOutput2Freq_Value=8000000
SH.GPXTI13.0=GPIO_EXTI13 SH.GPXTI13.0=GPIO_EXTI13
SH.GPXTI13.ConfNb=1 SH.GPXTI13.ConfNb=1
SH.S_TIM17_CH1.0=TIM17_CH1,PWM Generation1 CH1
SH.S_TIM17_CH1.ConfNb=1
SH.S_TIM3_CH1.0=TIM3_CH1,Encoder_Interface SH.S_TIM3_CH1.0=TIM3_CH1,Encoder_Interface
SH.S_TIM3_CH1.ConfNb=1 SH.S_TIM3_CH1.ConfNb=1
SH.S_TIM3_CH2.0=TIM3_CH2,Encoder_Interface SH.S_TIM3_CH2.0=TIM3_CH2,Encoder_Interface
@@ -305,6 +313,12 @@ SPI3.Direction=SPI_DIRECTION_1LINE
SPI3.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,BaudRatePrescaler,DataSize SPI3.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,BaudRatePrescaler,DataSize
SPI3.Mode=SPI_MODE_MASTER SPI3.Mode=SPI_MODE_MASTER
SPI3.VirtualType=VM_MASTER SPI3.VirtualType=VM_MASTER
TIM17.Channel=TIM_CHANNEL_1
TIM17.IPParameters=Channel,Period,OCFastMode_PWM,OCIdleState_1,Pulse
TIM17.OCFastMode_PWM=TIM_OCFAST_ENABLE
TIM17.OCIdleState_1=TIM_OCIDLESTATE_RESET
TIM17.Period=2
TIM17.Pulse=1
TIM2.AutoReloadPreload=TIM_AUTORELOAD_PRELOAD_DISABLE TIM2.AutoReloadPreload=TIM_AUTORELOAD_PRELOAD_DISABLE
TIM2.IPParameters=AutoReloadPreload TIM2.IPParameters=AutoReloadPreload
TIM3.IC1Filter=15 TIM3.IC1Filter=15
@@ -315,6 +329,8 @@ USART2.IPParameters=VirtualMode-Asynchronous
USART2.VirtualMode-Asynchronous=VM_ASYNC USART2.VirtualMode-Asynchronous=VM_ASYNC
VP_SYS_VS_Systick.Mode=SysTick VP_SYS_VS_Systick.Mode=SysTick
VP_SYS_VS_Systick.Signal=SYS_VS_Systick VP_SYS_VS_Systick.Signal=SYS_VS_Systick
VP_TIM17_VS_ClockSourceINT.Mode=Enable_Timer
VP_TIM17_VS_ClockSourceINT.Signal=TIM17_VS_ClockSourceINT
VP_TIM2_VS_ClockSourceINT.Mode=Internal VP_TIM2_VS_ClockSourceINT.Mode=Internal
VP_TIM2_VS_ClockSourceINT.Signal=TIM2_VS_ClockSourceINT VP_TIM2_VS_ClockSourceINT.Signal=TIM2_VS_ClockSourceINT
board=NUCLEO-F303RE board=NUCLEO-F303RE

View File

@@ -1,4 +1,5 @@
#include "main.h" #include "main.h"
#include "tim.h"
#include "hw_button.h" #include "hw_button.h"
#include "ctrl_bottom_button.h" #include "ctrl_bottom_button.h"
#include "ctrl_channel_button.h" #include "ctrl_channel_button.h"
@@ -154,6 +155,14 @@ void CTRL_longPushedChanBtnEvent(ButtonKey_t *key)
ULOG_TRACE("Chan btn(long): %d", key->instance); ULOG_TRACE("Chan btn(long): %d", key->instance);
GEN_channel_t channel = btn_ch_to_chan[key->instance]; GEN_channel_t channel = btn_ch_to_chan[key->instance];
if (channel == CHANNEL2)
{
if (HAL_TIM_Base_Start(&htim17) == HAL_ERROR)
{
HAL_TIM_Base_Stop(&htim17);
}
}
switch (signal_gen[channel].type) switch (signal_gen[channel].type)
{ {
case GEN_FG_TYPE: case GEN_FG_TYPE: