Changeset 18 for trunk/firmware_v2/Core
- Timestamp:
- Aug 19, 2025, 9:08:57 AM (9 days ago)
- Location:
- trunk/firmware_v2/Core/Src
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/firmware_v2/Core/Src/stm32c0xx_it.c
r17 r18 23 23 /* Private includes ----------------------------------------------------------*/ 24 24 /* USER CODE BEGIN Includes */ 25 26 #include <stdio.h> 27 25 28 /* USER CODE END Includes */ 26 29 … … 172 175 /* USER CODE BEGIN 1 */ 173 176 177 178 179 uint32_t capturedValue; 180 uint32_t previousCaptureValue; 181 uint32_t frequency; 182 uint32_t overflowCnt; 183 uint32_t T[STATE_NUM]; 184 185 static uint32_t avg; 186 static uint32_t psc; 187 static uint32_t freq; 188 static uint32_t rpm; 189 190 191 void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef* htim) 192 { 193 if (htim->Instance == TIM16) 194 { 195 static unsigned stateCnt; 196 197 capturedValue = HAL_TIM_ReadCapturedValue(htim, TIM_CHANNEL_1); 198 T[stateCnt++] = capturedValue + 65536U * overflowCnt; 199 overflowCnt = 0U; 200 201 if (stateCnt >= STATE_NUM - 1) 202 { 203 static uint32_t i; 204 205 ibuf[i++] = T[0] + T[1] + T[2] + T[3]; 206 207 if (i >= AVG_NUM) 208 { 209 uint32_t sum = 0U; 210 for (unsigned j = 0U; j < AVG_NUM; j++) sum += ibuf[j]; 211 avg = sum / AVG_NUM; 212 psc = htim->Instance->PSC + 1; 213 freq = HAL_RCC_GetPCLK1Freq() / (psc * avg); 214 rpm = freq * 60U; 215 printf("%u\n", rpm); 216 } 217 218 stateCnt = 0U; 219 } 220 } 221 } 222 223 //----------------------------------------------------------------------------- 224 225 void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef* htim) 226 { 227 if (htim->Instance == TIM16) 228 { 229 overflowCnt++; 230 } 231 } 232 174 233 /* USER CODE END 1 */ -
trunk/firmware_v2/Core/Src/tim.c
r17 r18 23 23 /* USER CODE BEGIN 0 */ 24 24 25 #define STATE_NUM (2U) 26 #define AVG_NUM (64U) 27 28 uint32_t ic_buf[AVG_NUM][STATE_NUM]; 29 uint32_t ic_overflows[AVG_NUM][STATE_NUM]; 30 25 31 /* USER CODE END 0 */ 26 32 … … 58 64 Error_Handler(); 59 65 } 60 sConfigIC.ICPolarity = TIM_INPUTCHANNELPOLARITY_ BOTHEDGE;66 sConfigIC.ICPolarity = TIM_INPUTCHANNELPOLARITY_FALLING; 61 67 sConfigIC.ICSelection = TIM_ICSELECTION_DIRECTTI; 62 68 sConfigIC.ICPrescaler = TIM_ICPSC_DIV1; … … 68 74 /* USER CODE BEGIN TIM16_Init 2 */ 69 75 70 HAL_TIM_IC_Start (&htim16, TIM_CHANNEL_1);76 HAL_TIM_IC_Start_DMA(&htim16, TIM_CHANNEL_1, ic_buf, STATE_NUM * AVG_NUM); 71 77 72 78 /* USER CODE END TIM16_Init 2 */ … … 105 111 } 106 112 sConfigOC.OCMode = TIM_OCMODE_PWM1; 107 sConfigOC.Pulse = 155;113 sConfigOC.Pulse = 64; 108 114 sConfigOC.OCPolarity = TIM_OCPOLARITY_LOW; 109 115 sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH; … … 131 137 /* USER CODE END TIM17_Init 2 */ 132 138 HAL_TIM_MspPostInit(&htim17); 139 133 140 } 134 141
Note: See TracChangeset
for help on using the changeset viewer.