Changeset 20 for trunk


Ignore:
Timestamp:
Aug 19, 2025, 11:24:24 AM (8 days ago)
Author:
f.jahn
Message:

Timer16 was substituted with Timer3.

Location:
trunk/firmware_v2
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/firmware_v2/Core/Inc/stm32c0xx_it.h

    r19 r20  
    5454void DMA1_Channel1_IRQHandler(void);
    5555void DMA1_Channel2_3_IRQHandler(void);
    56 void TIM16_IRQHandler(void);
     56void TIM3_IRQHandler(void);
    5757/* USER CODE BEGIN EFP */
    5858
  • trunk/firmware_v2/Core/Inc/tim.h

    r19 r20  
    3333/* USER CODE END Includes */
    3434
    35 extern TIM_HandleTypeDef htim16;
     35extern TIM_HandleTypeDef htim3;
    3636
    3737extern TIM_HandleTypeDef htim17;
     
    4141/* USER CODE END Private defines */
    4242
    43 void MX_TIM16_Init(void);
     43void MX_TIM3_Init(void);
    4444void MX_TIM17_Init(void);
    4545
  • trunk/firmware_v2/Core/Src/main.c

    r17 r20  
    9393  MX_DMA_Init();
    9494  MX_ADC1_Init();
    95   MX_TIM16_Init();
    9695  MX_TIM17_Init();
    9796  MX_USART1_UART_Init();
     97  MX_TIM3_Init();
    9898  /* USER CODE BEGIN 2 */
    9999
  • trunk/firmware_v2/Core/Src/stm32c0xx_it.c

    r19 r20  
    6060/* External variables --------------------------------------------------------*/
    6161extern DMA_HandleTypeDef hdma_adc1;
    62 extern DMA_HandleTypeDef hdma_tim16_ch1;
    63 extern TIM_HandleTypeDef htim16;
     62extern DMA_HandleTypeDef hdma_tim3_ch1;
     63extern TIM_HandleTypeDef htim3;
    6464/* USER CODE BEGIN EV */
    6565
     
    168168
    169169  /* USER CODE END DMA1_Channel2_3_IRQn 0 */
    170   HAL_DMA_IRQHandler(&hdma_tim16_ch1);
     170  HAL_DMA_IRQHandler(&hdma_tim3_ch1);
    171171  /* USER CODE BEGIN DMA1_Channel2_3_IRQn 1 */
    172172
     
    175175
    176176/**
    177   * @brief This function handles TIM16 global interrupt.
    178   */
    179 void TIM16_IRQHandler(void)
    180 {
    181   /* USER CODE BEGIN TIM16_IRQn 0 */
    182 
    183   /* USER CODE END TIM16_IRQn 0 */
    184   HAL_TIM_IRQHandler(&htim16);
    185   /* USER CODE BEGIN TIM16_IRQn 1 */
    186 
    187   /* USER CODE END TIM16_IRQn 1 */
     177  * @brief This function handles TIM3 global interrupt.
     178  */
     179void TIM3_IRQHandler(void)
     180{
     181  /* USER CODE BEGIN TIM3_IRQn 0 */
     182
     183  /* USER CODE END TIM3_IRQn 0 */
     184  HAL_TIM_IRQHandler(&htim3);
     185  /* USER CODE BEGIN TIM3_IRQn 1 */
     186
     187  /* USER CODE END TIM3_IRQn 1 */
    188188}
    189189
     
    208208        extern uint32_t ic_overflows;
    209209
    210         if (htim->Instance == TIM16)
     210        if (htim->Instance == TIM3)
    211211        {
    212212                printf("Full\n");
     
    246246        extern uint32_t ic_overflows;
    247247
    248         if (htim->Instance == TIM16)
     248        if (htim->Instance == TIM3)
    249249        {
    250250                ic_overflows++;
     
    260260        extern uint32_t ic_overflows;
    261261
    262         if (htim->Instance == TIM16)
     262        if (htim->Instance == TIM3)
    263263        {
    264264                printf("Half\n");
  • trunk/firmware_v2/Core/Src/tim.c

    r19 r20  
    3131/* USER CODE END 0 */
    3232
    33 TIM_HandleTypeDef htim16;
     33TIM_HandleTypeDef htim3;
    3434TIM_HandleTypeDef htim17;
    35 DMA_HandleTypeDef hdma_tim16_ch1;
    36 
    37 /* TIM16 init function */
    38 void MX_TIM16_Init(void)
    39 {
    40 
    41   /* USER CODE BEGIN TIM16_Init 0 */
    42 
    43   // FAN TACHO
    44 
    45   /* USER CODE END TIM16_Init 0 */
    46 
     35DMA_HandleTypeDef hdma_tim3_ch1;
     36
     37/* TIM3 init function */
     38void MX_TIM3_Init(void)
     39{
     40
     41  /* USER CODE BEGIN TIM3_Init 0 */
     42
     43  /* USER CODE END TIM3_Init 0 */
     44
     45  TIM_ClockConfigTypeDef sClockSourceConfig = {0};
     46  TIM_MasterConfigTypeDef sMasterConfig = {0};
    4747  TIM_IC_InitTypeDef sConfigIC = {0};
    4848
    49   /* USER CODE BEGIN TIM16_Init 1 */
    50 
    51   /* USER CODE END TIM16_Init 1 */
    52   htim16.Instance = TIM16;
    53   htim16.Init.Prescaler = 3;
    54   htim16.Init.CounterMode = TIM_COUNTERMODE_UP;
    55   htim16.Init.Period = 65535;
    56   htim16.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
    57   htim16.Init.RepetitionCounter = 0;
    58   htim16.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
    59   if (HAL_TIM_Base_Init(&htim16) != HAL_OK)
    60   {
    61     Error_Handler();
    62   }
    63   if (HAL_TIM_IC_Init(&htim16) != HAL_OK)
     49  /* USER CODE BEGIN TIM3_Init 1 */
     50
     51  /* USER CODE END TIM3_Init 1 */
     52  htim3.Instance = TIM3;
     53  htim3.Init.Prescaler = 3;
     54  htim3.Init.CounterMode = TIM_COUNTERMODE_UP;
     55  htim3.Init.Period = 65535;
     56  htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
     57  htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
     58  if (HAL_TIM_Base_Init(&htim3) != HAL_OK)
     59  {
     60    Error_Handler();
     61  }
     62  sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
     63  if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK)
     64  {
     65    Error_Handler();
     66  }
     67  if (HAL_TIM_IC_Init(&htim3) != HAL_OK)
     68  {
     69    Error_Handler();
     70  }
     71  sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
     72  sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
     73  if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK)
    6474  {
    6575    Error_Handler();
     
    6979  sConfigIC.ICPrescaler = TIM_ICPSC_DIV1;
    7080  sConfigIC.ICFilter = 0;
    71   if (HAL_TIM_IC_ConfigChannel(&htim16, &sConfigIC, TIM_CHANNEL_1) != HAL_OK)
    72   {
    73     Error_Handler();
    74   }
    75   /* USER CODE BEGIN TIM16_Init 2 */
    76 
    77   __HAL_TIM_ENABLE_IT(&htim16, TIM_IT_UPDATE);
    78   HAL_TIM_IC_Start_DMA(&htim16, TIM_CHANNEL_1, (uint32_t*)ic_buf, STATE_NUM * AVG_NUM);
    79 
    80   /* USER CODE END TIM16_Init 2 */
     81  if (HAL_TIM_IC_ConfigChannel(&htim3, &sConfigIC, TIM_CHANNEL_1) != HAL_OK)
     82  {
     83    Error_Handler();
     84  }
     85  /* USER CODE BEGIN TIM3_Init 2 */
     86
     87  __HAL_TIM_ENABLE_IT(&htim3, TIM_IT_UPDATE);
     88  HAL_TIM_IC_Start_DMA(&htim3, TIM_CHANNEL_1, (uint32_t*)ic_buf, STATE_NUM * AVG_NUM);
     89
     90  /* USER CODE END TIM3_Init 2 */
    8191
    8292}
     
    148158
    149159  GPIO_InitTypeDef GPIO_InitStruct = {0};
    150   if(tim_baseHandle->Instance==TIM16)
    151   {
    152   /* USER CODE BEGIN TIM16_MspInit 0 */
    153 
    154   /* USER CODE END TIM16_MspInit 0 */
    155     /* TIM16 clock enable */
    156     __HAL_RCC_TIM16_CLK_ENABLE();
     160  if(tim_baseHandle->Instance==TIM3)
     161  {
     162  /* USER CODE BEGIN TIM3_MspInit 0 */
     163
     164  /* USER CODE END TIM3_MspInit 0 */
     165    /* TIM3 clock enable */
     166    __HAL_RCC_TIM3_CLK_ENABLE();
    157167
    158168    __HAL_RCC_GPIOA_CLK_ENABLE();
    159     /**TIM16 GPIO Configuration
    160     PA6     ------> TIM16_CH1
     169    /**TIM3 GPIO Configuration
     170    PA6     ------> TIM3_CH1
    161171    */
    162172    GPIO_InitStruct.Pin = FAN_TACHO_Pin;
     
    164174    GPIO_InitStruct.Pull = GPIO_PULLUP;
    165175    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
    166     GPIO_InitStruct.Alternate = GPIO_AF5_TIM16;
     176    GPIO_InitStruct.Alternate = GPIO_AF1_TIM3;
    167177    HAL_GPIO_Init(FAN_TACHO_GPIO_Port, &GPIO_InitStruct);
    168178
    169     /* TIM16 DMA Init */
    170     /* TIM16_CH1 Init */
    171     hdma_tim16_ch1.Instance = DMA1_Channel2;
    172     hdma_tim16_ch1.Init.Request = DMA_REQUEST_TIM16_CH1;
    173     hdma_tim16_ch1.Init.Direction = DMA_PERIPH_TO_MEMORY;
    174     hdma_tim16_ch1.Init.PeriphInc = DMA_PINC_DISABLE;
    175     hdma_tim16_ch1.Init.MemInc = DMA_MINC_ENABLE;
    176     hdma_tim16_ch1.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD;
    177     hdma_tim16_ch1.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD;
    178     hdma_tim16_ch1.Init.Mode = DMA_CIRCULAR;
    179     hdma_tim16_ch1.Init.Priority = DMA_PRIORITY_LOW;
    180     if (HAL_DMA_Init(&hdma_tim16_ch1) != HAL_OK)
     179    /* TIM3 DMA Init */
     180    /* TIM3_CH1 Init */
     181    hdma_tim3_ch1.Instance = DMA1_Channel2;
     182    hdma_tim3_ch1.Init.Request = DMA_REQUEST_TIM3_CH1;
     183    hdma_tim3_ch1.Init.Direction = DMA_PERIPH_TO_MEMORY;
     184    hdma_tim3_ch1.Init.PeriphInc = DMA_PINC_DISABLE;
     185    hdma_tim3_ch1.Init.MemInc = DMA_MINC_ENABLE;
     186    hdma_tim3_ch1.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD;
     187    hdma_tim3_ch1.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD;
     188    hdma_tim3_ch1.Init.Mode = DMA_CIRCULAR;
     189    hdma_tim3_ch1.Init.Priority = DMA_PRIORITY_LOW;
     190    if (HAL_DMA_Init(&hdma_tim3_ch1) != HAL_OK)
    181191    {
    182192      Error_Handler();
    183193    }
    184194
    185     __HAL_LINKDMA(tim_baseHandle,hdma[TIM_DMA_ID_CC1],hdma_tim16_ch1);
    186 
    187     /* TIM16 interrupt Init */
    188     HAL_NVIC_SetPriority(TIM16_IRQn, 0, 0);
    189     HAL_NVIC_EnableIRQ(TIM16_IRQn);
    190   /* USER CODE BEGIN TIM16_MspInit 1 */
    191 
    192   /* USER CODE END TIM16_MspInit 1 */
     195    __HAL_LINKDMA(tim_baseHandle,hdma[TIM_DMA_ID_CC1],hdma_tim3_ch1);
     196
     197    /* TIM3 interrupt Init */
     198    HAL_NVIC_SetPriority(TIM3_IRQn, 0, 0);
     199    HAL_NVIC_EnableIRQ(TIM3_IRQn);
     200  /* USER CODE BEGIN TIM3_MspInit 1 */
     201
     202  /* USER CODE END TIM3_MspInit 1 */
    193203  }
    194204  else if(tim_baseHandle->Instance==TIM17)
     
    237247{
    238248
    239   if(tim_baseHandle->Instance==TIM16)
    240   {
    241   /* USER CODE BEGIN TIM16_MspDeInit 0 */
    242 
    243   /* USER CODE END TIM16_MspDeInit 0 */
     249  if(tim_baseHandle->Instance==TIM3)
     250  {
     251  /* USER CODE BEGIN TIM3_MspDeInit 0 */
     252
     253  /* USER CODE END TIM3_MspDeInit 0 */
    244254    /* Peripheral clock disable */
    245     __HAL_RCC_TIM16_CLK_DISABLE();
    246 
    247     /**TIM16 GPIO Configuration
    248     PA6     ------> TIM16_CH1
     255    __HAL_RCC_TIM3_CLK_DISABLE();
     256
     257    /**TIM3 GPIO Configuration
     258    PA6     ------> TIM3_CH1
    249259    */
    250260    HAL_GPIO_DeInit(FAN_TACHO_GPIO_Port, FAN_TACHO_Pin);
    251261
    252     /* TIM16 DMA DeInit */
     262    /* TIM3 DMA DeInit */
    253263    HAL_DMA_DeInit(tim_baseHandle->hdma[TIM_DMA_ID_CC1]);
    254264
    255     /* TIM16 interrupt Deinit */
    256     HAL_NVIC_DisableIRQ(TIM16_IRQn);
    257   /* USER CODE BEGIN TIM16_MspDeInit 1 */
    258 
    259   /* USER CODE END TIM16_MspDeInit 1 */
     265    /* TIM3 interrupt Deinit */
     266    HAL_NVIC_DisableIRQ(TIM3_IRQn);
     267  /* USER CODE BEGIN TIM3_MspDeInit 1 */
     268
     269  /* USER CODE END TIM3_MspDeInit 1 */
    260270  }
    261271  else if(tim_baseHandle->Instance==TIM17)
  • trunk/firmware_v2/firmware_v2.ioc

    r19 r20  
    3737Dma.ADC1.0.SyncSignalID=NONE
    3838Dma.Request0=ADC1
    39 Dma.Request1=TIM16_CH1
     39Dma.Request1=TIM3_CH1
    4040Dma.RequestsNb=2
    41 Dma.TIM16_CH1.1.Direction=DMA_PERIPH_TO_MEMORY
    42 Dma.TIM16_CH1.1.EventEnable=DISABLE
    43 Dma.TIM16_CH1.1.Instance=DMA1_Channel2
    44 Dma.TIM16_CH1.1.MemDataAlignment=DMA_MDATAALIGN_HALFWORD
    45 Dma.TIM16_CH1.1.MemInc=DMA_MINC_ENABLE
    46 Dma.TIM16_CH1.1.Mode=DMA_CIRCULAR
    47 Dma.TIM16_CH1.1.PeriphDataAlignment=DMA_PDATAALIGN_HALFWORD
    48 Dma.TIM16_CH1.1.PeriphInc=DMA_PINC_DISABLE
    49 Dma.TIM16_CH1.1.Polarity=HAL_DMAMUX_REQ_GEN_RISING
    50 Dma.TIM16_CH1.1.Priority=DMA_PRIORITY_LOW
    51 Dma.TIM16_CH1.1.RequestNumber=1
    52 Dma.TIM16_CH1.1.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,SignalID,Polarity,RequestNumber,SyncSignalID,SyncPolarity,SyncEnable,EventEnable,SyncRequestNumber
    53 Dma.TIM16_CH1.1.SignalID=NONE
    54 Dma.TIM16_CH1.1.SyncEnable=DISABLE
    55 Dma.TIM16_CH1.1.SyncPolarity=HAL_DMAMUX_SYNC_NO_EVENT
    56 Dma.TIM16_CH1.1.SyncRequestNumber=1
    57 Dma.TIM16_CH1.1.SyncSignalID=NONE
     41Dma.TIM3_CH1.1.Direction=DMA_PERIPH_TO_MEMORY
     42Dma.TIM3_CH1.1.EventEnable=DISABLE
     43Dma.TIM3_CH1.1.Instance=DMA1_Channel2
     44Dma.TIM3_CH1.1.MemDataAlignment=DMA_MDATAALIGN_HALFWORD
     45Dma.TIM3_CH1.1.MemInc=DMA_MINC_ENABLE
     46Dma.TIM3_CH1.1.Mode=DMA_CIRCULAR
     47Dma.TIM3_CH1.1.PeriphDataAlignment=DMA_PDATAALIGN_HALFWORD
     48Dma.TIM3_CH1.1.PeriphInc=DMA_PINC_DISABLE
     49Dma.TIM3_CH1.1.Polarity=HAL_DMAMUX_REQ_GEN_RISING
     50Dma.TIM3_CH1.1.Priority=DMA_PRIORITY_LOW
     51Dma.TIM3_CH1.1.RequestNumber=1
     52Dma.TIM3_CH1.1.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,SignalID,Polarity,RequestNumber,SyncSignalID,SyncPolarity,SyncEnable,EventEnable,SyncRequestNumber
     53Dma.TIM3_CH1.1.SignalID=NONE
     54Dma.TIM3_CH1.1.SyncEnable=DISABLE
     55Dma.TIM3_CH1.1.SyncPolarity=HAL_DMAMUX_SYNC_NO_EVENT
     56Dma.TIM3_CH1.1.SyncRequestNumber=1
     57Dma.TIM3_CH1.1.SyncSignalID=NONE
    5858File.Version=6
    5959GPIO.groupedBy=Group By Peripherals
     
    6868Mcu.IP5=RCC
    6969Mcu.IP6=SYS
    70 Mcu.IP7=TIM16
     70Mcu.IP7=TIM3
    7171Mcu.IP8=TIM17
    7272Mcu.IP9=USART1
     
    9696Mcu.Pin27=VP_ADC1_TempSens_Input
    9797Mcu.Pin28=VP_SYS_VS_Systick
    98 Mcu.Pin29=VP_TIM16_VS_ClockSourceINT
     98Mcu.Pin29=VP_TIM3_VS_ClockSourceINT
    9999Mcu.Pin3=PA0
    100100Mcu.Pin30=VP_TIM17_VS_ClockSourceINT
     
    119119NVIC.SVC_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:true
    120120NVIC.SysTick_IRQn=true\:3\:0\:false\:false\:true\:false\:true\:false
    121 NVIC.TIM16_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
     121NVIC.TIM3_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
    122122PA0.GPIOParameters=GPIO_PuPd,GPIO_Label
    123123PA0.GPIO_Label=GPIO_INPUT_LVP
     
    162162PA6.GPIO_PuPd=GPIO_PULLUP
    163163PA6.Locked=true
    164 PA6.Signal=S_TIM16_CH1
     164PA6.Signal=S_TIM3_CH1
    165165PA7.GPIOParameters=GPIO_Label
    166166PA7.GPIO_Label=FAN_PWM
     
    264264ProjectManager.UAScriptBeforePath=
    265265ProjectManager.UnderRoot=false
    266 ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_DMA_Init-DMA-false-HAL-true,4-MX_ADC1_Init-ADC1-false-HAL-true,5-MX_TIM16_Init-TIM16-false-HAL-true,6-MX_TIM17_Init-TIM17-false-HAL-true,7-MX_USART1_UART_Init-USART1-false-HAL-true,0-MX_CORTEX_M0+_Init-CORTEX_M0+-false-HAL-true
     266ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_DMA_Init-DMA-false-HAL-true,4-MX_ADC1_Init-ADC1-false-HAL-true,5-MX_TIM17_Init-TIM17-false-HAL-true,6-MX_USART1_UART_Init-USART1-false-HAL-true,7-MX_TIM3_Init-TIM3-false-HAL-true,0-MX_CORTEX_M0+_Init-CORTEX_M0+-false-HAL-true
    267267RCC.ADCFreq_Value=12000000
    268268RCC.AHBFreq_Value=12000000
     
    287287RCC.SYSCLKFreq_VALUE=12000000
    288288RCC.USART1Freq_Value=12000000
    289 SH.S_TIM16_CH1.0=TIM16_CH1,Input_Capture1_from_TI1
    290 SH.S_TIM16_CH1.ConfNb=1
    291289SH.S_TIM17_CH1.0=TIM17_CH1,PWM Generation1 CH1
    292290SH.S_TIM17_CH1.ConfNb=1
    293 TIM16.AutoReloadPreload=TIM_AUTORELOAD_PRELOAD_ENABLE
    294 TIM16.Channel=TIM_CHANNEL_1
    295 TIM16.ICPolarity_CH1=TIM_INPUTCHANNELPOLARITY_FALLING
    296 TIM16.IPParameters=Channel,Prescaler,AutoReloadPreload,ICPolarity_CH1
    297 TIM16.Prescaler=3
     291SH.S_TIM3_CH1.0=TIM3_CH1,Input_Capture1_from_TI1
     292SH.S_TIM3_CH1.ConfNb=1
    298293TIM17.AutoReloadPreload=TIM_AUTORELOAD_PRELOAD_ENABLE
    299294TIM17.Channel=TIM_CHANNEL_1
     
    302297TIM17.Period=479
    303298TIM17.Pulse=64
     299TIM3.AutoReloadPreload=TIM_AUTORELOAD_PRELOAD_ENABLE
     300TIM3.Channel-Input_Capture1_from_TI1=TIM_CHANNEL_1
     301TIM3.ICPolarity_CH1=TIM_INPUTCHANNELPOLARITY_FALLING
     302TIM3.IPParameters=Channel-Input_Capture1_from_TI1,Prescaler,AutoReloadPreload,ICPolarity_CH1
     303TIM3.Prescaler=3
    304304USART1.IPParameters=VirtualMode-Asynchronous
    305305USART1.VirtualMode-Asynchronous=VM_ASYNC
     
    308308VP_SYS_VS_Systick.Mode=SysTick
    309309VP_SYS_VS_Systick.Signal=SYS_VS_Systick
    310 VP_TIM16_VS_ClockSourceINT.Mode=Enable_Timer
    311 VP_TIM16_VS_ClockSourceINT.Signal=TIM16_VS_ClockSourceINT
    312310VP_TIM17_VS_ClockSourceINT.Mode=Enable_Timer
    313311VP_TIM17_VS_ClockSourceINT.Signal=TIM17_VS_ClockSourceINT
     312VP_TIM3_VS_ClockSourceINT.Mode=Internal
     313VP_TIM3_VS_ClockSourceINT.Signal=TIM3_VS_ClockSourceINT
    314314board=custom
Note: See TracChangeset for help on using the changeset viewer.