新手入门
- 积分
- 11
- 金钱
- 11
- 注册时间
- 2022-9-27
- 在线时间
- 2 小时
|
各位大佬能帮忙看看这个程序,用定时器翻转模式输出,能进中断,电平无法翻转,是哪里有问题吗??TIM_HandleTypeDef Time3_ConfigurationStruct;
TIM_OC_InitTypeDef Time3_CHXHandleStruct;
uint16_t Pluse;
__IO uint16_t Pluse_Count;
void HAL_TIM_OC_MspInit(TIM_HandleTypeDef *htim)
{
GPIO_InitTypeDef GPIO_Initure;
if(htim->Instance==TIM3)
{
__HAL_RCC_TIM3_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE();
GPIO_Initure.Pin=Up_SMD_PWM_Ctr_Pin;
GPIO_Initure.Pull=GPIO_NOPULL;
GPIO_Initure.Speed=GPIO_SPEED_FREQ_HIGH;
GPIO_Initure.Mode=GPIO_MODE_AF_PP;
GPIO_Initure.Alternate = GPIO_AF1_TIM3;
HAL_GPIO_Init(Up_SMD_PWM_Ctr_GPIO_Port,&GPIO_Initure);
HAL_NVIC_SetPriority(TIM3_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(TIM3_IRQn);
}
}
void Motor_Configuration()
{
Time3_ConfigurationStruct.Instance=TIM3;
Time3_ConfigurationStruct.Init.Period=1000;
Time3_ConfigurationStruct.Init.Prescaler=47;
Time3_ConfigurationStruct.Init.RepetitionCounter=0;
Time3_ConfigurationStruct.Init.CounterMode=TIM_COUNTERMODE_UP;
Time3_ConfigurationStruct.Init.ClockDivision=TIM_CLOCKDIVISION_DIV1;
Time3_ConfigurationStruct.Init.AutoReloadPreload=TIM_AUTORELOAD_PRELOAD_DISABLE;
HAL_TIM_OC_Init(&Time3_ConfigurationStruct);
Time3_CHXHandleStruct.Pulse=Pluse;
Time3_CHXHandleStruct.OCMode=TIM_OCMODE_TOGGLE;
Time3_CHXHandleStruct.OCFastMode=TIM_OCFAST_DISABLE;
Time3_CHXHandleStruct.OCPolarity=TIM_OCPOLARITY_HIGH;
Time3_CHXHandleStruct.OCNPolarity=TIM_OCNPOLARITY_LOW;
Time3_CHXHandleStruct.OCIdleState=TIM_OCIDLESTATE_RESET;
Time3_CHXHandleStruct.OCNIdleState=TIM_OCNIDLESTATE_RESET;
HAL_TIM_OC_ConfigChannel(&Time3_ConfigurationStruct,&Time3_CHXHandleStruct,TIM_CHANNEL_1);
// __HAL_TIM_DISABLE_OCxPRELOAD(&Time3_ConfigurationStruct,TIM_CHANNEL_1);
}
void TIM3_IRQHandler()
{
HAL_TIM_IRQHandler(&Time3_ConfigurationStruct);
}
void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef *htim)
{
Pluse_Count=__HAL_TIM_GET_COUNTER(&Time3_ConfigurationStruct);
if(htim->Channel==HAL_TIM_ACTIVE_CHANNEL_1)
__HAL_TIM_SET_COMPARE(&Time3_ConfigurationStruct,TIM_CHANNEL_1,Pluse_Count+Pluse);
}
int main(void)
{
HAL_Init();
SystemClock_Config();
Device_Configuration();
Flash_Configuration();
Pluse=500;
Motor_Configuration();
HAL_TIM_Base_Start(&Time3_ConfigurationStruct);
HAL_TIM_OC_Start_IT(&Time3_ConfigurationStruct,TIM_CHANNEL_1);
while (1)
{
}
}
|
|