45 #define BOARD_PWM_MODE TIM_OCMode_PWM1 79 #define TIMER_CR1_ARPE_BIT 7 80 #define TIMER_CR1_DIR_BIT 4 81 #define TIMER_CR1_OPM_BIT 3 82 #define TIMER_CR1_URS_BIT 2 83 #define TIMER_CR1_UDIS_BIT 1 84 #define TIMER_CR1_CEN_BIT 0 86 #define TIMER_CR1_CKD (0x3 << 8) 87 #define TIMER_CR1_CKD_1TCKINT (0x0 << 8) 88 #define TIMER_CR1_CKD_2TCKINT (0x1 << 8) 89 #define TIMER_CR1_CKD_4TICKINT (0x2 << 8) 90 #define TIMER_CR1_ARPE BIT(TIMER_CR1_ARPE_BIT) 91 #define TIMER_CR1_CKD_CMS (0x3 << 5) 92 #define TIMER_CR1_CKD_CMS_EDGE (0x0 << 5) 93 #define TIMER_CR1_CKD_CMS_CENTER1 (0x1 << 5) 94 #define TIMER_CR1_CKD_CMS_CENTER2 (0x2 << 5) 95 #define TIMER_CR1_CKD_CMS_CENTER3 (0x3 << 5) 96 #define TIMER_CR1_DIR BIT(TIMER_CR1_DIR_BIT) 97 #define TIMER_CR1_OPM BIT(TIMER_CR1_OPM_BIT) 98 #define TIMER_CR1_URS BIT(TIMER_CR1_URS_BIT) 99 #define TIMER_CR1_UDIS BIT(TIMER_CR1_UDIS_BIT) 100 #define TIMER_CR1_CEN BIT(TIMER_CR1_CEN_BIT) 104 #define TIMER_CR2_OIS4_BIT 14 105 #define TIMER_CR2_OIS3N_BIT 13 106 #define TIMER_CR2_OIS3_BIT 12 107 #define TIMER_CR2_OIS2N_BIT 11 108 #define TIMER_CR2_OIS2_BIT 10 109 #define TIMER_CR2_OIS1N_BIT 9 110 #define TIMER_CR2_OIS1_BIT 8 111 #define TIMER_CR2_TI1S_BIT 7 112 #define TIMER_CR2_CCDS_BIT 3 113 #define TIMER_CR2_CCUS_BIT 2 114 #define TIMER_CR2_CCPC_BIT 0 116 #define TIMER_CR2_OIS4 BIT(TIMER_CR2_OIS4_BIT) 117 #define TIMER_CR2_OIS3N BIT(TIMER_CR2_OIS3N_BIT) 118 #define TIMER_CR2_OIS3 BIT(TIMER_CR2_OIS3_BIT) 119 #define TIMER_CR2_OIS2N BIT(TIMER_CR2_OIS2N_BIT) 120 #define TIMER_CR2_OIS2 BIT(TIMER_CR2_OIS2_BIT) 121 #define TIMER_CR2_OIS1N BIT(TIMER_CR2_OIS1N_BIT) 122 #define TIMER_CR2_OIS1 BIT(TIMER_CR2_OIS1_BIT) 123 #define TIMER_CR2_TI1S BIT(TIMER_CR2_TI1S_BIT) 124 #define TIMER_CR2_MMS (0x7 << 4) 125 #define TIMER_CR2_MMS_RESET (0x0 << 4) 126 #define TIMER_CR2_MMS_ENABLE (0x1 << 4) 127 #define TIMER_CR2_MMS_UPDATE (0x2 << 4) 128 #define TIMER_CR2_MMS_COMPARE_PULSE (0x3 << 4) 129 #define TIMER_CR2_MMS_COMPARE_OC1REF (0x4 << 4) 130 #define TIMER_CR2_MMS_COMPARE_OC2REF (0x5 << 4) 131 #define TIMER_CR2_MMS_COMPARE_OC3REF (0x6 << 4) 132 #define TIMER_CR2_MMS_COMPARE_OC4REF (0x7 << 4) 133 #define TIMER_CR2_CCDS BIT(TIMER_CR2_CCDS_BIT) 134 #define TIMER_CR2_CCUS BIT(TIMER_CR2_CCUS_BIT) 135 #define TIMER_CR2_CCPC BIT(TIMER_CR2_CCPC_BIT) 139 #define TIMER_SMCR_ETP_BIT 15 140 #define TIMER_SMCR_ECE_BIT 14 141 #define TIMER_SMCR_MSM_BIT 7 143 #define TIMER_SMCR_ETP BIT(TIMER_SMCR_ETP_BIT) 144 #define TIMER_SMCR_ECE BIT(TIMER_SMCR_ECE_BIT) 145 #define TIMER_SMCR_ETPS (0x3 << 12) 146 #define TIMER_SMCR_ETPS_OFF (0x0 << 12) 147 #define TIMER_SMCR_ETPS_DIV2 (0x1 << 12) 148 #define TIMER_SMCR_ETPS_DIV4 (0x2 << 12) 149 #define TIMER_SMCR_ETPS_DIV8 (0x3 << 12) 150 #define TIMER_SMCR_ETF (0xF << 12) 151 #define TIMER_SMCR_MSM BIT(TIMER_SMCR_MSM_BIT) 152 #define TIMER_SMCR_TS (0x3 << 4) 153 #define TIMER_SMCR_TS_ITR0 (0x0 << 4) 154 #define TIMER_SMCR_TS_ITR1 (0x1 << 4) 155 #define TIMER_SMCR_TS_ITR2 (0x2 << 4) 156 #define TIMER_SMCR_TS_ITR3 (0x3 << 4) 157 #define TIMER_SMCR_TS_TI1F_ED (0x4 << 4) 158 #define TIMER_SMCR_TS_TI1FP1 (0x5 << 4) 159 #define TIMER_SMCR_TS_TI2FP2 (0x6 << 4) 160 #define TIMER_SMCR_TS_ETRF (0x7 << 4) 161 #define TIMER_SMCR_SMS 0x3 162 #define TIMER_SMCR_SMS_DISABLED 0x0 163 #define TIMER_SMCR_SMS_ENCODER1 0x1 164 #define TIMER_SMCR_SMS_ENCODER2 0x2 165 #define TIMER_SMCR_SMS_ENCODER3 0x3 166 #define TIMER_SMCR_SMS_RESET 0x4 167 #define TIMER_SMCR_SMS_GATED 0x5 168 #define TIMER_SMCR_SMS_TRIGGER 0x6 169 #define TIMER_SMCR_SMS_EXTERNAL 0x7 173 #define TIMER_DIER_TDE_BIT 14 174 #define TIMER_DIER_CC4DE_BIT 12 175 #define TIMER_DIER_CC3DE_BIT 11 176 #define TIMER_DIER_CC2DE_BIT 10 177 #define TIMER_DIER_CC1DE_BIT 9 178 #define TIMER_DIER_UDE_BIT 8 179 #define TIMER_DIER_TIE_BIT 6 180 #define TIMER_DIER_CC4IE_BIT 4 181 #define TIMER_DIER_CC3IE_BIT 3 182 #define TIMER_DIER_CC2IE_BIT 2 183 #define TIMER_DIER_CC1IE_BIT 1 184 #define TIMER_DIER_UIE_BIT 0 186 #define TIMER_DIER_TDE BIT(TIMER_DIER_TDE_BIT) 187 #define TIMER_DIER_CC4DE BIT(TIMER_DIER_CC4DE_BIT) 188 #define TIMER_DIER_CC3DE BIT(TIMER_DIER_CC3DE_BIT) 189 #define TIMER_DIER_CC2DE BIT(TIMER_DIER_CC2DE_BIT) 190 #define TIMER_DIER_CC1DE BIT(TIMER_DIER_CC1DE_BIT) 191 #define TIMER_DIER_UDE BIT(TIMER_DIER_UDE_BIT) 192 #define TIMER_DIER_TIE BIT(TIMER_DIER_TIE_BIT) 193 #define TIMER_DIER_CC4IE BIT(TIMER_DIER_CC4IE_BIT) 194 #define TIMER_DIER_CC3IE BIT(TIMER_DIER_CC3IE_BIT) 195 #define TIMER_DIER_CC2IE BIT(TIMER_DIER_CC2IE_BIT) 196 #define TIMER_DIER_CC1IE BIT(TIMER_DIER_CC1IE_BIT) 197 #define TIMER_DIER_UIE BIT(TIMER_DIER_UIE_BIT) 201 #define TIMER_SR_CC4OF_BIT 12 202 #define TIMER_SR_CC3OF_BIT 11 203 #define TIMER_SR_CC2OF_BIT 10 204 #define TIMER_SR_CC1OF_BIT 9 205 #define TIMER_SR_BIF_BIT 7 206 #define TIMER_SR_TIF_BIT 6 207 #define TIMER_SR_COMIF_BIT 5 208 #define TIMER_SR_CC4IF_BIT 4 209 #define TIMER_SR_CC3IF_BIT 3 210 #define TIMER_SR_CC2IF_BIT 2 211 #define TIMER_SR_CC1IF_BIT 1 212 #define TIMER_SR_UIF_BIT 0 214 #define TIMER_SR_CC4OF BIT(TIMER_SR_CC4OF_BIT) 215 #define TIMER_SR_CC3OF BIT(TIMER_SR_CC3OF_BIT) 216 #define TIMER_SR_CC2OF BIT(TIMER_SR_CC2OF_BIT) 217 #define TIMER_SR_CC1OF BIT(TIMER_SR_CC1OF_BIT) 218 #define TIMER_SR_BIF BIT(TIMER_SR_BIF_BIT) 219 #define TIMER_SR_TIF BIT(TIMER_SR_TIF_BIT) 220 #define TIMER_SR_COMIF BIT(TIMER_SR_COMIF_BIT) 221 #define TIMER_SR_CC4IF BIT(TIMER_SR_CC4IF_BIT) 222 #define TIMER_SR_CC3IF BIT(TIMER_SR_CC3IF_BIT) 223 #define TIMER_SR_CC2IF BIT(TIMER_SR_CC2IF_BIT) 224 #define TIMER_SR_CC1IF BIT(TIMER_SR_CC1IF_BIT) 225 #define TIMER_SR_UIF BIT(TIMER_SR_UIF_BIT) 229 #define TIMER_EGR_TG_BIT 6 230 #define TIMER_EGR_CC4G_BIT 4 231 #define TIMER_EGR_CC3G_BIT 3 232 #define TIMER_EGR_CC2G_BIT 2 233 #define TIMER_EGR_CC1G_BIT 1 234 #define TIMER_EGR_UG_BIT 0 236 #define TIMER_EGR_TG BIT(TIMER_EGR_TG_BIT) 237 #define TIMER_EGR_CC4G BIT(TIMER_EGR_CC4G_BIT) 238 #define TIMER_EGR_CC3G BIT(TIMER_EGR_CC3G_BIT) 239 #define TIMER_EGR_CC2G BIT(TIMER_EGR_CC2G_BIT) 240 #define TIMER_EGR_CC1G BIT(TIMER_EGR_CC1G_BIT) 241 #define TIMER_EGR_UG BIT(TIMER_EGR_UG_BIT) 245 #define TIMER_CCMR_CCS_OUTPUT 0x0 246 #define TIMER_CCMR_CCS_INPUT_TI1 0x1 247 #define TIMER_CCMR_CCS_INPUT_TI2 0x2 248 #define TIMER_CCMR_CCS_INPUT_TRC 0x3 252 #define TIMER_CCMR1_OC2CE_BIT 15 253 #define TIMER_CCMR1_OC2PE_BIT 11 254 #define TIMER_CCMR1_OC2FE_BIT 10 255 #define TIMER_CCMR1_OC1CE_BIT 7 256 #define TIMER_CCMR1_OC1PE_BIT 3 257 #define TIMER_CCMR1_OC1FE_BIT 2 259 #define TIMER_CCMR1_OC2CE BIT(TIMER_CCMR1_OC2CE_BIT) 260 #define TIMER_CCMR1_OC2M (0x3 << 12) 261 #define TIMER_CCMR1_IC2F (0xF << 12) 262 #define TIMER_CCMR1_OC2PE BIT(TIMER_CCMR1_OC2PE_BIT) 263 #define TIMER_CCMR1_OC2FE BIT(TIMER_CCMR1_OC2FE_BIT) 264 #define TIMER_CCMR1_IC2PSC (0x3 << 10) 265 #define TIMER_CCMR1_CC2S (0x3 << 8) 266 #define TIMER_CCMR1_CC2S_OUTPUT (TIMER_CCMR_CCS_OUTPUT << 8) 267 #define TIMER_CCMR1_CC2S_INPUT_TI1 (TIMER_CCMR_CCS_INPUT_TI1 << 8) 268 #define TIMER_CCMR1_CC2S_INPUT_TI2 (TIMER_CCMR_CCS_INPUT_TI2 << 8) 269 #define TIMER_CCMR1_CC2S_INPUT_TRC (TIMER_CCMR_CCS_INPUT_TRC << 8) 270 #define TIMER_CCMR1_OC1CE BIT(TIMER_CCMR1_OC1CE_BIT) 271 #define TIMER_CCMR1_OC1M (0x3 << 4) 272 #define TIMER_CCMR1_IC1F (0xF << 4) 273 #define TIMER_CCMR1_OC1PE BIT(TIMER_CCMR1_OC1PE_BIT) 274 #define TIMER_CCMR1_OC1FE BIT(TIMER_CCMR1_OC1FE_BIT) 275 #define TIMER_CCMR1_IC1PSC (0x3 << 2) 276 #define TIMER_CCMR1_CC1S 0x3 277 #define TIMER_CCMR1_CC1S_OUTPUT TIMER_CCMR_CCS_OUTPUT 278 #define TIMER_CCMR1_CC1S_INPUT_TI1 TIMER_CCMR_CCS_INPUT_TI1 279 #define TIMER_CCMR1_CC1S_INPUT_TI2 TIMER_CCMR_CCS_INPUT_TI2 280 #define TIMER_CCMR1_CC1S_INPUT_TRC TIMER_CCMR_CCS_INPUT_TRC 284 #define TIMER_CCMR2_OC4CE_BIT 15 285 #define TIMER_CCMR2_OC4PE_BIT 11 286 #define TIMER_CCMR2_OC4FE_BIT 10 287 #define TIMER_CCMR2_OC3CE_BIT 7 288 #define TIMER_CCMR2_OC3PE_BIT 3 289 #define TIMER_CCMR2_OC3FE_BIT 2 291 #define TIMER_CCMR2_OC4CE BIT(TIMER_CCMR2_OC4CE_BIT) 292 #define TIMER_CCMR2_OC4M (0x3 << 12) 293 #define TIMER_CCMR2_IC2F (0xF << 12) 294 #define TIMER_CCMR2_OC4PE BIT(TIMER_CCMR2_OC4PE_BIT) 295 #define TIMER_CCMR2_OC4FE BIT(TIMER_CCMR2_OC4FE_BIT) 296 #define TIMER_CCMR2_IC2PSC (0x3 << 10) 297 #define TIMER_CCMR2_CC4S (0x3 << 8) 298 #define TIMER_CCMR1_CC4S_OUTPUT (TIMER_CCMR_CCS_OUTPUT << 8) 299 #define TIMER_CCMR1_CC4S_INPUT_TI1 (TIMER_CCMR_CCS_INPUT_TI1 << 8) 300 #define TIMER_CCMR1_CC4S_INPUT_TI2 (TIMER_CCMR_CCS_INPUT_TI2 << 8) 301 #define TIMER_CCMR1_CC4S_INPUT_TRC (TIMER_CCMR_CCS_INPUT_TRC << 8) 302 #define TIMER_CCMR2_OC3CE BIT(TIMER_CCMR2_OC3CE_BIT) 303 #define TIMER_CCMR2_OC3M (0x3 << 4) 304 #define TIMER_CCMR2_IC1F (0xF << 4) 305 #define TIMER_CCMR2_OC3PE BIT(TIMER_CCMR2_OC3PE_BIT) 306 #define TIMER_CCMR2_OC3FE BIT(TIMER_CCMR2_OC3FE_BIT) 307 #define TIMER_CCMR2_IC1PSC (0x3 << 2) 308 #define TIMER_CCMR2_CC3S 0x3 309 #define TIMER_CCMR1_CC3S_OUTPUT TIMER_CCMR_CCS_OUTPUT 310 #define TIMER_CCMR1_CC3S_INPUT_TI1 TIMER_CCMR_CCS_INPUT_TI1 311 #define TIMER_CCMR1_CC3S_INPUT_TI2 TIMER_CCMR_CCS_INPUT_TI2 312 #define TIMER_CCMR1_CC3S_INPUT_TRC TIMER_CCMR_CCS_INPUT_TRC 316 #define TIMER_CCER_CC4P_BIT 13 317 #define TIMER_CCER_CC4E_BIT 12 318 #define TIMER_CCER_CC3NP_BIT 11 319 #define TIMER_CCER_CC3NE_BIT 10 320 #define TIMER_CCER_CC3P_BIT 9 321 #define TIMER_CCER_CC3E_BIT 8 322 #define TIMER_CCER_CC2NP_BIT 7 323 #define TIMER_CCER_CC2NE_BIT 6 324 #define TIMER_CCER_CC2P_BIT 5 325 #define TIMER_CCER_CC2E_BIT 4 326 #define TIMER_CCER_CC1NP_BIT 3 327 #define TIMER_CCER_CC1NE_BIT 2 328 #define TIMER_CCER_CC1P_BIT 1 329 #define TIMER_CCER_CC1E_BIT 0 331 #define TIMER_CCER_CC4P BIT(TIMER_CCER_CC4P_BIT) 332 #define TIMER_CCER_CC4E BIT(TIMER_CCER_CC4E_BIT) 333 #define TIMER_CCER_CC3P BIT(TIMER_CCER_CC3P_BIT) 334 #define TIMER_CCER_CC3E BIT(TIMER_CCER_CC3E_BIT) 335 #define TIMER_CCER_CC2P BIT(TIMER_CCER_CC2P_BIT) 336 #define TIMER_CCER_CC2E BIT(TIMER_CCER_CC2E_BIT) 337 #define TIMER_CCER_CC1P BIT(TIMER_CCER_CC1P_BIT) 338 #define TIMER_CCER_CC1E BIT(TIMER_CCER_CC1E_BIT) 340 #define TIMER_CCER_CC3NP BIT(TIMER_CCER_CC3NP_BIT) 341 #define TIMER_CCER_CC3NE BIT(TIMER_CCER_CC3NE_BIT) 342 #define TIMER_CCER_CC2NP BIT(TIMER_CCER_CC2NP_BIT) 343 #define TIMER_CCER_CC2NE BIT(TIMER_CCER_CC2NE_BIT) 344 #define TIMER_CCER_CC1NP BIT(TIMER_CCER_CC1NP_BIT) 345 #define TIMER_CCER_CC1NE BIT(TIMER_CCER_CC1NE_BIT) 349 #define TIMER_BDTR_MOE_BIT 15 350 #define TIMER_BDTR_AOE_BIT 14 351 #define TIMER_BDTR_BKP_BIT 13 352 #define TIMER_BDTR_BKE_BIT 12 353 #define TIMER_BDTR_OSSR_BIT 11 354 #define TIMER_BDTR_OSSI_BIT 10 356 #define TIMER_BDTR_MOE BIT(TIMER_BDTR_MOE_BIT) 357 #define TIMER_BDTR_AOE BIT(TIMER_BDTR_AOE_BIT) 358 #define TIMER_BDTR_BKP BIT(TIMER_BDTR_BKP_BIT) 359 #define TIMER_BDTR_BKE BIT(TIMER_BDTR_BKE_BIT) 360 #define TIMER_BDTR_OSSR BIT(TIMER_BDTR_OSSR_BIT) 361 #define TIMER_BDTR_OSSI BIT(TIMER_BDTR_OSSI_BIT) 362 #define TIMER_BDTR_LOCK (0x3 << 8) 363 #define TIMER_BDTR_LOCK_OFF (0x0 << 8) 364 #define TIMER_BDTR_LOCK_LEVEL1 (0x1 << 8) 365 #define TIMER_BDTR_LOCK_LEVEL2 (0x2 << 8) 366 #define TIMER_BDTR_LOCK_LEVEL3 (0x3 << 8) 367 #define TIMER_BDTR_DTG 0xFF 371 #define TIMER_DCR_DBL (0x1F << 8) 372 #define TIMER_DCR_DBL_1BYTE (0x0 << 8) 373 #define TIMER_DCR_DBL_2BYTE (0x1 << 8) 374 #define TIMER_DCR_DBL_3BYTE (0x2 << 8) 375 #define TIMER_DCR_DBL_4BYTE (0x3 << 8) 376 #define TIMER_DCR_DBL_5BYTE (0x4 << 8) 377 #define TIMER_DCR_DBL_6BYTE (0x5 << 8) 378 #define TIMER_DCR_DBL_7BYTE (0x6 << 8) 379 #define TIMER_DCR_DBL_8BYTE (0x7 << 8) 380 #define TIMER_DCR_DBL_9BYTE (0x8 << 8) 381 #define TIMER_DCR_DBL_10BYTE (0x9 << 8) 382 #define TIMER_DCR_DBL_11BYTE (0xA << 8) 383 #define TIMER_DCR_DBL_12BYTE (0xB << 8) 384 #define TIMER_DCR_DBL_13BYTE (0xC << 8) 385 #define TIMER_DCR_DBL_14BYTE (0xD << 8) 386 #define TIMER_DCR_DBL_15BYTE (0xE << 8) 387 #define TIMER_DCR_DBL_16BYTE (0xF << 8) 388 #define TIMER_DCR_DBL_17BYTE (0x10 << 8) 389 #define TIMER_DCR_DBL_18BYTE (0x11 << 8) 390 #define TIMER_DCR_DBA 0x1F 391 #define TIMER_DCR_DBA_CR1 0x0 392 #define TIMER_DCR_DBA_CR2 0x1 393 #define TIMER_DCR_DBA_SMCR 0x2 394 #define TIMER_DCR_DBA_DIER 0x3 395 #define TIMER_DCR_DBA_SR 0x4 396 #define TIMER_DCR_DBA_EGR 0x5 397 #define TIMER_DCR_DBA_CCMR1 0x6 398 #define TIMER_DCR_DBA_CCMR2 0x7 399 #define TIMER_DCR_DBA_CCER 0x8 400 #define TIMER_DCR_DBA_CNT 0x9 401 #define TIMER_DCR_DBA_PSC 0xA 402 #define TIMER_DCR_DBA_ARR 0xB 403 #define TIMER_DCR_DBA_RCR 0xC 404 #define TIMER_DCR_DBA_CCR1 0xD 405 #define TIMER_DCR_DBA_CCR2 0xE 406 #define TIMER_DCR_DBA_CCR3 0xF 407 #define TIMER_DCR_DBA_CCR4 0x10 408 #define TIMER_DCR_DBA_BDTR 0x11 409 #define TIMER_DCR_DBA_DCR 0x12 410 #define TIMER_DCR_DBA_DMAR 0x13 455 #define TIMER_CH_MASK 7 464 #define CONSTEXPR constexpr 594 #define timer1 (timers[0]) 595 #define timer2 (timers[1]) 596 #define timer3 (timers[2]) 597 #define timer4 (timers[3]) 598 #define timer5 (timers[4]) 599 #define timer6 (timers[5]) 600 #define timer7 (timers[6]) 601 #define timer8 (timers[7]) 602 #define timer9 (timers[8]) 603 #define timer10 (timers[9]) 604 #define timer11 (timers[10]) 605 #define timer12 (timers[11]) 606 #define timer13 (timers[12]) 607 #define timer14 (timers[13]) 609 #define TIMER1 (&timer1) 610 #define TIMER2 (&timer2) 611 #define TIMER3 (&timer3) 612 #define TIMER4 (&timer4) 613 #define TIMER5 (&timer5) 614 #define TIMER6 (&timer6) 615 #define TIMER7 (&timer7) 616 #define TIMER8 (&timer8) 617 #define TIMER9 (&timer9) 618 #define TIMER10 (&timer10) 619 #define TIMER11 (&timer11) 620 #define TIMER12 (&timer12) 621 #define TIMER13 (&timer13) 622 #define TIMER14 (&timer14) 652 if(dev->
regs == TIM2 || dev->
regs == TIM5)
703 return (uint16_t)(dev->
regs->CNT);
707 return dev->
regs->CNT;
732 return (uint16_t)(dev->
regs->PSC);
746 dev->
regs->PSC = psc;
754 return (uint16_t)(dev->
regs->ARR);
764 dev->
regs->ARR = arr;
868 dev->
regs->CCER |= (uint16_t)TIM_CCER_CC1E;
871 dev->
regs->CCER |= (uint16_t)TIM_CCER_CC2E;
874 dev->
regs->CCER |= (uint16_t)TIM_CCER_CC3E;
877 dev->
regs->CCER |= (uint16_t)TIM_CCER_CC4E;
901 dev->
regs->CCER &= (uint16_t)~TIM_CCER_CC1E;
904 dev->
regs->CCER &= (uint16_t)~TIM_CCER_CC2E;
907 dev->
regs->CCER &= (uint16_t)~TIM_CCER_CC3E;
910 dev->
regs->CCER &= (uint16_t)~TIM_CCER_CC4E;
952 *
bb_perip(&(dev->
regs->CCER), 4 * (channel - 1) + 1) = pol;
976 uint32_t tmp = dev->
regs->DCR;
978 tmp |= (length - 1) << 8;
979 dev->
regs->DCR = tmp;
1032 uint32_t dcr = dev->
regs->DCR;
1043 timer_dma_base_addr dma_base) {
1044 uint32_t tmp = dev->
regs->DCR;
1047 dev->
regs->DCR = tmp;
1071 uint8_t bit0 = channel & 1;
1072 uint8_t bit1 = ((channel-1) >> 1) & 1;
1074 __IO uint16_t *ccmr = &(dev->
regs->CCMR1) + bit1*2;
1076 uint8_t shift = 8 * (1 - bit0);
1078 uint16_t tmp = *ccmr;
1079 tmp &= ~(0xFF << shift);
1102 uint8_t bit0 = channel & 1;
1103 uint8_t bit1 = ((channel-1) >> 1) & 1;
1105 __IO uint16_t *ccmr = &(dev->
regs->CCMR1) + bit1*2;
1107 uint8_t shift = 8 * (1 - bit0);
1109 uint16_t tmp = *ccmr;
1110 tmp &= ~(0xFF << shift);
1111 tmp |= (mode | (filter << 4) ) << shift;
void timer_reset(const timer_dev *dev)
static void timer_dma_disable_req(const timer_dev *dev, timer_Channel channel)
Disable a timer channel's DMA request.
static void timer_cc_enable(const timer_dev *dev, timer_Channel channel)
Enable a timer channel's capture/compare signal.
static void timer_cc_disable(const timer_dev *dev, timer_Channel channel)
Disable a timer channel's output compare or input capture signal.
void timer_enable_NVICirq(const timer_dev *dev, uint8_t interrupt, uint8_t priority)
#define TIMER_DCR_DBA_RCR
#define TIMER_DCR_DBA_CNT
static void timer_disable_all(void)
void TIM8_IRQHandler(void)
#define TIMER_DCR_DBA_DCR
static void timer_cc_set_pol(const timer_dev *dev, timer_Channel channel, timer_cc_polarity pol)
Set a timer channel's capture/compare output polarity.
void TIM7_IRQHandler(void)
static void timer_dma_disable_trg_req(const timer_dev *dev)
Disable a timer's trigger DMA request.
#define TIMER_DCR_DBA_DMAR
enum Timer_cc_Polarity timer_cc_polarity
static INLINE uint16_t timer_get_capture(const timer_dev *dev, timer_Channel channel)
void timer_disable_NVICirq(const timer_dev *dev, uint8_t interrupt)
static INLINE uint32_t get_timer_mask(const timer_dev *dev)
void timer_detach_interrupt(const timer_dev *dev, uint8_t interrupt)
static INLINE void timer_pause(const timer_dev *dev)
Stop a timer's counter from changing.
static INLINE void timer_set_count(const timer_dev *dev, uint16_t value)
Sets the counter value for the given timer.
void TIM2_IRQHandler(void)
static INLINE uint16_t timer_get_count(const timer_dev *dev)
Returns the timer's counter value.
void timer_attach_interrupt(const timer_dev *dev, uint8_t interrupt, Handler handler, uint8_t priority)
#define TIMER_DCR_DBA_DIER
static void timer_dma_enable_req(const timer_dev *dev, timer_Channel channel)
Enable a timer channel's DMA request.
static INLINE void timer_resume(const timer_dev *dev)
Start a timer's counter.
#define TIMER_DCR_DBA_CR1
static timer_dma_base_addr timer_dma_get_base_addr(const timer_dev *dev)
Get the timer's DMA base address.
timer_interrupt_id
Timer interrupt number.
void timer_set_mode(const timer_dev *dev, timer_Channel channel, timer_mode mode)
static uint16_t timer_get_prescaler(const timer_dev *dev)
Returns the given timer's prescaler.
static AP_HAL::OwnPtr< AP_HAL::Device > dev
void TIM6_IRQHandler(void)
static uint16_t timer_get_reload(const timer_dev *dev)
Returns a timer's reload value.
#define TIMER_DCR_DBA_CCER
#define TIMER_DCR_DBA_SMCR
void timer_disable(const timer_dev *dev)
Disable a timer.
static void timer_dma_set_burst_len(const timer_dev *dev, uint8_t length)
Set a timer's DMA burst length.
#define TIMER_DCR_DBA_EGR
struct TimerState timerState
static void timer_oc_set_mode(const timer_dev *dev, timer_Channel _channel, timer_oc_mode mode, uint8_t flags)
Configure a channel's output compare mode.
static void timer_init_all(void)
#define TIMER_DCR_DBA_CCR4
void TIM5_IRQHandler(void)
#define TIMER_DCR_DBA_CCR3
static void timer_set_compare(const timer_dev *dev, timer_Channel channel, uint16_t value)
Set the compare value for the given timer channel.
timer_dma_base_addr
Timer DMA base address.
Bit-banding utility functions.
enum Dma_stream dma_stream
#define TIMER_DCR_DBA_BDTR
#define TIMER_DCR_DBA_CCMR1
static void timer_enable_irq(const timer_dev *dev, timer_interrupt_id interrupt)
Enable a timer interrupt.
void NOINLINE filter(float &dst, float val, const byte k)
static void timer_disable_irq(const timer_dev *dev, timer_interrupt_id interrupt)
Disable a timer interrupt.
static void timer_dma_enable_trg_req(const timer_dev *dev)
Enable a timer's trigger DMA request.
static void timer_ic_set_mode(const timer_dev *dev, timer_Channel _channel, uint8_t mode, uint16_t filter)
Configure a channel's input capture mode.
void timer_attach_all_interrupts(const timer_dev *dev, Handler handler)
void(* TimerHandler)(TIM_TypeDef *tim)
uint32_t configTimeBase(const timer_dev *dev, uint16_t period, uint16_t khz)
static uint16_t timer_get_compare(const timer_dev *dev, timer_Channel channel)
Get the compare value for the given timer channel.
static timer_cc_polarity timer_cc_get_pol(const timer_dev *dev, timer_Channel channel)
Get a channel's capture/compare output polarity.
#define TIMER_DIER_TDE_BIT
#define TIMER_DCR_DBA_CR2
void TIM4_IRQHandler(void)
#define TIMER_DCR_DBA_PSC
#define TIMER_CR1_CEN_BIT
static INLINE void timer_set_reload(const timer_dev *dev, uint32_t arr)
Set a timer's reload value.
static void timer_dma_set_base_addr(const timer_dev *dev, timer_dma_base_addr dma_base)
Set the timer's DMA base address.
#define TIMER_DCR_DBA_CCR2
void timer_foreach(void(*fn)(const timer_dev *))
Call a function on timer devices.
#define TIMER_DCR_DBA_ARR
void timer_init(const timer_dev *dev)
static void timer_set_prescaler(const timer_dev *dev, uint16_t psc)
Set a timer's prescale value.
static INLINE uint32_t timer_get_count32(const timer_dev *dev)
#define TIMER_DCR_DBA_CCR1
static uint8_t timer_dma_get_burst_len(const timer_dev *dev)
Get a timer's DMA burst length.
#define TIMER_CCMR_CCS_OUTPUT
#define TIMER_DCR_DBA_CCMR2
void TIM3_IRQHandler(void)
static volatile uint32_t * bb_perip(volatile void *address, uint32_t bit)
Obtain a pointer to the bit-band address corresponding to a bit in a peripheral address.
static void timer_generate_update(const timer_dev *dev)
Generate an update event for the given timer.