我正在尝试在直接输入捕获模式 (
STM32F3-DISCOVERY) 中使用
tiM1 测量方波的频率。我可以成功测量频率,但我想添加一个输入预分频器,无论我设置的预分频器的值是多少,我都会在我的捕获/比较寄存器 (CCR1) 上获得相同的值。
我的 TIM1 代码:
- void TIM1_IC_INIT(void) {
- RCC->AHBENR |= RCC_AHBENR_GPIOAEN; //ENABLE GPIOA CLOCK
- RCC->APB2ENR |= RCC_APB2ENR_TIM1EN; //ENABLE TIMER CLOCK
- RCC->CFGR3 |= RCC_CFGR3_TIM1SW; //SELECT CLOCK SOURCE PLLCLK*2
- GPIOA->MODER |= GPIO_MODER_MODER8_1; //SET GPIO TO ALETERNATE FUNCTION
- GPIOA->AFR[1] |= 6 << GPIO_AFRH_AFRH0_Pos; //AF6 FOR PA8 , TIM1_CH1
- TIM1->SMCR |= 5 << TIM_SMCR_TS_Pos | TIM_SMCR_SMS_2; //RESET MODE
- TIM1->CCMR1 |= 1 << TIM_CCMR1_CC1S_Pos; //CONFIGURE CH1 AS INPUT
- TIM1->CCER &= ~(TIM_CCER_CC1P | TIM_CCER_CC1NP); //RISING EDGE POLARITY
- TIM1->CCMR1 |= 3 << TIM_CCMR1_IC1PSC_Pos; //SET A PRESCALER OF 8
- TIM1->CCER |= TIM_CCER_CC1E; //ENABLE CAPTURE
- TIM1->CR1 |= TIM_CR1_CEN; // START TIMER
- }
在调试时,我检查了 CCMR1 的值以检查预分频器位是否已正确设置,是的,IC1PSC[3:2] 的值设置为 0b11。我不知道问题出在哪里,有什么想法吗?