我使用安装在我自己的板上的
STM32MP151CAA3。
我想在 Cortex-M4 的 PWM 生成模式下开始对
tiM3 进行计数。
的
我写了下面的代码,但是,TIM3并没有开始计数(第56行之后,TIM3_CNT的值根本没有改变)。
在此代码中,PB04 端口用作 PWM 输出端口。
的
- void TIM3_Count_Start(void)
- {
- TIM_HandleTypeDef m_handleTim3;
- TIM_OC_InitTypeDef sConfigOC;
- TIM_SlaveConfigTypeDef sSlaveConfig;
- TIM_MasterConfigTypeDef sMasterConfig;
- GPIO_InitTypeDef GPIO_InitStruct;
- /* Peripheral clock enable */
- __TIM3_CLK_ENABLE();
- GPIO_InitStruct.Pin = GPIO_PIN_4;
- GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- GPIO_InitStruct.Speed = GPIO_SPEED_LOW;
- GPIO_InitStruct.Alternate = GPIO_AF2_TIM3;
- HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
- m_handleTim3.Instance = TIM3;
- m_handleTim3.Init.Prescaler = 0;
- m_handleTim3.Init.CounterMode = TIM_COUNTERMODE_UP;
- m_handleTim3.Init.Period = 0;
- m_handleTim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
- HAL_TIM_Base_Init(&m_handleTim3);
- HAL_TIM_PWM_Init(&m_handleTim3);
- sConfigOC.OCMode = TIM_OCMODE_PWM1;
- sConfigOC.Pulse = 0xFFFF;
- sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
- sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
- HAL_TIM_PWM_ConfigChannel(&m_handleTim3, &sConfigOC, TIM_CHANNEL_1);
- sSlaveConfig.SlaveMode = TIM_SLAVEMODE_EXTERNAL1;
- sSlaveConfig.InputTrigger = TIM_TS_ITR0;
- HAL_TIM_SlaveConfigSynchronization(&m_handleTim3, &sSlaveConfig);
- sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
- sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
- HAL_TIMEx_MasterConfigSynchronization(&m_handleTim3, &sMasterConfig);
- TIM3->PSC = 399;
- TIM3->ARR = 49;
- TIM3->CCR1 = 0xFFFF;
- TIM3->CR1 |= 0x0080;
- TIM3->EGR |= TIM_EGR_UG;
- TIM3->CCER |= 0x0001;
- TIM3->SR = 0;
- TIM3->DIER |= 0x0001;
- TIM3->CR1 |= 0x0001; /* TIM3 Count Start */
- }
上面的代码有什么遗漏吗?