Changeset 19 for trunk/firmware_v2/Core/Src/tim.c
- Timestamp:
- Aug 19, 2025, 11:11:18 AM (8 days ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/firmware_v2/Core/Src/tim.c
r18 r19 26 26 #define AVG_NUM (64U) 27 27 28 uint 32_t ic_buf[AVG_NUM][STATE_NUM];29 uint32_t ic_overflows [AVG_NUM][STATE_NUM];28 uint16_t ic_buf[AVG_NUM][STATE_NUM]; 29 uint32_t ic_overflows; 30 30 31 31 /* USER CODE END 0 */ … … 33 33 TIM_HandleTypeDef htim16; 34 34 TIM_HandleTypeDef htim17; 35 DMA_HandleTypeDef hdma_tim16_ch1; 35 36 36 37 /* TIM16 init function */ … … 74 75 /* USER CODE BEGIN TIM16_Init 2 */ 75 76 76 HAL_TIM_IC_Start_DMA(&htim16, TIM_CHANNEL_1, ic_buf, STATE_NUM * AVG_NUM); 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); 77 79 78 80 /* USER CODE END TIM16_Init 2 */ … … 134 136 } 135 137 /* USER CODE BEGIN TIM17_Init 2 */ 138 139 136 140 137 141 /* USER CODE END TIM17_Init 2 */ … … 163 167 HAL_GPIO_Init(FAN_TACHO_GPIO_Port, &GPIO_InitStruct); 164 168 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) 181 { 182 Error_Handler(); 183 } 184 185 __HAL_LINKDMA(tim_baseHandle,hdma[TIM_DMA_ID_CC1],hdma_tim16_ch1); 186 165 187 /* TIM16 interrupt Init */ 166 188 HAL_NVIC_SetPriority(TIM16_IRQn, 0, 0); … … 228 250 HAL_GPIO_DeInit(FAN_TACHO_GPIO_Port, FAN_TACHO_Pin); 229 251 252 /* TIM16 DMA DeInit */ 253 HAL_DMA_DeInit(tim_baseHandle->hdma[TIM_DMA_ID_CC1]); 254 230 255 /* TIM16 interrupt Deinit */ 231 256 HAL_NVIC_DisableIRQ(TIM16_IRQn); … … 249 274 /* USER CODE BEGIN 1 */ 250 275 276 void SetFANSpeed(unsigned speed) 277 { 278 const unsigned MAX_RPM = 1000U; // 100.0% 279 280 if (speed > MAX_RPM) speed = MAX_RPM; 281 282 const unsigned MAX_PWM = __HAL_TIM_GET_AUTORELOAD(&htim17); 283 const unsigned newPWM = (MAX_PWM * speed/ MAX_RPM); 284 285 __HAL_TIM_SET_COMPARE(&htim17, TIM_CHANNEL_1, newPWM); 286 } 287 251 288 /* USER CODE END 1 */
Note: See TracChangeset
for help on using the changeset viewer.